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/webscr
fromのコードを変更することも忘れないでくださいpaypal.com/cgi-bin/webscr
。そうしないと、これは失敗します。
チェック5:テスト、テスト、そしてまたテスト
Paypal の「テスト IPN メッセージを送信」を使用して、IPN handler
徹底的にテストします。そして、もう一度テストします。