SANDBOXシミュレーションを使用する

本番環境で動作させる前に、SANDBOXのシミュレーションを使用してインテグレーションをテストしてください。SANDBOXの決済中に特定のテスト用の支払い方法を選択することにより、オーソリ失敗のフローと決済からの離脱 など、さまざまな決済シナリオをシミュレートできます。リクエストヘッダーにシミュレーション文字列を追加することで、意図的にさまざまなAPIレスポンスをトリガーすることもできます。

注:同じ決済中にテスト用の支払い方法とシミュレーション文字列の両方を使用する場合、シミュレーション文字列は、テスト用の支払い方法を使用してトリガーされた動作を上書きします。


テスト用の支払い方法の使用

SANDBOXの購入者アカウントには、テスト用の支払い方法が事前に構成されています。特定の支払いシナリオをシミュレートするには、SANDBOXの決済時に*でマークされた支払い方法を選択します。シミュレーションの前提条件が満たされていない場合、エラーが発生します。

カード番号
支払いシナリオ
前提条件
...1111
...0005
...4444
...9424
...0000
正常ケース。checkoutResultReturnUrlページで、次の状態となります:

paymentIntentがAuthorizeに設定されていた場合、ChargeはAuthorized状態になります。

paymentIntentがConfirmに設定されていた場合、ChargePermissionはChargeable状態になります。
-
...3064
購入者がcheckoutResultReturnUrlに戻った後、Checkout SessionはCanceled状態で 理由コードがBuyerCanceledとなります。
-
...3434
購入者がcheckoutResultReturnUrlに戻った後、Checkout SessionはCanceled状態で 理由コードがDeclinedとなります。
-
...0701
購入者がcheckoutResultReturnUrlに戻った後、ChargeはAuthorizeInitiated状態になります。paymentIntent次第では、30秒後にAuthorized状態になります。
Checkout SessionのpaymentIntentはAuthorize、canHandlePendingAuthorizationをtrueに設定しなければなりません。設定しない場合はエラーになります。

...4354
購入者がcheckoutResultReturnUrlに戻った時は、ChargeはAuthorizeInitiated状態になります。これは、30秒後にDeclined状態で理由コードはHardDeclinedとなります。
Checkout SessionのpaymentIntentはAuthorize、canHandlePendingAuthorizationをtrueに設定しなければなりません。設定しない場合はエラーになります。


シミュレーション文字列の使用

x-amz-pay-simulation-codeリクエストヘッダーをAPI呼び出しに追加して、さまざまな動作をシミュレートします。たとえば、“x-amz-pay-simulation-code = ”BuyerCanceled”です。ヘッダー署名にx-amz-pay-simulation-codeリクエストヘッダーを含めないでください。

Checkout Session

状態
理由コード
シミュレーションコード
シミュレーション方法
Open
-
-
Create Checkout Session
Completed
-
-
購入者をamazonPayRedirectUrlへリダイレクトする
Canceled
Expired
-
Checkout Sessionは、Open状態で24時間後に期限切れになります。
Canceled
BuyerCanceled
BuyerCanceled
Get Checkout SessionまたはUpdate Checkout Sessionのヘッダーにシミュレーションコードを指定し、購入者をamazonPayRedirectUrlに戻します。

シミュレーションコードは永続化されないことに注意してください。リダイレクトの直前に、リクエストでシミュレーションコードを設定する必要があります。
Canceled
AmazonCanceled
AmazonCanceled
Get Checkout Sessionのヘッダーにシミュレーションコードを指定するか、またはUpdate Checkout Sessionに指定して購入者をamazonPayRedirectUrlに戻します。

シミュレーションコードは永続化されないことに注意してください。リダイレクトの直前に、リクエストでシミュレーションコードを設定する必要があります。
Canceled
Declined
Declined
Get Checkout Sessionのヘッダーにシミュレーションコードを指定するか、またはUpdate Checkout Sessionに指定して購入者をamazonPayRedirectUrlに戻します。

シミュレーションコードは永続化されないことに注意してください。リダイレクトの直前に、リクエストでシミュレーションコードを設定する必要があります。

Charge

状態
理由コード
Simulation code
シミュレーション方法
AuthorizationInitiated
-
AuthorizationInitiated
Get Checkout Sessionのヘッダーでシミュレーションコードを指定するか、canHandlePendingAuthorizationをtrueに設定してUpdate Checkout Sessionを実行します。購入者をamazonPayRedirectUrlへリダイレクトします。

Chargeは30秒間AuthorizationInitiated状態になり、PaymentIntentに基づいてAuthorizedまたはCaptured状態に移行します。

シミュレーションコードは永続化されないことに注意してください。リダイレクトの直前に、リクエストでシミュレーションコードを設定する必要があります。
Authorized
-
-
paymentIntentをAuthorizeに設定して、Update Checkout Sessionを実行します。購入者をamazonPayRedirectUrlへリダイレクトします。
Authorized
-
AuthorizationInitiated
Get Checkout Sessionのヘッダーでシミュレーションコードを指定するか、 canHandlePendingAuthorizationをtrueに設定し、 paymentIntentをAuthorizeに設定してUpdate Checkout Sessionします。購入者をamazonPayRedirectUrlへリダイレクトします。

Chargeは30秒間AuthorizationInitiated状態になり、その後Authorizedに移行します。

シミュレーションコードは永続化されないことに注意してください。リダイレクトの直前に、リクエストでシミュレーションコードを設定する必要があります。
Authorized
-
-
canHandlePendingAuthorizationをfalseに設定し、captureNowをfalseに設定して、Create Chargeを実行します。
Captured
-
-
canHandlePendingAuthorizationをfalseに設定し、captureNowをtrueに設定して、Create Chargeを実行します。
CaptureInitiated
-
CaptureInitiated
Captureのヘッダーでシミュレーションコードを指定します

Chargeは30秒間CaptureInitiated状態になり、その後Captured状態に移行します。
Declined
SoftDeclined
PendingSoftDeclined
canHandlePendingAuthorizationをtrueに設定して、 Get Checkout Session、 Create Charge、またはUpdate Checkout Sessionのヘッダーにシミュレーションコードを指定します。購入者をamazonPayRedirectUrlへリダイレクトします。

Chargeは30秒間AuthorizationInitiated状態になり、その後、理由コードSoftDeclinedでDeclined状態に移行します。シミュレーションコードは永続化されないことに注意してください。リダイレクトの直前に、リクエストでシミュレーションコードを設定する必要があります。
Declined
HardDeclined
PendingHardDeclined
canHandlePendingAuthorizationをtrueに設定して、 Get Checkout Session、 Create Charge、またはUpdate Checkout Sessionのヘッダーにシミュレーションコードを指定します。購入者をamazonPayRedirectUrlへリダイレクトします。

Chargeは30秒間AuthorizationInitiated状態になり、その後、理由コードHardDeclinedでDeclined状態に移行します。

シミュレーションコードは永続化されないことに注意してください。リダイレクトの直前に、リクエストでシミュレーションコードを設定する必要があります。
Declined
AmazonRejected
PendingAmazonRejected
canHandlePendingAuthorizationをtrueに設定して、 Get Checkout Session、 Create Charge、またはUpdate Checkout Sessionのヘッダーにシミュレーションコードを指定します。購入者をamazonPayRedirectUrlへリダイレクトします。

Chargeは30秒間AuthorizationInitiated状態になり、その後、理由コードAmazonRejectedでDeclined状態に移行します。

シミュレーションコードは永続化されないことに注意してください。リダイレクトの直前に、リクエストでシミュレーションコードを設定する必要があります。
Declined
AmazonRejected
AmazonRejected
Create ChargeまたはCaptureのヘッダーでシミュレーションコードを指定します。

Chargeは30秒間CaptureInitiated状態になり、その後Declined 状態に移行します。
Declined
SoftDeclined
SoftDeclined
Create Chargeのヘッダーでシミュレーションコードを指定します。
Declined
HardDeclined
HardDeclined
Create Chargeのヘッダーでシミュレーションコードを指定します。
Declined
TransactionTimedOut
TransactionTimedOut
Create Chargeのヘッダーでシミュレーションコードを指定します。
Canceled
MerchantCanceled
-
Cancel Charge

Charge Permission

状態
理由コード
Simulation code
シミュレーション方法
Chargeable
-
-
有効なカードで正常ケースの決済をする
Closed
MerchantClosed
-
Cancel Charge Permission
Closed
AmazonClosed
AmazonClosed
ChargePermissionのCancel Chargeのヘッダーにシミュレーションコードを指定します。 cancelPendingChargesはfalseに設定する必要があります。

Refund

状態
理由コード
Simulation code
シミュレーション方法
RefundInitiated
-
-
Create Refund。返金は、Refunded状態に移行する前に30秒間RefundInitiated状態になります。
Refunded
-
-
Create Refund。返金は、Refunded状態に移行する前に30秒間RefundInitiated状態になります。
Declined
AmazonRejected
AmazonRejected
Create Refundのヘッダーでシミュレーションコードを指定します。