先ほど書いたコードを使用してプログラムで注文を作成しています。これは、送料無料の方法を使用するときに正しく機能します(つまりfreeshipping_freeshipping
)
しかし、私は今、配送方法(これはWebShopAppsによるモジュールからのもの)を使用して注文しようとしています。
$shipping_address->setCollectShippingRates(true)->collectShippingRates()
->setShippingMethod($delivery)
->setPaymentMethod($payment);
$delivery
配送方法コードはどこですか。注文するとエラーが発生する
a:5:{i:0;s:33:"Please specify a shipping method.";i:1;s:1554:"#0 /chroot/home/site/site/html/app/code/core/Mage/Sales/Model/Service/Quote.php(303): Mage::throwException('Please specify ...')
Quote.php
303行目でこのファイル()に移動する場合:
protected function _validate()
{
if (!$this->getQuote()->isVirtual()) {
$address = $this->getQuote()->getShippingAddress();
$addressValidation = $address->validate();
if ($addressValidation !== true) {
Mage::throwException(
Mage::helper('sales')->__('Please check shipping address information. %s', implode(' ', $addressValidation))
);
}
$method= $address->getShippingMethod();
$rate = $address->getShippingRateByCode($method);
if (!$this->getQuote()->isVirtual() && (!$method || !$rate)) {
Mage::throwException(Mage::helper('sales')->__('Please specify a shipping method.')); //this is line 303
}
}
....
これを試して解決するために、私はAdminhtmlを介して注文を作成し、Quote.php
テストのために変更するというルートをたどりました。
echo ($method . " and " . $rate);die();
次に、Magentoが期待しているメソッドとレート(これは空白)の空白ページが表示されますが、注文は引き続き正常に作成されます。Magentoが出力するメソッドも、$delivery
変数が設定した値とまったく同じです。
何が悪いのですか?