手順4 - Amazon Payボタンクリック以降の流れ
Amazon Pay ボタンクリック後の購入者体験
以降 "お届け先と支払い方法"の記述箇所について、productType=PayOnlyをご利用の場合は "お届け先"に関する記述は無視してください。
1. 手順3 で設置したAmazon Payボタンを購入者がクリックすると、購入者はAmazonサイト (Amazon hosted page)にリダイレクトされ、そこでAmazonアカウントでログインします。
2. ログインが完了すると、購入者はAmazonサイト(Amazon hosted page)上でお届け先住所、支払い方法の選択、決済金額を確認し、「今すぐ支払う」ボタンをクリックします。
3. 購入者はAmazon hosted page上でリダイレクトされ「完了画面が表示されるまでブラウザ・アプリを閉じないでください」という文言とスピナー画像を参照します。
4. 決済が完了すると、購入者は事業者の決済完了相当ページにリダイレクトされます。
5. 事業者は、決済結果をもとに購入者へ決済成功または失敗のページを表示します。
上記の流れを画像つきでご紹介した遷移図はAPB決済フローをご覧ください。
事業者側での処理: 上記 "Amazon Pay ボタンクリック後の購入者体験" #4と5の間
Complete Checkout Session APIの実行
決済の準備が整ったら、Amazonは ボタンレンダリングスクリプトに設定された checkoutResultReturnUrl
(貴社サーバー)へリダイレクトします。
リダイレクト時には Checkout Session IdがURLパラメータとして付加されています。
例) https://anyurl.com/result/ ?amazonCheckoutSessionId=26be7331-7dc2-4722-be22-f7e75582d3ef
事業者は、リダイレクトを受けたらURLパラメータに付加されている amazonCheckoutSessionIdを取得し、Complete Checkout Session
APIを実行します。
Complete Checkout Session APIのリクエストパラメータにはamazonCheckoutSessionIdを指定し、リクエストボディに以下のような内容をセットします。
{
"chargeAmount": {
"amount": "1000", //決済金額 (Update Checkout SessionAPIで指定したpaymentDetails.chargeAmount.amountと一致している必要があります(必須)
"currencyCode": "JPY" //日本の場合はJPYを指定します(必須)
}
}
- Complete Checkout Session APIに関してはこちら
- なお、SDKをご利用の場合は、completeCheckoutSessionといった名称で機能が用意されていますのでご利用ください。
APIが成功している場合(HTTPステータスコード 200 または 202 の場合)
APIのレスポンスの中に chargePermissionId
と chargeId
が返りますので、貴社の顧客に紐づけて保存しておきます。
Update Checkout Session APIのpaymentDetails.paymentIntentでConfirmをセットしている場合は、chargeIdが返りません(Confirmでは決済完了時にオーソリを取得しないため)
HTTPステータスコード 200の場合
処理が完了したら、注文完了ページを表示します。
HTTPステータスコード 202の場合
canHandlePendingAuthorizationがtrueに設定されていて、オーソリがまだ保留中の場合、HTTPステータスコード202が返ります。
この場合は、非同期でオーソリが処理されます。最大24時間かけてオーソリ処理しますので、最終的なオーソリ結果は 事業者が Get Charge APIをポーリング実行して取得する必要があります。
APIレスポンスを受け取った時点で注文としては受け付けしたとしてもオーソリ結果が出ていませんので完全に決済が成功している状態ではありません。購入者をどのような画面(ページ)にリダイレクトするかをご検討ください。
- 非同期オーソリに関しては以下のFAQに記載がありますので、ご確認ください。
FAQ - canHandlePendingAuthorization=true(Dynamic Authorizationおよび非同期オーソリ)はどんな時に設定したら良いですか?
APIが失敗となる場合
適切なエラーハンドリングをお願いいたします。
Complete Checkout Sessionのエラーについては、以下のサイトでご紹介しています。
インテグレーションガイド - エラーハンドリング
- Complete Checkout Sessionを成功裏に完了できなかった決済は、決済失敗となりますので、事業者の受注処理はComplete Checkout Session APIが成功裏に完了してから実行してください。
- Checkout Sessionは、ECサイト上でAmazon Payボタンをクリック〜決済を完了するまでの決済セッションを一時的に保持するためのオブジェクトです。ですので、決済を終了した場合(成功でも失敗でも)はCheckout Sessionはその役割を終え、一定期間後に削除されます。決済が成功裏に完了した場合は、Checkout Sessionで保持していた購入者の情報や決済情報は Charge Permissionオブジェクトに引き継がれますので、決済完了後にそれらの情報を参照する場合は、Get Checkout Session APIではなく、Get Charge Permission APIをご利用ください。
- 詳細情報は Charge Permissionが作成されてから30日間のみ取得できます。