2016-06-23 17 views
1

ユーザーがMagentoで複数回支払いを送信しないようにする方法を知りたいと思います。支払いモジュールで複数の提出を防ぐ方法は?

支払いが失敗すると問題が始まり、ユーザーは戻って(ブラウザの戻るボタン)、何度もやり直すことができます。

if($response == 3 || $responsecode == 300){ 
    $this->cancelAction(); 
    Mage::getSingleton('core/session')->addError("Invalid payment ".$responsetext.". Try again."); 
    Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure'=>true)); 
    return $this; 
} 
+0

これは標準的なマゼンタの1ページチェックアウトですか?どの段階で失敗していますか(つまり、最終注文の提出段階、支払い後の最終注文)ですか?失敗した場合にユーザーが再試行できるようにしたいのはなぜですか?迷惑なユーザーエクスペリエンスを使用してすべての製品を再度追加する...本当にこの機能が必要な場合は、以下の回答で失敗した場合にカートを空にするだけです。 – Ashley

+0

はい、標準です。主な理由は、一部のユーザーが不正行為を試みていることです。たとえば、支払いの失敗画面が表示された場合は、クレジットカード番号の番号を変更して再試行します。彼らは同じ順序でプロセスを繰り返す。 – stu

答えて

0

ユーザーカートを空にすると、商品をもう一度追加する必要があります。

Mage::getSingleton('checkout/cart')->truncate()->save(); 

カートのページにリダイレクトしてエラーが表示されている場合は、もう一度チェックアウトプロセス全体を実行する必要があります。

Mage_Core_Controller_Varien_Action::_redirect('checkout/cart', array('_secure'=>true));