私がこの質問をしているとは信じられませんが、ここに行きます....
(Codeigniter 内で PHP を使用)
Barclays EPDQ を e コマース サイトに統合して、クレジット カードでの支払いを受け付けています。支払いが成功すると、EPDQ は URL にクエリ文字列パラメータを渡してサイトにリダイレクトします。EPDQ から返送された orderID を探しています。ある場合は、PHP セッションにいくつかの情報を保存し、支払い確認ページにリダイレクトします。支払いが失敗した場合、注文 ID は存在しないため、CI ビュー ファイルを表示する支払い失敗メソッドにリダイレクトします。
このチェックおよびセッション保存ルーチンの条件は次のとおりです。
$success = false;
if($_GET['orderID'])
{
$_SESSION['payment']['order_id'] = $_GET['orderID'];
$_SESSION['payment']['method'] = 'card';
$_SESSION['payment']['ref'] = $_GET['PAYID'];
$_SESSION['payment']['status'] = 'Completed';
$success = true;
}
(セッションが初期化され、このコードが実行される前に支払い配列が作成されることに注意してください)
ここまではかなり単純です。ルート案内のコードは次のようになります。
if(!$success)
{
redirect('payment/card/fail');
}
else
{
redirect('payment/confirmation');
}
私が抱えている問題は、このリダイレクトが期待どおりに機能しないことです。EPDQ は支払いの成功を報告し、必要に応じて当社のサイトにリダイレクトします。ただし、スクリプトが送信する GET パラメーターを評価してリダイレクトを実行するときは、常に失敗したリダイレクトを使用します.........これが本当に私を困惑させているビットです。これ:
if(!$success)
{
exit('Failed');
redirect('payment/card/fail');
}
else
{
redirect('payment/confirmation');
}
(追加された「出口」に注意してください)。
この exit を含めると、コードはすべてのテスト ケースで必要に応じて実行され、支払い成功ページが表示されるようになります。exit を削除すると、すぐに 100% テストの失敗に戻ります。
これまで見たことがないので、なぜこれが起こっているのか、誰にもわかりませんか?