手順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": {
        "checkoutReviewReturnUrl": "http://localhost:3000/review/",
        "checkoutCancelUrl": "http://localhost:3000/cancel/"
      },
      "storeId": "amzn1.application-oa2-client.ccxxxxxx",
      "chargePermissionType": "OneTime",
      "deliverySpecifications": {
        "addressRestrictions": {
          "type": "Allowed",
          "restrictions": {
            "JP": {
              "statesOrRegions": ["東京都"],
              "zipCodes": ["1530064"]
            }
          }
        }
      },
      "paymentDetails": {
        "allowOvercharge": false,
        "extendExpiration": false
      },
      "scopes": ["name","email","phoneNumber","billingAddress"]
    }',
    "signature": "xxxxxxx",
    "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": {
                "checkoutReviewReturnUrl": "http://localhost:3000/review/",
                "checkoutCancelUrl": "http://localhost:3000/cancel/"
            },
            "storeId": "amzn1.application-oa2-client.ccxxxxxx",
            "chargePermissionType": "OneTime",
            "paymentDetails": {
                "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": {
        "checkoutReviewReturnUrl": "http://localhost:3000/review/",
        "checkoutCancelUrl": "http://localhost:3000/cancel/"
      },
      "storeId": "amzn1.application-oa2-client.ccxxxxx",
      "chargePermissionType": "Recurring",
      "deliverySpecifications": {
        "addressRestrictions": {
          "type": "Allowed",
          "restrictions": {
            "JP": {
              "statesOrRegions": ["東京都"],
              "zipCodes": ["1530064"]
            }
          }
        }
      },
      "scopes": ["name","email","phoneNumber","billingAddress"],
      "recurringMetadata": {
        "frequency": {
          "unit": "Month",
          "value": "1"
        },
        "amount": {
          "amount": "1000",
          "currencyCode": "JPY"
        }
      }
    }',
    "signature": "xxxxxx",
    "publicKeyId": "SANDBOX-xxxxx",
    "algorithm": "AMZN-PAY-RSASSA-PSS-V2"
  }
}
{
  "merchantId": "xxxxxx",
  "ledgerCurrency": "JPY",
  "sandbox": true,
  "checkoutLanguage": "ja_JP",
  "productType": "PayOnly",
  "placement": "Cart",
  "buttonColor": "Gold",
  "createCheckoutSessionConfig": {
    "payloadJSON": {
      "webCheckoutDetails": {
        "checkoutReviewReturnUrl": "http://localhost:3000/review/",
        "checkoutCancelUrl": "http://localhost:3000/cancel/"
      },
      "storeId": "amzn1.application-oa2-client.ccxxxxxx",
      "chargePermissionType": "Recurring",
      "scopes": ["name","email","phoneNumber","billingAddress"],
      "recurringMetadata": {
        "frequency": {
          "unit": "Month",
          "value": "1"
        },
        "amount": {
          "amount": "1000",
          "currencyCode": "JPY"
        }
      }
    },
    "signature": "xxxxxx",
    "publicKeyId": "SANDBOX-xxxxxx",
    "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
- checkoutReviewReturnUrl: 購入者がAmazonページでログインした後にリダイレクトされる先(URL)をセットします。
 - checkoutCancelUrl: 購入者がAmazonページでログインした後に「キャンセル」リンクをクリックした際にリダイレクトされる先(URL)をセットします。
 
 - storeId: 手順1 - storeId、merchantId、publicKeyおよびprivateKeyを取得する で取得したStore IDをここに入れます。
 - chargePermissionType: 都度払いの場合は OneTime、継続払いの場合はRecurringをセットします。
 - deliverySpecificationについてはこちらを参照ください。
 - paymentDetails
 - scopes: 決済実行時に一緒に取得したい情報を指定します。
 - recurringMetadataについてはこちら。Recurring利用時のみ設定。
 - 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ページ上でエラーが表示されますので、ご注意ください。