Created
May 24, 2012 12:56
-
-
Save brankoajzele/2781404 to your computer and use it in GitHub Desktop.
Programatically create Magento order with tablerate shipping
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
require_once 'app/Mage.php'; | |
Mage::app(); | |
$quote = Mage::getModel('sales/quote') | |
->setStoreId(Mage::app()->getStore('default')->getId()); | |
$product = Mage::getModel('catalog/product')->load(6); /* 6 => Some product ID */ | |
$buyInfo = array('qty' => 1); | |
$quote->addProduct($product, new Varien_Object($buyInfo)); | |
$billingAddress = array( | |
'firstname' => 'Branko', | |
'lastname' => 'Ajzele', | |
'company' => 'Inchoo', | |
'email' => '[email protected]', | |
'street' => array( | |
'Sample Street Line_1', | |
'Sample Street Line_2' | |
), | |
'city' => 'City', | |
'region_id' => '', | |
'region' => 'State/Province', | |
'postcode' => '12345', | |
'country_id' => 'NL', | |
'telephone' => '1234567890', | |
'fax' => '123456987', | |
'customer_password' => '', | |
'confirm_password' => '', | |
'save_in_address_book' => '0', | |
'use_for_shipping' => '1', | |
); | |
$quote->getBillingAddress() | |
->addData($billingAddress); | |
$quote->getShippingAddress() | |
->addData($billingAddress) | |
->setShippingMethod('tablerate_bestway') | |
->setPaymentMethod('checkmo') | |
->setCollectShippingRates(true) | |
->collectTotals(); | |
$quote->setCheckoutMethod('guest') | |
->setCustomerId(null) | |
->setCustomerEmail($quote->getBillingAddress()->getEmail()) | |
->setCustomerIsGuest(true) | |
->setCustomerGroupId(Mage_Customer_Model_Group::NOT_LOGGED_IN_ID); | |
$quote->getPayment()->importData( array('method' => 'checkmo')); | |
$quote->save(); | |
$service = Mage::getModel('sales/service_quote', $quote); | |
$service->submitAll(); | |
//$order = $service->getOrder(); |
Hi,
Not working for me. Facing error {"status":false,"data":"Please specify a shipping method.","msg":"Request unsuccessfull"} for table rate shipping method.
'; print_r($customer->getPrimaryBillingAddress()->getData()); // die; $customerQuote = Mage::getModel('sales/quote')->setStoreId(Mage::app()->getStore()->getId())->loadByCustomer($customerId); // Set Sales Order Billing Address $billstreet = $customer->getPrimaryBillingAddress()->getStreet(); $billingAddress = $customerQuote->getBillingAddress()->addData(array( 'customer_address_id' => $customer->getPrimaryBillingAddress()->getId(), 'prefix' => '', 'firstname' => $customer->getPrimaryBillingAddress()->getFirstname(), 'middlename' => '', 'lastname' =>$customer->getPrimaryBillingAddress()->getLastname(), 'suffix' => '', 'company' =>'', 'street' => array( '0' => $billstreet[0], '1' => '' ), 'city' => $customer->getPrimaryBillingAddress()->getCity(), 'country_id' => 'IN', 'region' => $customer->getPrimaryBillingAddress()->getRegion(), 'postcode' => $customer->getPrimaryBillingAddress()->getPostcode(), 'telephone' => $customer->getPrimaryBillingAddress()->getTelephone(), 'fax' => '', 'vat_id' => '', 'save_in_address_book' => 1 )); // Set Sales Order Shipping Address $Shippstreet = $customer->getPrimaryShippingAddress()->getStreet(); $shippingAddress = $customerQuote->getShippingAddress()->addData(array( 'customer_address_id' => $customer->getPrimaryShippingAddress()->getId(), 'prefix' => '', 'firstname' => $customer->getPrimaryShippingAddress()->getFirstname(), 'middlename' => '', 'lastname' =>$customer->getPrimaryShippingAddress()->getLastname(), 'suffix' => '', 'company' =>'', 'street' => array( '0' => $Shippstreet[0], '1' => '' ), 'city' => $customer->getPrimaryShippingAddress()->getCity(), 'country_id' => 'IN', 'region' => $customer->getPrimaryShippingAddress()->getRegion(), 'postcode' => $customer->getPrimaryShippingAddress()->getPostcode(), 'telephone' => $customer->getPrimaryShippingAddress()->getTelephone(), 'fax' => '', 'vat_id' => '', 'save_in_address_book' => 1 )); //$shipmethod='freeshipping_freeshipping'; $shipmethod= "tablerate_bestway"; $shippingAddress->setCollectShippingRates(true)->collectShippingRates() ->setShippingMethod($shipmethod) ->setPaymentMethod($paymethod); $customerQuote->getPayment()->importData(array('method' => $paymethod)); $customerQuote->collectTotals()->save(); $customerQuote->setReservedOrderId(NULL); $service = Mage::getModel('sales/service_quote', $customerQuote); $service->submitAll(); $order = $service->getOrder(); $iddd = $order->getIncrementId(); $order->save(); $customerQuote->setIsActive(0)->save(); $Data = array('order_id' => $order->getIncrementId(),'subtotal'=> $order->getSubtotal(),'grandtotal' => $order->getGrandTotal(), 'itmecount'=> count($order->getData()) ,'paymentmethod'=> $paymethod); echo json_encode(array("status" => true, "data" => $Data, "msg"=> "Request successfull")); if($paymethod =='cashondelivery'){ $order->sendNewOrderEmail(); } } catch (Exception $e) { echo json_encode(array("status" => false, "data" => $e->getMessage(), "msg"=> "Request unsuccessfull")); }
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This is tested code and it should work. Only in payment gateway, you need to confirm your credit card information receiving properly. Because of Merchant payment gateway and PayPal payment gateway credit card information receiving technic not same.
Debug here
` /**
* Fetch current customer's payment profiles and masked
* card number if available.
*/
public function getPaymentInfo( $customer_id=0 ) {
if( $this->_debug ) Mage::log('getPaymentInfo('.$customer_id.')', null, 'firstdata.log');