「Firecheckout」と呼ばれる Templates Master によるカスタム チェックアウト拡張機能を使用します。それが関連しているかどうかはわかりませんが、言及する必要があると考えました。「配送方法を指定してください」という理由で、取引に失敗したというメールをたまに見かけます。これがどのように発生するかを追跡するのに長い時間を費やしましたが、道に迷っています。問題を再現するために考えられることはすべて試しました。私が行うことの組み合わせ (カートからのアイテムの追加/削除、配送オプションを変更するクーポン コードの追加/削除、モバイル サイトとデスクトップ サイトの切り替えなど) に応じて、チェックアウト ページが配送方法のオプションが選択されていません。ただし、注文を送信しようとすると、配送方法セクションに「」という赤いメッセージがすぐに表示されます。
コードを検索すると、 _validateメソッドのTM_FireCheckout_Model_Service_Quote ( Mage_Sales_Model_Service_Quoteを拡張) クラスでエラー メールがトリガーされていることがわかりました。
$method= $address->getShippingMethod();
$rate = $address->getShippingRateByCode($method);
if (!$this->getQuote()->isVirtual() && (!$method || !$rate)) {
Mage::throwException($helper->__('Please specify a shipping method.'));
}
この場合、$methodまたは$rateのいずれかが null または false であると思いますが、なぜ/どのように考えられるのでしょうか? これが起こらないようにするために私にできることはありますか?FireCheckout の_validateメソッドと親クラスの_validateメソッドの唯一の違いは、どのフィールドが必須と見なされるかです。住所オブジェクトは一切変更されないため、その後のgetShippingMethodおよびgetShippingRateByCodeの呼び出しは、デフォルトのインストールと同じになります。
必要に応じて追加の詳細を提供できます。私は基本的に、そのエラーを引き起こす可能性のあるものと、それを再現する方法を理解しようとしています。これにより、最終的に、最初にエラーを引き起こしている穴にパッチを当てることができます.
ありがとう!