手順2 - SDKを取得し、Amazon Payボタンレンダーに必要な事前準備を行います
1. SDKを取得する
Amazon Pay SDK/サンプルコードをPHP、Java、.NET(C#)、Node.js、Ruby、Perlでご用意しています。 SDKをご利用になる場合は、こちらのサイトからご利用言語のSDKを入手ください。
2. Amazon Payボタンを表示するためのjavascriptの中身を作る
次にAmazon Payボタンを貴社サイトに表示するためのjavascriptに入れる中身部分を先に作成します。
中身のイメージ
目指す内容は以下のようなものです。 OneTime/Recurring、PayAndShip/PayOnlyでそれぞれサンプルをご用していますので、コピーしてご利用ください。
caution
なお、可読性のため改行していますが、payloadJSONは一行で記載ください
スクリプトの中身
- OneTime-PayAndShip
- OneTime-PayOnly
- Recurring-PayAndShip
- Recurring-PayOnly
{
"merchantId": "xxxxxx",
"ledgerCurrency": "JPY",
"sandbox": true,
"checkoutLanguage": "ja_JP",
"productType": "PayAndShip",
"placement": "Cart",
"buttonColor": "Gold",
"createCheckoutSessionConfig": {
"payloadJSON": {
"webCheckoutDetails": {
"checkoutResultReturnUrl": "http://localhost:3000/result_apb/",
"checkoutCancelUrl": "http://localhost:3000/cancel/",
"checkoutMode": "ProcessOrder"
},
"storeId": "amzn1.application-oa2-client.ccxxxxxx",
"chargePermissionType": "OneTime",
"merchantMetadata": {
"merchantReferenceId": "",
"merchantStoreName": "",
"noteToBuyer": "",
"customInformation": ""
},
"deliverySpecifications": {
"addressRestrictions": {
"type": "Allowed",
"restrictions": {
"JP": {
"statesOrRegions": ["東京都"],
"zipCodes": ["1530064"]
}
}
}
},
"paymentDetails": {
"paymentIntent": "Authorize",
"canHandlePendingAuthorization": false,
"chargeAmount": {
"amount": "700",
"currencyCode": "JPY"
},
"allowOvercharge": false,
"extendExpiration": false
},
"scopes": ["name","email","phoneNumber","billingAddress"],
"addressDetails": {
"name": "テスト太郎",
"addressLine1": "目黒区下目黒1-8-1",
"stateOrRegion": "東京都",
"postalCode": "123-4567",
"countryCode": "JP",
"phoneNumber": "09012345678"
}
},
"signature": "xxxxxx",
"publicKeyId": "SANDBOX-xxxxxx",
"algorithm": "AMZN-PAY-RSASSA-PSS-V2"
}
}
{
"merchantId": "xxxxxx",
"ledgerCurrency": "JPY",
"sandbox": true,
"checkoutLanguage": "ja_JP",
"productType": "PayOnly",
"placement": "Cart",
"buttonColor": "Gold",
"createCheckoutSessionConfig": {
"payloadJSON": {
"webCheckoutDetails": {
"checkoutResultReturnUrl": "http://localhost:3000/result_apb/",
"checkoutCancelUrl": "http://localhost:3000/cancel/",
"checkoutMode": "ProcessOrder"
},
"storeId": "amzn1.application-oa2-client.ccxxxxxx",
"chargePermissionType": "OneTime",
"merchantMetadata": {
"merchantReferenceId": "",
"merchantStoreName": "",
"noteToBuyer": "",
"customInformation": ""
},
"paymentDetails": {
"paymentIntent": "Authorize",
"canHandlePendingAuthorization": false,
"softDescriptor": "",
"chargeAmount": {
"amount": "700",
"currencyCode": "JPY"
},
"allowOvercharge": false,
"extendExpiration": false
},
"scopes": ["name","email","phoneNumber","billingAddress"]
},
"signature": "xxxxxx",
"publicKeyId": "SANDBOX-xxxxxx",
"algorithm": "AMZN-PAY-RSASSA-PSS-V2"
}
}
{
"merchantId": "xxxxxx",
"ledgerCurrency": "JPY",
"sandbox": true,
"checkoutLanguage": "ja_JP",
"productType": "PayAndShip",
"placement": "Cart",
"buttonColor": "Gold",
"createCheckoutSessionConfig": {
"payloadJSON": {
"webCheckoutDetails": {
"checkoutResultReturnUrl": "http://localhost:3000/result_apb/",
"checkoutCancelUrl": "http://localhost:3000/cancel/",
"checkoutMode": "ProcessOrder"
},
"storeId": "amzn1.application-oa2-client.ccxxxxxx",
"chargePermissionType": "Recurring",
"merchantMetadata": {
"merchantReferenceId": "",
"merchantStoreName": "",
"noteToBuyer": "",
"customInformation": ""
},
"deliverySpecifications": {
"addressRestrictions": {
"type": "Allowed",
"restrictions": {
"JP": {
"statesOrRegions": ["東京都"],
"zipCodes": ["1530064"]
}
}
}
},
"paymentDetails": {
"paymentIntent": "Authorize",
"canHandlePendingAuthorization": false,
"chargeAmount": {
"amount": "700",
"currencyCode": "JPY"
}
},
"scopes": ["name","email","phoneNumber","billingAddress"],
"recurringMetadata": {
"frequency": {
"unit": "Month",
"value": "1"
},
"amount": {
"amount": "1000",
"currencyCode": "JPY"
}
},
"addressDetails": {
"name": "テスト太郎",
"addressLine1": "目黒区下目黒1-8-1",
"stateOrRegion": "東京都",
"postalCode": "123-4567",
"countryCode": "JP",
"phoneNumber": "09012345678"
}
},
"signature": "xxxxxx",
"publicKeyId": "SANDBOX-xxxxxx",
"algorithm": "AMZN-PAY-RSASSA-PSS-V2"
}
}
{
"merchantId": "xxxxxx",
"ledgerCurrency": "JPY",
"sandbox": true,
"checkoutLanguage": "ja_JP",
"productType": "PayOnly",
"placement": "Cart",
"buttonColor": "Gold",
"createCheckoutSessionConfig": {
"payloadJSON": {
"webCheckoutDetails": {
"checkoutResultReturnUrl": "http://localhost:3000/result_apb/",
"checkoutCancelUrl": "http://localhost:3000/cancel/",
"checkoutMode": "ProcessOrder"
},
"storeId": "amzn1.application-oa2-client.ccxxxxxx",
"chargePermissionType": "Recurring",
"merchantMetadata": {
"merchantReferenceId": "",
"merchantStoreName": "",
"noteToBuyer": "",
"customInformation": ""
},
"paymentDetails": {
"paymentIntent": "AuthorizeWithCapture",
"canHandlePendingAuthorization": false,
"softDescriptor": "",
"chargeAmount": {
"amount": "700",
"currencyCode": "JPY"
}
},
"scopes": ["name","email","phoneNumber","billingAddress"],
"recurringMetadata": {
"frequency": {
"unit": "Month",
"value": "1"
},
"amount": {
"amount": "1000",
"currencyCode": "JPY"
}
}
},
"signature": "xxxxxx",
"publicKeyId": "SANDBOX-xxxxxxx",
"algorithm": "AMZN-PAY-RSASSA-PSS-V2"
}
}
- merchantId: ”手順1 - storeId、merchantId、publicKeyおよびprivateKeyを取得する” で取得したmerchantIdをここに入れます。
- ledgerCurrency: 常に"JPY"をセットします。
- sandbox: sandbox利用時はtrueをセットします。
- checkoutLanguage: 常に"ja_JP"をセットします。
- productType: 商品の配送がある場合はPayAndShip、デジタルコンテンツはPayOnlyをセットします。
- placement: placementに何を設定したとしても、サイト上に表示されるAmazon Payボタンの見た目に違いはありません。一方で本番稼働を開始した際にどの場所(シナリオ)に設置されたボタンがどのように利用されているかをAmazon側で把握する際にこのplacementの値を見ています。この計測結果を踏まえて貴社へのご案内や新たなご提案を行なっていくため、設置場所やシナリオごとに別のplacmentの値をご利用ください。どの値を利用して良いかわからない場合は、Amazon Pay技術担当までご相談ください。
- buttonColorについてはこちら
- webCheckoutDetails
- checkoutResultReturnUrl: 購入者がAmazonページでログインし決済を完了した際にリダイレクトされる先(URL)をセットします。
- checkoutCancelUrl: 購入者がAmazonページでログインした後に「キャンセル」リンクをクリックした際にリダイレクトされる先(URL)をセットします。
- checkoutMode: 必ずProcessOrderをセットします。
- storeId: "手順1 - storeId、merchantId、publicKeyおよびprivateKeyを取得する" で取得したStore IDをここに入れます。
- chargePermissionType: 都度払いの場合は OneTime、継続払いの場合はRecurringをセットします。
- merchantMetadataについてはこちら
- merchantMetadataの一部のデータについては、決済完了時にAmazon Payから送信されるメールの内容に含まれます。メール本文に表示される内容についてはこちらをご覧ください。
- deliverySpecificationについてはこちらを参照ください。
- paymentDetails
- scopes: 決済実行時に一緒に取得したい情報を指定します。
- recurringMetadataについてはこちら
- addressDetailsについてはこちら
- signature: payloadの署名を入れます。署名を作るには、SDKを使う方法と手作業で署名を作り上げる方法の2つがありますので、下段 「payloadの署名」で詳細をご案内します。
- publicKeyId: "手順1 - storeId、merchantId、publicKeyおよびprivateKeyを取得する" で取得したpublicKeyIdをここに入れます。
payloadの署名
payload
とは、上記中身イメージの中の以下の部分を指します。
{
"webCheckoutDetails": {
.
.
.
"scopes": ["name","email","phoneNumber","billingAddress"]
}
このpayloadを署名処理した結果得られるsignature(署名)をAmazon Payボタンレンダリングスクリプトに入れる必要があります。 署名を作るには、SDKを利用するか手動で作成するかの2通りがありますので、以下のページを参照の上署名を作成してください。
- SDKを利用する場合: インテグレーションガイド - ペイロードに署名します
- 手動で署名を作る場合: インテグレーションガイド - 署名リクエスト
tip
- SDKを利用する場合
- public_key_id / publicKeyId / setPrivateKey / privateKey には 手順1で取得したpublicKeyをセットしてください。
- private_key / privateKey / setPrivateKey / privateKey には手順1で取得したprivateKeyをセットしてください。
- region / setRegion には "JP"または"jp"をセットしてください(大文字小文字の違いは、上記SDKを利用する場合でご紹介したサンプルをご覧いただき合わせるようにしてください)
- 署名処理では、渡されたpayloadの改行やカンマ、スペースなど全てを含めて署名していますので、署名する前のpayloadと署名処理に指定したpayloadは必ず同じである必要があります。 少しでも異なる場合は、Amazonページ上でエラーが表示されますので、ご注意ください。