SANDBOX環境でのインテグレーションテスト | Amazon Pay Japan

SANDBOX環境でのインテグレーションテスト

Amazon Payのテスト環境は、本番環境で実行する前に、Amazon Payのインテグレーションを徹底的にテストすることが可能です。SANDBOXモードで実装をテストする時は、Webサイト上のAmazon Payウィジェットを経由して購入者エクスペリエンスをシミュレーションできます。

SANDBOXモードでは、AmazonへのAPI処理の呼び出しが正しく設定され、注文全体をトラックする必要があるレスポンスに全てのAmazon Payパラメータが含まれているか確実にするためのテストができます。開発環境は購入エクスペリエンス中のいろいろな障害イベントを管理するために、購入者エクスペリエンスの様々なエラー状態をシミュレーションできます。例えば、支払失敗やタイムアウトのシミュレーションができます。

テスト購入者アカウント

Amazonのセラーセントラルでは、インテグレーションのテストを支援するために、いくつかの購入者アカウントの設定を推奨します。これらのテストアカウントは多くのユースケースに合うように変更できます。例えば、販売事業者の運用ルールに違反するかもしれない追加の配送先住所を含めることができます。これらのアカウントをセラーセントラルのインテグレーションリンクのテストアカウントから設定できます。

セラーセントラルを通してカスタマイズは可能であるととも、Amazonは複数のテスト購入者アカウントに適合した多くのテストシナリオを奨励します。

SANDBOXと本番環境の違い

Amazon Payで利用される様々なオブジェクトは、生成された後のオブジェクトの有効期限に達したなどのビジネスルールに合わせて処理します。Amazon Pay内で容易にテストを支援するために、次のビジネスルールは調整されます。

オブジェクト 本番環境ビジネスルール SANDBOX ビジネスルール
Open状態のオーソリオブジェクト 30 日で Closed に遷移します。 2 日でClosed に遷移します。

SANDBOXシミュレーション

Amazon PayのSANDBOXは特定の支払テストシナリオをシミュレーションすることができます。これらのシミュレーションはレスポンスを生成することを許可し、販売事業者の運用ルールをテストするために利用できます。次の表はレスポンスと状態遷移をシミュレーションできる方法を説明します。状態と理由コードについての詳しい情報は、Amazon Pay APIリファレンスガイドのイントロダクションセクションを参照してください。

注意:状態と理由コードは、シミュレーション文字列と一緒に利用することができます。望ましい状態理由コードをAmazon PayのAPI処理の呼び出しで明示しなければなりません。無効な組み合わせはInvalidSandboxSimulationSpecifiedエラーの結果が返ります。

オブジェクト状態と理由コードのシミュレーション

Billing Agreement オブジェクト
状態 理由コード シミュレーション文字列 SANDBOX でのシミュレーション方法
Draft -- N/A SANDBOXAmazonアカウントでお支払いボタンをクリックし、テスト購入者アカウント認証でサインインします。この生成でBilling AgreementオブジェクトはDraft状態になります。
Open -- N/A ConfirmBillingAgreement処理を呼び出してDraftのBilling Agreementオブジェクトを承認します。
Suspended InvalidPaymentMethod N/A 理由コードにInvalidPaymentMethod利用してオーソリオブジェクトをDeclinedに遷移した後にBilling AgreementオブジェクトはSuspended状態に遷移します。
Canceled Stale N/A 生成されてから3時間以内のDraftのBilling Agreementオブジェクトを承認してはいけません。

Billing Agreementオブジェクトは、それからStale状態になります。
AmazonCanceled N/A シミュレーションできません。
Closed AmazonClosed {"SandboxSimulation": {"State":"Closed", "ReasonCode":"AmazonClosed"}} OpenのBilling Agreementに対してCloseBillingAgreement処理のClosureReasonリクエストパラメータにこの値を指定します。
SellerClosed N/A シミュレーション文字列にAmazonClosedの理由コードを指定せずにCloseBillingAgreement処理を呼び出すことでOpenのBilling AgreementオブジェクトをCloseにします。
オーソリオブジェクト
状態 理由コード シミュレーション文字列 SANDBOX でのシミュレーション方法
Pending -- N/A 非同期モードでAuthorizeOnBillingAgreement処理を呼び出し、オーソリをリクエストします。

全てのオーソリオブジェクトはAuthorizeOnBillingAgreementリクエストを行った後、30秒間はPending状態です。これは同期モードでシミュレーションできません。
Open -- N/A AuthorizeOnBillingAgreement処理を呼び出し、オーソリをリクエストします。非同期モードでは、オーソリオブジェクトはPending状態で30秒経った後にOpen状態へ遷移します。同期モードでは、オーソリオブジェクトは速やかにOpen状態に遷移します。
Declined InvalidPaymentMethod {"SandboxSimulation": {"State":"Declined", "ReasonCode":"InvalidPaymentMethod", "PaymentMethodUpdateTimeInMins":5}} AuthorizeOnBillingAgreement処理のSellerAuthorizationNoteリクエストパラメータにこの値を指定します。

Order ReferenceはOpen状態からSuspended状態に遷移します。Billing AgreementオブジェクトがSuspended状態からOpen状態に戻った時に、PaymentMethod UpdateTimeInMinsパラメータに時刻(1〜240分の間)を指定して利用できます。このシミュレーションは購入者が無効な支払方法を更新し、Billing AgreementオブジェクトをOpen状態に戻します。
AmazonRejected {"SandboxSimulation": {"State":"Declined", "ReasonCode":"AmazonRejected"}} AuthorizeOnBillingAgreement処理のSellerAuthorizationNoteリクエストパラメータにこの値を指定します。
ProcessingFailure N/A シミュレーションできません。
TransactionTimedOut {"SandboxSimulation": {"State":"Declined", "ReasonCode":"TransactionTimedOut"}} AuthorizeOnBillingAgreement処理のSellerAuthorizationNoteリクエストパラメータにこの値を指定します。
Closed ExpiredUnused {"SandboxSimulation": {"State":"Closed", "ReasonCode":"ExpiredUnused", "ExpirationTimeInMins":1}} AuthorizeOnBillingAgreement処理のSellerAuthorizationNoteリクエストパラメータにこの値を指定します。オーソリオブジェクトをClosedにしなければならない時間(1〜60分の間)を指定するためにExpirationTimeInMinsパラメータを利用できます。
MaxCapturesProcessed N/A Capture処理を呼び出しOpenのオーソリオブジェクトを売上請求(Capture)します。
AmazonClosed {"SandboxSimulation": {"State":"Closed", "ReasonCode":"AmazonClosed"}} AuthorizeOnBillingAgreement処理のSellerAuthorizationNoteリクエストパラメータにこの値を指定します。
SellerClosed N/A CloseAuthorization処理を呼び出しOpenのオーソリをClosedにします。
売上請求オブジェクト
状態 理由コード シミュレーション文字列 SANDBOX でのシミュレーション方法
Pending -- {"SandboxSimulation": {"State":"Pending"}} 売上請求(Capture)処理のSellerCaptureNoteリクエストパラメータにこの値を指定します。売上請求オブジェクトはそれから30秒間はPending状態で残ります。
Declined AmazonRejected {"SandboxSimulation": {"State":"Declined", "ReasonCode":"AmazonRejected"}} 売上請求(Capture)処理のSellerCaptureNoteリクエストパラメータにこの値を指定します。
ProcessingFailure N/A シミュレーションできません。
Completed -- N/A 売上請求(Capture)処理を呼び出しOpenのオーソリに対して資金を売上請求(Capture)します。
Closed MaxAmountRefunded N/A 返金(Refund)処理を呼び出し売上請求(Capture)された金額の15%か8,400円のどちらか低い額まで加算した返金(Refund)を行います。
MaxRefundsProcessed N/A 返金(Refund)処理を対応するCompletedの売上請求オブジェクトに対して呼び出しを10回発行します。
AmazonClosed {"SandboxSimulation": {"State":"Closed", "ReasonCode":"AmazonClosed"}} 売上請求(Capture)処理のSellerCaptureNoteリクエストパラメータにこの値を指定します。
返金オブジェクト
状態 理由コード シミュレーション文字列 SANDBOX でのシミュレーション方法
Pending -- N/A 返金(Refund)処理を呼び出し、返金(Refund)をリクエストします。全ての返金オブジェクトは返金(Refund)リクエストが提示してから30秒間はPending状態になります。
Declined AmazonRejected {"SandboxSimulation": {"State":"Declined", "ReasonCode":"AmazonRejected"}} 返金(Refund)処理のSellerRefundNoteリクエストパラメータにこの値を指定します。
ProcessingFailure N/A シミュレーションできません。
Completed -- N/A 返金(Refund)処理を呼び出しCompletedの売上請求オブジェクトに対して資金の返金(Refund)を行います。

ValidationResultのシミュレーションとValidateBillingAgreement処理の理由コード

ValidateBillingAgreement処理
ValidationResult 理由コード シミュレーション文字列 SANDBOX でのシミュレーション方法
Success N/A N/A SANDBOXでOpenのBilling AgreementへValidateBillingAgreementリクエストを提示します。
Failure InvalidPaymentMethod {"SandboxSimulation": {"Operation":"ValidateBillingAgreement", "ReasonCode":"InvalidPaymentMethod", "PaymentMethodUpdateTimeInMins":5}} SetBillingAgreeementDetails処理のSellerNoteリクエストパラメータにこの値を指定します。一度、ValidateBillingAgreeementリクエストを提示すると、Billing AgreementはOpen状態からSuspended状態に遷移します。PaymentMethodUpdateTimeInMinsパラメータに時刻(1〜240分の間)を指定して利用でき、その後、Billing AgreementオブジェクトはSuspended状態からOpen状態へ戻ります。このシミュレーションは購入者が無効な支払方法を更新し、Billing AgreementオブジェクトをOpen状態に戻します。
ValidationTimedOut {"SandboxSimulation": {"Operation":"ValidateBillingAgreement","ReasonCode":"ValidationTimedOut", "State":"Declined"}} SetBillingAgreeementDetails処理のSellerNoteリクエストパラメータにこの値を指定します。

次のサンプルは、SellerAuthorizationNoteリクエストパラメータを利用して、InvalidPaymentMethod理由コードを使いオーソリをDeclined状態にシミュレーションする方法を説明します。

 
https://mws.amazonservices.com/OffAmazonPayments_Sandbox/2013-01-01  
?AWSAccessKeyId=AKIAFBM3LG5JEEXAMPLE  
&Action=AuthorizeOnBillingAgreement  
&AmazonBillingAgreementId=C12-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=  
    %7B%22SandboxSimulation%22%3A%7B%22State%22%3A%22Declined%22%2C  
    %22ReasonCode%22%3A%22InvalidPaymentMethod%22%7D%7D  
&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