継続支払いを管理する

[ステップ6/9] 購入者が正常に決済を完了した後、Complete Checkout Sessionのレスポンスには、継続支払い利用者へ請求とキャンセルに使用できるrecurring Charge PermissionオブジェクトのChargePermissionId が含まれます。

このステップの終わりに、定期的な頻度で購入者に請求し、キャンセルを行うことができるようになります。


1. 継続支払いの請求とオーソリ失敗のハンドリング

継続支払い利用者に課金する必要があるタイミングでCreate Chargeを呼び出します。CaptureNowをtrueに設定すると、すぐに売上請求まで実施されます。売上請求を後に実施したい場合はfalseを設定して下さい。Amazon Payは、暦月ごとに購入者に請求できる金額を制限していることに注意してください。詳細については、継続支払いの毎月の請求金額制限を参照してください。

Create Chargeが201 レスポンスを返却した場合、オーソリは正常に取得されています。canHandlePendingAuthorizationがtrueの場合は、非同期オーソリのリクエストが正常に受け付けられています。 もしCreate Chargeがそれ以外のHTTPステータスコードを返却した場合は、以下のようにレスポンスの理由コード(reasonCode)を確認してCreate Chargeを再試行すべきか購入者に別の支払い方法を利用してもらうべきかを判断します。

  • もしreasonCodeがSoftDeclinedまたはProcessingFailureの場合、以下のことを行います:
    1. Get Charge Permissionを呼び出して、ChargePermissionがChargeableステータスにあることを確認します
    2. Create Chargeを呼び出して、購入者に請求します
  • もし、reasonCodeがHardDeclinedの場合、次のリンクを使用して支払い方法を更新するように購入者に依頼してください: https://pay.amazon.com/jp/jr/your-account/ba/{ChargePermissionId}。 {ChargePermissionId}の部分を購入者のChargePermission Idに置き換えます。支払い方法が​​更新されたら通知を受け取るようにIPNを設定し、以下のことを行います:
    1. Get Charge Permissionを呼び出して、ChargePermissionがChargeableステータスにあることを確認します
    2. Create Chargeを呼び出して、購​​入者に請求します
  • 上記以外のreasonCodeだった場合、購入者に連絡し、別の支払い方法で再度決済を行ってもらうようご案内します

リクエスト

curl "https://pay-api.amazon.com/:environment/:version/charges/" \
-X POST
-H "authorization:Px2e5oHhQZ88vVhc0DO%2FsShHj8MDDg%3DEXAMPLESIGNATURE"
-H "x-amz-pay-date:20201012T235046Z"
-H "x-amz-pay-idempotency-key:AVLo5tI10BHgEk2jEXAMPLEKEY"
-d @request_body

リクエストボディ

{
    "chargePermissionId": "P21-1111111-1111111",
    "chargeAmount": {
        "amount": "14.00",
        "currencyCode": "USD"
    },
    "captureNow": true, // default is false
    "softDescriptor": "Descriptor",
    "canHandlePendingAuthorization": false //default is false
}

リクエストパラメータ

名前
ロケーション
説明
x-amz-pay-idempotency-key
(必須)

Type: string
Header
リクエストを安全にリトライするための冪等キー
chargePermissionId
(必須)

Type: string
Body
ChargePermission識別子
chargeAmount
(必須)

Type: price
Body
請求金額
captureNow

Type: boolean
Body
オーソリが成功した直後に売上請求をする必要があるかどうかを示すブール値

デフォルト: false
softDescriptor

Type: string
Body
CaptureNowをtrueに設定している場合、購入者のお支払い方法ステートメントに表示される説明。CaptureNowがfalseに設定されている場合は、この値を設定しないでください。この項目には、購入者や取引に関する機密データを保存しないでください(例えば、政府発行の身分証明書、銀行口座番号、クレジットカード番号などが含まれますが、これらに限定されません)

※日本では利用できません。固定値が表示されます。

このsoft descriptorは以下の形式で連携されます。: "AMZ* <soft descriptor specified here>"

Default: "AMZ*<SELLER_NAME> pay.amazon.com"
最大長: 16 文字
canHandlePendingAuthorization

Type: boolean
Body
事業者が保留のレスポンスを処理できるかどうかを示すブール値

falseに設定すると、US,EU,UK地域では最大15秒以内、JP地域では最大30秒以内にレスポンスが返されます。trueに設定すると、Amazon Payはオーソリを非同期で処理し、24時間以内にレスポンスを返します。詳細については、非同期処理を参照してください
merchantMetadata

Type: merchantMetadata
Body
事業者が設定する注文の詳細情報
providerMetadata

Type: providerMetadata
Body
決済サービスプロバイダー(PSP)が設定する注文の詳細情報

PSPのみがこれらのフィールドを使用します

レスポンス

{
     "chargeId": "P21-1111111-1111111-C111111",
     "chargePermissionId": "P21-1111111-1111111",
     "chargeAmount": {
         "amount": "14.00",
         "currencyCode": "USD"
     },
     "captureAmount": {
         "amount": "14.00",
         "currencyCode": "USD"
     },
     "refundedAmount": {
         "amount": "0.00",
         "currencyCode": "USD"
     },
     "convertedAmount": "14.00",
     "conversionRate": "1.00",
     "softDescriptor": "Descriptor",
     "merchantMetadata": null,
     "providerMetadata": {
         "providerReferenceId": null
     },
     "statusDetails":{
         "state": "Captured",
         "reasonCode": null,
         "reasonDescription": null,
         "lastUpdatedTimestamp": "20190714T155300Z"
     },
     "creationTimestamp": "20190714T155300Z",
     "expirationTimestamp": "20190715T155300Z",
     "releaseEnvironment": "Sandbox"
}

2. キャンセルの管理

継続支払い利用者がサブスクリプションをキャンセルした場合は、Close Charge Permissionを使用してAmazon Payに通知します。 ChargePermissionを閉じた後、Amazon Payの決済を再度完了しない限り、継続支払い利用者に請求することはできなくなります。

継続支払い利用者は、https://pay.amazon.comにサインインして、請求許可を閉じることもできます。ChargePermissionが閉じられるたびに通知を受信するように IPNを設定します。解約を最小限に抑えるために、次の請求サイクルの前に、新しい支払い方法について継続支払い利用者に積極的に連絡することをお勧めします。