0

カスタム ショッピング カートをセットアップしましたが、データベース内の「顧客が作成した注文」を、注文が完了したときに Paypal が送信する「IPN POST」にどのように接続するのか疑問に思っています。

電子メール アドレスを尋ねて、2 つを比較することができます。しかし、それらは同じではないかもしれません。そして、を扱うときに最低限どのようなチェックを実行する必要がありIPN handlerますか?

*この情報の多くが複数の質問に分散していることがわかりました。これにより、他の人が多くの時間を節約できることを願っています。

4

1 に答える 1

1

custom注文が完了すると IPN に戻される注文とともに、HTML に非表示の変数を渡すことができます。


「Website Payments Standards」の注文段階でこれを行う方法:

<input type="hidden" name="custom" value="UNIQUEVALUE">

UNIQUEVALUE は、注文を識別するためにデータベースに保存される一意の識別子です。


支払い完了段階で:

これは POST 変数として IPN に渡されますcustom

https://www.x.com/developers/paypal/documentation-tools/ipn/integration-guide/IPNReference#id091EAB0105Z *このカスタム変数の最大長は 255 文字です。


ライブに移行する前に、少なくとも次のチェックを行う必要があります。

チェック 1: 注文が存在することを確認する
チェック 2: 注文が重複していないことを確認する
チェック 3: 正しい金額が支払われていることを確認する
チェック 4: サンドボックス/偽の注文でテストする
チェック 5: テスト、テスト、および再度テストする


チェック 1: チェック オーダーの存在

次に、ハンドラー/リスナー IPN で、この UNIQUEVALUE をデータベースに照会し、見つからない場合は、これが発生したことを自分自身に電子メールで送信する必要があります。


チェック 2: 注文が重複していないことを確認します

「txn_id」を支払いの状態とともにデータベースに保存する必要があります。注文が完了している場合、これはtxn_idが重複していることを意味し、そのように処理する必要があります。

*注意: 支払いの状態を確認してください。これは、注文が完了した場合txn_type = web_acceptに保留中などになる可能性があります。payment_status = Completedこれが、注文のステータスを保存する必要がある理由です。今保留中の注文を取得し、後で完全な注文を取得できるためです。これらは両方とも同じになりtxn_idます。

ステータスの完全なリストはこちらにあります: https://www.x.com/developers/paypal/documentation-tools/ipn/integration-guide/IPNReference#id091EB04C0HS

怠惰な人のために、これらは次のようになります: Canceled_Reversal / Completed / Created / Denied / Expired / Failed / Pending / Refunded / Reversed / Processed / Voided.


チェック 3: 適切な金額が支払われていることを確認する

あなたがしなければならないもう一つのチェックは、受け取った支払いと注文のコストが同じかどうかを確認することです. 「Web サイト ペイメント スタンダード」を使用すると、誰かが HTML コードを変更して、別の支払い金額を渡すことができます。


チェック 4: サンドボックス / 偽の注文でテストする

https://developer.paypal.com/を使用して「アプリケーション」に移動し、テスト IPN メッセージを IPN ハンドラーに送信します。IPN handlerまた、 to sandbox.paypal.com/cgi-bin/webscrfromのコードを変更することも忘れないでくださいpaypal.com/cgi-bin/webscr。そうしないと、これは失敗します。


チェック5:テスト、テスト、そしてまたテスト

Paypal の「テスト IPN メッセージを送信」を使用して、IPN handler徹底的にテストします。そして、もう一度テストします。

于 2013-03-15T10:00:12.687 に答える