Authorize.net Direct Post を支払い方法として使用するサイトを構築していますが、注文が正常に完了した後、カートが非アクティブ化されないという問題が発生しています。Mage_Authorizenet_Model_Directpost では、注文承認ステップの一環として、574 行で見積もりが無効化されていることを確認できました。
Mage::getModel('sales/quote')
->load($order->getQuoteId())
->setIsActive(false)
->save();
ただし、directpost.js では、Authorize.net が IFrame をロードし、returnQuote 関数が呼び出されると、_returnCustomerQuote 関数を呼び出す Mage_Authorizenet_Directpost_PaymentController の returnQuoteAction にリダイレクトされます。
if ($order->getId()) {
$quote = Mage::getModel('sales/quote')
->load($order->getQuoteId());
if ($quote->getId()) {
$quote->setIsActive(1)
->setReservedOrderId(NULL)
->save();
$this->_getCheckout()->replaceQuote($quote);
}
$this->_getDirectPostSession()->removeCheckoutOrderIncrementId($incrementId);
$this->_getDirectPostSession()->unsetData('quote_id');
if ($cancelOrder) {
$order->registerCancellation($errorMsg)->save();
}
}
見積が再び有効に設定されていることに注意してください。注文がキャンセルされない限り、なぜ彼らがこれを行うのかわかりません。ここのロジックに何かが欠けているのではないかと考えています。ワンページ チェックアウトのカスタマイズと、実際の注文送信のカスタマイズを行いましたが、これに影響するものは見当たりません。Magento は、コール チェーンの後半で見積もりが無効になることを期待していますか? Authorize.net Direct Post がローカルに応答を中継しないため、コードをステップ実行できないため、これをデバッグするのは困難です。
提供できるヘルプをありがとう。