お客様に「お届け先住所&支払い方法」または「お支払い方法」のどちらをAmazonから連携するかを選択していただく
フロー図
以下は事業者処理とAmazon側の処理を横長のフローにまとめたものです。
フローは横長となっており、フロー内を右にスクロールしていただくことで全てをご覧いただけます。
案1. Amazon Payボタンクリック時に、ダイアログを表示して会員に選択してもらう
例) 上記フローの場合のボタンレンダリングスクリプトイメージ
<body>
<div id="AmazonPayButton"></div>
<script src="https://static-fe.payments-amazon.com/checkout.js"></script>
<script type="text/javascript" charset="utf-8">
var amazonPayButton = amazon.Pay.renderButton('#AmazonPayButton', {
// set checkout environment
merchantId: 'xxxxxxx',
ledgerCurrency: 'JPY',
sandbox: true,
checkoutLanguage: 'ja_JP',
productType: 'PayAndShip',
placement: 'Cart',
buttonColor: 'Gold',
});
//Amazon Payボタンがクリックされた際のイベントを設定する
amazonPayButton.onClick(function(){
//1. ダイアログを表示する
//2. ダイアログの結果に基づき処理を分岐
//もし お届け先と支払い方法両方を選択した場合は、amazonPayButton.initCheckoutに createCheckoutSessionConfigを渡してセッションを開始する
amazonPayButton.initCheckout({
createCheckoutSessionConfig: {
payloadJSON: '{
"webCheckoutDetails": {
"checkoutReviewReturnUrl": "https://a.com/merchant-review-page"
},
"storeId": "amzn1.application-oa2-client.xxxxxxxxx",
"scopes": ["name", "email", "phoneNumber", "billingAddress"],
"deliverySpecifications": {
"addressRestrictions": {
"type": "Allowed",
"restrictions": {
"JP": {
"statesOrRegions" : ["東京都"],
"zipCodes": ["1530064"]
}
}
}
}
}',
signature: 'xxxx',
publicKeyId: 'xxxxxxxxxx',
"algorithm": "AMZN-PAY-RSASSA-PSS-V2"
}
});
//もしお支払い方法のみを選択した場合は、amazon.Pay.initCheckoutを使用して、ボタンのパラメータから指定し直し、createCheckoutSessionConfigを渡してセッションを開始する
amazon.Pay.initCheckout({
merchantId: 'xxxxxxx',
ledgerCurrency: 'JPY',
sandbox: true,
checkoutLanguage: 'ja_JP',
productType: 'PayOnly', //PayOnlyへ変更!
placement: 'Cart',
buttonColor: 'Gold',
createCheckoutSessionConfig: {
payloadJSON: '{
"webCheckoutDetails": {
"checkoutReviewReturnUrl": "https://a.com/merchant-review-page"
},
"storeId": "amzn1.application-oa2-client.xxxxxxxxx",
"scopes": ["name", "email", "phoneNumber", "billingAddress"],
}',
signature: 'xxxx',
publicKeyId: 'xxxxxxxxxx',
"algorithm": "AMZN-PAY-RSASSA-PSS-V2"
}
});
});
</script>
</body>
caution
Amazon Payボタンレンダリング時に設定するproductTypeとセッションをinitiateする時のproductTypeが異なることは例外対応となります。
こちらの実装をご検討の場合は、事前にAmazon Pay担当までご連絡ください。
案2. 一旦PayAndShipで決済を開始し、注文内容確認画面に戻ってきた時に 事業者側で表示している情報とAmazonから取得した情報両方をタブ表示
まず、事業者サイト カートページや商品ページにAmazon Payボタンを表示 や、事業者サイト 支払い方法をAmazon Payに変更 と同じようにAmazon Payボタンをサイトに表示します。この際、productTypeはPayAndShipをセットします。
Amazon Payボタンクリック後の遷移を経て、購入者が注文確認ページに戻ってきた際に、購入者は2つの住所(Amazonから連携された住所と、事業者サイトに入力/保存した住所の両方)を参照します。
以下のフロー図は、上記#2からの流れを記載しています。
メリット・デメリット
どの実装方法にもメリット、デメリットがありますので、その中から事業者の課題を課題できる最適な選択肢を選択する必要があります。
# | 実装方法 | メリット | デメリット |
---|---|---|---|
案1 | Amazon Payボタンクリック時に、ダイアログを表示して会員に選択してもらう | ・ 既存会員で事業者サイトにお届け先住所を登録していたとしても、会員自身がAmazonに登録している住所を利用するかどうかを選択できるようになります。 ・ Amazonページ上の表示情報 (お届け先、お支払い方法)は、お客様の意図された情報のみが表示されるようになります。 | Amazon Payボタンクリック時の条件分岐、および、ダイアログの追加が必要になるので、開発工数が増加します。 ・ボタンレンダリング時のproductTypeと実際に実行するproductTypeが異なることになりますので、例外実装としてAmazon Payの事前承認を得る必要があります。ご注意ください。 |
案2 | 一旦PayAndShipで決済を開始し、注文内容確認画面に戻ってきた時に 事業者側で表示している情報とAmazonから取得した情報両方をタブ表示 | 事業者側でPayAndShipさえ実装すれば、「Amazonの住所を利用する会員登録」でも「既存会員の支払い方法のみAmazon Payを利用する」でも処理ができるようになるので、実装スコープを減らすことができます。 | ・ 注文確認画面に 事業者サイトに登録している住所と、Amazonから連携された住所を両方表示し、タブ等で会員が切り替えできるようにする実装が必要になるため、開発工数が増加します。 ・ Checkout SessionオブジェクトにはAmazonから連携された住所が格納されますので、購入者が「事業者サイトに登録のお届け先住所」を選択した場合は、実際の配送先をAmazonで把握しない状態となります。 ・マーケットプレイス保証があった際の事業者反証が不利になることがありますのでご留意ください。 |