AuthorizeOnBillingAgreement処理の同期と非同期モード
AuthorizeOnBillingAgreement処理は次の2つの機能です。
- 非同期モード-- このモードでは、AuthorizeOnBillingAgreement処理は非同期レスポンス内のオーソリオブジェクトについて常にPendingステータスを返します。最終処理ステータス(OpenまたはDeclined)を得るためにインスタント支払通知(IPN)を確認しなければなりません。
- 同期モード-- このモードでは、AuthorizeOnBillingAgreement処理はオーソリオブジェクトのレスポンスで常にOpenかDeclinedステータスを返します。
AuthorizeOnBillingAgreement処理の処理方法の選択は、運用ルールと技術的な観点から判断します。
非同期モード
非同期モードの処理については、値を設定しない、または、0以外の値をAuthorizeOnBillingAgreement処理のTransactionTimeoutリクエストパラメータに設定することで選択できます。TransactionTimeoutリクエストパラメータの有効な値についての詳しい情報は、Amazon Pay APIリファレンスのAuthorizeを参照してください。
次のコードサンプルはAuthorizeOnBillingAgreement処理で非同期モードを有効にする方法を表しています。
https://mws.amazonservices.com/OffAmazonPayments_Sandbox/2013-01-01
?AWSAccessKeyId=AKIAJKYFSJU7PEXAMPLE
&Action=AuthorizeOnBillingAgreement
&AmazonBillingAgreementId=C01-1234567-1234567
&AuthorizationAmount.Amount=10
&AuthorizationAmount.CurrencyCode=USD
&AuthorizationReferenceId=test_authorize_1
&MWSAuthToken=amzn.mws.4ea38b7b-f563-7709-4bae-87aeaEXAMPLE
&SellerId=YOUR_SELLER_ID_HERE
&SellerAuthorizationNote=ForNovemberOrder
&SellerOrderAttributes.SellerOrderId=testSellerOrderId
&SellerOrderAttributes.StoreName=testStore
&SellerOrderAttributes.CustomInformation=ExampleInformation
&InheritShippingAddress=true
&SignatureMethod=HmacSHA256
&SignatureVersion=2
&Timestamp=2012-10-03T19%3A01%3A11Z
&TransactionTimeout=60
&Version=2013-01-01
&Signature=WlQ708aqyHXMkoUBk69Hjxj8qdh3aDcqpY71hVgEXAMPLE
非同期モードの処理では、AuthorizeOnBillingAgreementリクエストで生成されたオーソリオブジェクトのレスポンス内に、最初はPendingステータスを約2〜3秒以内で返されます。インスタント支払通知(IPN)を経由して最終の処理ステータス(OpenかDeclined)が約60秒以内に返ります。ごく稀に、Amazon Payが手動でトランザクションを調査した時に、最終の処理ステータスを指定したTransactionTimeout値まで、または、TransactionTimeout値が指定されていない場合の24時間までは受け取れないかもしれません。
運用ルールと技術的な観点から24時間までにトランザクションを保持可能な場合は、Amazonは非同期モードを推奨します。オーソリのステータスがDeclinedで返ってきた場合は、購入者にトランザクションが失敗したことの通知が必要になり、Amazon PayのWebサイトから支払方法の変更を彼らに要求し、代わりの支払方法を取得します。または、Declinedの理由コードよりトランザクションをキャンセルします。詳しい情報は「支払失敗のハンドリング」を参照してください。
このモードを選択することで、より多くのトランザクション調査の時間をAmazonに提供し通常は低いオーソリ失敗率の結果になります。
同期モード
TransactionTimeoutリクエストパラメータに0を設定することで、同期モードを選択できます。
次のコードサンプルはAuthorizeOnBillingAgreement処理で同期モードを有効にする方法を表しています。
https://mws.amazonservices.com/OffAmazonPayments_Sandbox/2013-01-01
?AWSAccessKeyId=AKIAJKYFSJU7PEXAMPLE
&Action=AuthorizeOnBillingAgreement
&AmazonBillingAgreementId=C01-1234567-1234567
&AuthorizationAmount.Amount=10
&AuthorizationAmount.CurrencyCode=USD
&AuthorizationReferenceId=test_authorize_1
&MWSAuthToken=amzn.mws.4ea38b7b-f563-7709-4bae-87aeaEXAMPLE
&SellerId=YOUR_SELLER_ID_HERE
&SellerAuthorizationNote=ForNovemberOrder
&SellerOrderAttributes.SellerOrderId=testSellerOrderId
&SellerOrderAttributes.StoreName=testStore
&SellerOrderAttributes.CustomInformation=ExampleInformation
&InheritShippingAddress=true
&SignatureMethod=HmacSHA256
&SignatureVersion=2
&Timestamp=2012-10-03T19%3A01%3A11Z
&TransactionTimeout=0
&Version=2013-01-01
&Signature=WlQ708aqyHXMkoUBk69Hjxj8qdh3aDcqpY71hVgEXAMPLE
同期モードの処理では、AuthorizeOnBillingAgreementリクエストのレスポンス内でのオーソリオブジェクトはOpenかDeclinedを約6〜8秒以内に返します。Amazon Payがオーソリ同期を処理することが出来ない場合は、処理はTransactionTimedOutの理由コードと同時にDeclined返します。
購入者がサイトに滞在している間にオーソリまたは売上請求支払を行いたいシナリオを持っている場合は、Amazon Payは同期モードを推奨します。例えば、デジタルダウンロードを提供したい場合、または、すぐの配送を保証している場合です。
このモードを選択することで、高いオーソリの失敗率でAmazon PayがいくつかのオーソリをPendingからDeclinedに遷移することをよく見るかもしれません。これらのオーソリ失敗はTransactionTimedOutの理由コードを確認することで判断できます。同期モードでは、購入者がサイトに滞在している間に失敗をハンドリングできます。詳しい情報は「支払失敗のハンドリング」を参照してください。