1

サードパーティの支払いと同じように、テンプレート エンジンと Realex Payments を備えた PHP を使用しています。

したがって、HPP で 1 つの状況が発生します。

  • トランザクションが成功した後、クライアント ブラウザがネットワークから切断される
  • 支払いステータス情報を保存できません
  • したがって、ステータス情報は、支払われた後も特定の注文に対して未払いのままです

誰かがこれに対する解決策を提案できますか?

4

3 に答える 3

2

Realex Payments HPP は、これが起こらないように設計されています。

支払いが正常に完了すると、Realex サーバーはトランザクションの結果を含むメッセージを Web サイト サーバーに直接送信します。顧客のブラウザは関係ありません。トランザクションのステータスを常に把握できます。このメッセージは、Realex Payments 応答 URL に送信されます。

顧客がネットワークから切断された場合、2 つのシナリオがあります。

  1. 支払いを行う前に、ネットワークが切断されます。この場合、あなたのショッピング カートにはまだ支払っていない商品があります。顧客はカートに戻ってもう一度支払いを試みる必要があります。
  2. 彼らが支払いを行った後、ネットワークは切断されます。この場合、顧客は支払いが正常に完了したかどうかわかりませんが、あなたにはわかります。彼らはおそらく戻って再度支払いを試みますが、注文 ID が同じ場合は失敗します。彼らはおそらくあなたのサイトに戻ってショッピングカートを見るでしょう. 顧客アカウントをチェックして、完了した注文を確認できるようにする必要があります。

いずれの場合も、トランザクション後に Realex からメッセージを受け取ったら、顧客にメールを送信する必要があります。これはお客様にとって大きな安心感です。

また、顧客を HPP にリダイレクトする前に、必要なすべての情報を収集する必要があります。これは、ネットワークが失われ、顧客からそれ以上のデータを取得できなくなる可能性があるためです (顧客の住所や、注文)。

Realex がサイトに接続してメッセージを送信できないという 3 番目のシナリオがあります。数回再試行した後、オペレーション スタッフが直接ご連絡いたします。顧客には、詳細についてあなたに連絡するよう求める一般的なメッセージが表示されます。

于 2014-04-22T09:02:36.010 に答える
-1

トランザクション、コミット、およびロールバックを使用します。

「START TRANSACTION」は、COMMIT または ROLLBACK に入るまで、後続のすべての SQL を追跡します。

「COMMIT」は私たちのコードを永続的にします。

「ROLLBACK」は、「START TRANSACTION」を入力する前の時点まですべてを逆にします。

例えば

START TRANSACTION;
SELECT * FROM bank;
UPDATE bank SET amount = '25000' WHERE id ='23';
COMMIT;

ただし、TRANSACTION ログはすべての記録を保持し、ますます大きくなり、より多くのスペースを消費し、より多くの時間がかかるため、本当に必要な場合は TRANSACTION を使用してください。

于 2014-04-22T06:23:29.273 に答える