magento 1.9.3.7
<?php //https://magento.stackexchange.com/questions/223220/creating-order-programatically-showing-wrong-grand-total error_reporting(E_ALL); require 'app/Mage.php'; Mage::init(); Mage::app('default'); $storeId = Mage::app()->getStore()->getId(); $Quote = Mage::getModel('sales/quote')->setStoreId($storeId); $Customer = Mage::getModel('customer/customer')->load(410); // insert customer ID $_product = Mage::getModel('catalog/product')->load(168789); // Assign Customer To Sales Order Quote $Quote->assignCustomer($Customer); $address = $Customer->getDefaultBillingAddress(); $Quote->getBillingAddress()->importCustomerAddress($address); $Quote->getShippingAddress()->importCustomerAddress($address); $Quote->setSendCconfirmation(0); // Loop to add order. $Item contains the Sku, Qty, Price try { $Quote->addProduct($_product, new Varien_Object(array('qty' => 1))); $Quote->save(); $QuoteItem = $Quote->getItemByProduct($_product); $QuoteItem->setOriginalCustomPrice(49); $QuoteItem->setCustomPrice(49); $QuoteItem->setIsSuperMode(true); $QuoteItem->save(); } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "<br>"; print "Product ID: " . $_product->getId() . "<br>\n"; print "Product Sku: " . $_product->getSku() . " - " . $_product->getName() . "<hr>\n"; } //saving order try { $Quote->collectTotals()->save(); $Quote->getShippingAddress() ->setCollectShippingRates(true) ->collectShippingRates() ->setShippingMethod('flatrate_flatrate'); $Quote->getPayment()->setMethod('paypal_express'); // Create Order From Quote $service = Mage::getModel('sales/service_quote', $Quote); $service->submitAll(); $increment_id = $service->getOrder()->getRealOrderId(); } catch (Exception $e) { echo $e->getTraceAsString(); } catch (Mage_Core_Exception $e) { echo $e->getMessage(); } ?>
any idea what I do wrong?
exception.log shows this:
Exception: PayPal response hasn't required fields.
now, what field am I missing?
my goal is:
I'm having 15000 orders created in cubecart, that I want imported. Most orders are complete, but nice to have for historic data. About 100 orders are pending....
As a worse case we can maybe use the old system to process old orders.