インスタント支払通知メッセージのハンドリング

概要

Amazonはいくつかの非同期の処理での支払リクエストを行います。Amazonがリクエストを処理した後で、Amazon Payオブジェクトに対応するステータスは更新されます。APIを利用して定期的にこのステータスをチェックするかもしれませんが、インスタント支払通知(IPN)メッセージを受け取ることで対応することができます。

IPNメッセージは要求することなしにAmazon Payから送信され、内部の注文管理システムで更新したり、注文を処理することができます。

次の条件でIPNは発生し、IPNメッセージの結果を待つ必要があります。

  • 非同期のオーソリ(Authorize)API呼び出しを実行した場合
  • Pending の売上請求(Capture)レスポンスが返ってきた場合
  • 返金(Refund)API呼び出しを実行した場合
  • 銀行またはクレジットカード会社からチャージバックの通知が来た場合

ほとんどの変更通知はオブジェクトの状態変更です。しかしながら、その他の変更通知もIPN発信されます。例えば、顧客が配送先住所を更新した場合やAmazonが支払方法を失敗にした場合です。

Amazon Payオブジェクトの状態遷移についての詳しい情報は、Amazon Pay APIリファレンスの状態と理由コードセクションを参照してください。

受信IPNメッセージの設定

IPNメッセージは、中身がXMLベースの通知データを含むHTTPS POST リクエストです。IPNメッセージを受信する前に次のことを実行してください。

  1. セラーセントラルにエンドポイントを設定
    1. エンドポイントを設定するためには、セラーセントラルにログインして、設定ドロップダウンから インテグレーションを選択します。
    2. インスタント通知設定編集 ボタンをクリックして、インスタント通知を受信したいエンドポイントを 販売事業者様サイト URL に入力します。本番環境ではHTTPSである必要がありますが、SANDBOX環境のHTTPはHTTPSの代理として許可されています。しかしながら、HTTPSのエンドポイントを指定できるのであれば、証明書は正確であり、完全な証明書である必要があります。
    3. 同じイベントで発生したIPNを2つ目のエンドポイントで受信したい場合は、システムパートナー様 URLに指定することができます。
  2. エンドポイントとSSL証明書が正しく動作しているのか確認します。
  3. Webサービスが動作しているか、エンドポイントがHTTPS POSTリクエストを受信できるか、通知を処理できるのか確認します。.htaccessのユーザーログインルールなどのアクセス制御している場合は除外します。
  4. HTTPSが信頼されれた証明書提供会社からの正しいSSL証明書を利用しているか確認します。詳しい情報はTLS/SSL証明書を参照してください。

セキュアIPNの処理

なりすまし攻撃を防御するには、メッセージの確実性を確認するためのIPN署名を確実にしなければなりません。詳しい情報は、Amazon SNSメッセージの署名を確認を参照してください。

この確証にAmazon SDKを利用している場合は処理できます。利用しない場合は、SDKでインプリメントされているのと同じ方法で、Amazon SNSメッセージの署名を確認の中で説明している同じステップで行う必要があります。