継続支払いを管理する
[ステップ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の場合、以下のことを行います:- Get Charge Permissionを呼び出して、ChargePermissionがChargeableステータスにあることを確認します
- Create Chargeを呼び出して、購入者に請求します
- もし、
reasonCode
がHardDeclinedの場合、次のリンクを使用して支払い方法を更新するように購入者に依頼してください: https://pay.amazon.com/jp/jr/your-account/ba/{ChargePermissionId}。 {ChargePermissionId}の部分を購入者のChargePermission Idに置き換えます。支払い方法が更新されたら通知を受け取るようにIPNを設定し、以下のことを行います:- Get Charge Permissionを呼び出して、ChargePermissionがChargeableステータスにあることを確認します
- 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を設定します。解約を最小限に抑えるために、次の請求サイクルの前に、新しい支払い方法について継続支払い利用者に積極的に連絡することをお勧めします。