私はMagento EnterpriseとDatacash 3D Secure支払いモジュールを使用しています。OnPageチェックアウトに戻るときにMagentoで見積もりを復元するには?
支払いプロセス中にエラーが発生した場合、ユーザーはバスケットをそのまま1ページのチェックアウトに戻すことを願っています。現在、ユーザーがチェックアウトに戻ると、バスケットは空になるので、項目がないため、「チェックアウト/カート」に転送されます。
私のコードでは問題があると思っていましたので、初期ペイメントアクションでエラーを直ちにリダイレクトしてonepageチェックアウトに戻しました。
public function redirectAction() {
Mage::getSingleton('core/session')->addError("There was a problem with the payment gateway. Please try again");
$session = Mage::getSingleton('checkout/session');
return $this->_redirect('checkout/onepage/', array('_secure'=>true));
}
ただし、チェックアウトページに戻ると、バスケットは空です。次のログをindexActionに追加すると、私は "見積もり"を取得します。引用は0
error_log("Quote ".Mage::getSingleton('checkout/session')->getQuoteId());
にそのアクティブ状態のセットを持っていたデータベースに見ると、私は唯一のエンタープライズと標準のMagentoので、この問題に出くわしていません。誰もがこの問題を遭遇していますか?理想的には、顧客がバスケットに商品を追加する必要はありません。そのようなMagentoエンタープライズモジュールのいくつかの並べ替えと矛盾します。
ありがとうございました!
トラブルがonepagecheckout上で行われる必要があることである、しかし、error_logには、そのされたセッションに対しては引用符を示しません。私はいつも新しいセッション変数を作成してそれを保存し、後でそれを参照することができますが、それは少しハッキリしているようです。理想的には、私は最初にそれをクリアしていることを止める必要があります。 – woot586
私は、Mage_Checkout_Model_Type_Onepageでは、オーダーの作成を開始するとすぐに、見積もりを非アクティブに設定しています。私の見積もりを私のコントローラの起動時にロードして、それをアクティブにするだけで、ユーザがチェックアウトに戻るときにバスケットがタック状態に保たれます。 3DSecure処理中にユーザーがヒットした場合も同様です。 – woot586
あなたはデフォルトのチェックアウトアクションをオーバーライドすることはできませんでした。そして、その先頭にこのロジックを行い、parent :: checkout();またはどのようなメソッドが呼び出されますか? – ajameswolf