0
Magento-1.xのワンクリックチェックアウトを実装しようとしましたが、私のチェックアウトを使用すると、購入後に出荷方法が選択されていないという問題があります。Magentoワンクリックチェックアウト
ここに私のチェックアウトコントローラのコードがあります。
<?php
class MCP_Debitapi_CheckoutController extends Mage_Core_Controller_Front_Action
{
public function oneClickAction()
{
/**
* @var Mage_Catalog_Model_Product $product
*/
$options = [];
$product = Mage::getModel('catalog/product')->load((int)$_POST['product']);
/**
* create a cart to work with
* @var Mage_Checkout_Model_Cart $cart
*/
$cart = Mage::getModel('checkout/cart');
$cart->addProduct($product,$options);
$cart->save();
/**
* @var Mage_Checkout_Model_Type_Onepage $checkout
*/
$checkout = Mage::getSingleton('checkout/type_onepage');
$checkout->getQuote()->clearInstance();
$checkout->initCheckout();
/**
* @var Mage_Customer_Helper_Data $customerHelper
*/
$customerHelper = Mage::helper('customer');
$billingAddress = $customerHelper->getCustomer()->getDefaultBillingAddress();
$shippingAddress = $customerHelper->getCustomer()->getDefaultShippingAddress();
if(!$billingAddress) {
Mage::throwException('cannot create one-click order without default billing address');
return false;
}
$checkout->getQuote()->getBillingAddress()->importCustomerAddress($billingAddress)->setSaveInAddressBook(false);
$checkout->getQuote()->getShippingAddress()->importCustomerAddress($shippingAddress)->setSaveInAddressBook(false);
$checkout->getQuote()->getShippingAddress()->setShippingDescription('Fixed')->save();
$checkout->getQuote()->getShippingAddress()->setCollectShippingRates(true);
$checkout->saveShippingMethod('flatrate_flatrate');
$checkout->savePayment(array('method'=>'mcpdebitapi'));
$checkout->getQuote()->collectTotals();
$checkout->saveOrder();
$cart->truncate();
$cart->save();
$cart->getItems()->clear()->save();
$checkout->getQuote()->setIsActive(false)->save();
$this->_redirect('checkout/onepage/success',array('_secure'=>true));
}
}
正しい配送方法を見つけて設定するにはどうすればよいですか?
こんにちは、私はそれをしようと試みたが、同じ結果を得ました。私はより良い理解のために例外を追加します: –