1

私は authorize.net 支払いシステムに取り組んでいます。私が直面している問題は次のとおりです。あるユーザーがトランザクションを 1 回完了し、リロード ページまたはリロード タブをクリックすると、お金が 2 回カットされます。

したがって、最初からトランザクションを実行するまで、このリロードとトランザクションを複数回回避したいと考えています。

また、これの最後の値を回避する方法に問題があります。

4

4 に答える 4

1

トランザクションにasp.netC#を使用している場合は、支払いを行った後も同じページに留まらないでください。これは良い習慣ではありません。サーバーから成功応答を受け取ったら、すぐに成功した支払いページにリダイレクトします。

成功の応答が得られなかったり、トランザクションが失敗した場合でも、ページにとどまらず、トランザクションの失敗について説明しているページにリダイレクトしてください。

また、トランザクションページにデータ(ビューステート)を保存したり、!IsPostBackブロックを必要とするようなコードを記述したりしないでください。

以下を含む、authorize.netで利用可能なさまざまなベストプラクティスをお読みください。

https://developer.authorize.net/integration/fifteenminutes/csharp

http://www.authorize.net/files/developerbestpractices.pdf

最高のコードを書いてください。

于 2012-05-28T07:10:06.303 に答える
1

簡単なトリックの 1 つは、ajax 呼び出しを使用することです。そのため、ページをリロードしても、支払い後に新しいステータスしか表示されません。

あなたがすることは、支払いの現在のステータスを表示するページがあります。ユーザーが支払うボタンをクリックすると、ajax呼び出しでリクエストが送信されます-同時に、ボタンは終了後にウェイメッセージを表示します支払いの新しい情報でページをリロードします。

一般に、トランザクションごとに一意の番号と、このトランザクションの状態フラグが必要です。トランザクションごとに 1 つのアクションのみを許可します。ユーザーがキーを押してすぐに支払いに移動すると、このトランザクションのステータスを変更し (ミューテックスを使用して、その時点でも二重送信を回避します)、その後、同じリクエスト (ページのリロード) を許可しません。

支払いの全プロセスは、停止して戻る (またはステップを繰り返す) ことができないステップで行われます。戻る必要がある場合は、新しい ID で新しいプロセスを作成し、最初からすべての手順を繰り返す必要があります。この方法は、PayPal、Amazon、Google によって行われます。

于 2012-05-28T08:01:02.063 に答える
1

古典的な解決策はそれです

  1. page1.aspx にデータを保存します
  2. データの保存に成功すると、page2.aspx に結果が表示されます ( Page2.aspx にリダイレクトされます)。

したがって、彼がリフレッシュしても、page2.aspx のリロードになり、トランザクションはコピーされません。

PS。ユーザーがボタンを 2 回クリックできないように、Page1.aspx onclientclick の保存ボタンを無効/非表示にすることができます。

于 2012-05-28T07:02:39.187 に答える
-2

一度だけ発生するように、コードを(!Page.IsPostback)ブロックに配置します。

于 2012-05-28T07:03:49.440 に答える