Amazonサインイン

Amazon Payの決済を開始する前に購入者の詳細情報が必要な場合は、Amazonサインインを実装します。決済が開始されると、Get Checkout SessionGet Charge Permissionを使用して購入者情報を取得できます。

Amazonサインインを実装する手順は、Amazon Payチェックアウトボタンをレンダリングする手順と非常によく似ています。 Amazon Payスクリプトを追加し、サインイン設定を構成し、サインインボタンをレンダリングしてから、 Get Buyer を使用して購入者の詳細情報を取得する必要があります。このページの最後まで読み進めていただければ、Amazonサインインボタンをレンダリングし、購入者がサインインした後に購入者の詳細情報を取得できるようになります。


1. Amazon Payスクリプトを追加します

Amazon PayスクリプトをHTMLファイルに追加します。必ず正しいリージョンを選択してください。

<script src="https://static-na.payments-amazon.com/checkout.js"></script>
<script src="https://static-eu.payments-amazon.com/checkout.js"></script>
<script src="https://static-fe.payments-amazon.com/checkout.js"></script>

2. サインインペイロードを生成します

Amazonサインインボタンを表示するには、購入者のAmazonアカウントの何の情報を取得するかと、サインイン後のリダイレクト場所を指定するためにペイロードを設定する必要があります。

購入者がサインインした後にリダイレクトする必要があるURLにsignInReturnUrlにパラメータを設定します。URLには、クエリパラメータとして追加された購入者の詳細情報を取得するために使用できるトークンが含まれます。

ペイロードの例

{
    "signInReturnUrl":"https://a.com/merchant-page",
    "storeId":"amzn1.application-oa2-client.8b5e45312b5248b69eeaStoreId",
    "signInScopes":["name", "email", "postalCode", "shippingAddress", "phoneNumber"]
}
パラメータ
説明
signInReturnUrl
(必須)

Type: string
購入者がサインインした後、 購入者はこのURLにリダイレクトします

Note:
本番環境では、URLはHTTPSプロトコルを使用する必要があります。 URLドメインをセラーセントラルに追加する必要があります。詳細については、セラーセントラルへのドメインの追加 を参照してください。 SANDBOX環境では、SSL証明書は必要なく、ローカルホスト(http://localhost)でテストしている場合はHTTPプロトコルを使用できます。 セラーセントラルのJavaScriptオリジンにURLを追加する必要はありません。


storeId
(必須)

Type: string
Amazon Pay Store ID。Amazon Pay インテグレーションセントラル: US, EU, JPから取得してください。
signInScopes

Type: list <signInScope>
アクセスをリクエストしている購入者情報のスコープ。このパラメータに値が設定されていない場合でも、 常にbuyerId を返すことに注意してください。
signInCancelUrl

Type: string
事業者が設定するログインキャンセルURL。 購入者がAmazon Hosted Pageでサインインをキャンセルした場合、Amazon PayはこのURLにリダイレクトします。

タイプ: signInScope

パラメータ
説明
name
購入者の名前へのアクセスをリクエストする
email
購入者のメールアドレスへのアクセスをリクエストする
postalCode
購入者のデフォルトの配送先住所の郵便番号と国コードへのアクセスをリクエストする
shippingAddress
購入者のデフォルトの配送先住所へのアクセスをリクエストする
billingAddress
購入者のデフォルトの請求先住所へのアクセスをリクエストする

Note: このスコープを使用するには、shippingAddress もリクエストする必要があります
phoneNumber
購入者のデフォルトの配送先住所の電話番号へのアクセスをリクエストする

Note: このスコープを使用するには、shippingAddress もリクエストする必要があります

3. ペイロードの署名を作成します

署名を使用してペイロードを保護する必要があります。ペイロードにはタイムスタンプが含まれていないため、ペイロードが変更されない限り、署名を再利用できます。

オプション1(推奨): Amazon Pay SDKで提供されるヘルパー関数を使用して署名を生成します。ヘルパー関数によって生成された署名は、ボタンに対してのみ有効であり、APIリクエストは有効ではありません。

<?php
    include 'vendor/autoload.php';

    $amazonpay_config = array(
        'public_key_id' => 'MY_PUBLIC_KEY_ID',
        'private_key'   => 'keys/private.pem',
        'region'        => 'US',
        'sandbox'       => true
    );

    $client = new Amazon\Pay\API\Client($amazonpay_config);
    $payload = '{"signInReturnUrl":"https://a.com/merchant-page","storeId":"amzn1.application-oa2-client.8b5e45312b5248b69eeaStoreId","signInScopes":["name", "email", "postalCode", "shippingAddress", "phoneNumber"]}';
    $signature = $client->generateButtonSignature($payload);
    echo $signature . "\n";
?>

ソースコード

SignInScope[] scopes = { 
    SignInScope.Name, 
    SignInScope.Email, 
    SignInScope.PostalCode,
    SignInScope.ShippingAddress,
    SignInScope.PhoneNumber
};

var request = new SignInRequest
(
    signInReturnUrl: "https://example.com/account.html",
    storeId: "amzn1.application-oa2-client.000000000000000000000000000000000",
    signInScopes: scopes
);

string signature = client.GenerateButtonSignature(request);

ソースコード

PayConfiguration payConfiguration = null;
try {
    payConfiguration = new PayConfiguration()
                .setPublicKeyId("YOUR_PUBLIC_KEY_ID")
                .setRegion(Region.YOUR_REGION_CODE)
                .setPrivateKey("YOUR_PRIVATE_KEY_STRING")
                .setEnvironment(Environment.SANDBOX);
}catch (AmazonPayClientException e) {
    e.printStackTrace();
}

AmazonPayClient client = new AmazonPayClient(payConfiguration);

String payload = "{\"signInReturnUrl\":\"https://a.com/merchant-page\",\"storeId\":\"amzn1.application-oa2-client.xxxxx\",\"signInScopes\":[\"name\",\"email\",\"postalCode\",\"shippingAddress\",\"phoneNumber\"]}";
String signature = client.generateButtonSignature(payload);

ソースコード

html
const fs = require('fs');
const Client = require('@amazonpay/amazon-pay-api-sdk-nodejs');

const config = {
    publicKeyId: 'ABC123DEF456XYZ',
    privateKey: fs.readFileSync('tst/private.pem'),
    region: 'us',
    sandbox: true
};

const testPayClient = new Client.AmazonPayClient(config);
const payload = {
    "signInReturlUrl": "https://a.com/merchant-page",
    "storeId": "amzn1.application-oa2-client.8b5e45312b5248b69eeaStoreId",
    "signInScopes": ["name", "email", "postalCode", "shippingAddress", "phoneNumber"] 
};
const signature = testPayClient.generateButtonSignature(payload);

ソースコード

オプション2: 署名リクエストガイドの手順2と3に従って、手動で署名を作成します。 signing requests の手順2と3に従って、手動で署名を作成します。


4.ボタンをレンダーします

前の2つの手順の値を使用して、Amazon PayボタンをHTMLコンテナ要素にレンダリングします。ボタンはレスポンシブになり、コンテナ要素のサイズを継承します。詳細については、 レスポンシブボタンのロジックを参照してください。

Code sample

関数パラメータ

パラメータ
説明
merchantId
(必須)

Type: string
Amazon Pay事業者アカウントID
signInConfig
(必須)

Type: signInConfig
Amazonサインイン設定。 SignIn productTypeを使用する場合、これは必須フィールドです。
placement
(必須)

Type: string
ウェブサイトへのAmazon Payボタンの配置

サポートされている値:
  • 'Home' - 初期ページまたはメインページ
  • 'Product' - 商品詳細ページ
  • 'Cart' - 購入者が決済を開始する前のカートレビューページ
  • 'Checkout' - 購入者が決済を開始した後の任意のページ
  • 'Other' - 前の説明に当てはまらないページ
ledgerCurrency
(必須)

Type: string
事業者ID登録時の通貨

Supported values:
  • US 事業者 - 'USD'
  • EU 事業者 - 'EUR'
  • UK 事業者 - 'GBP'
  • JP 事業者 - 'JPY'
productType

Type: string
決済用に選択されたProduct type

サポートされている値:
  • 'PayAndShip' - 購入者のAmazonウォレットとアドレスブックを使用して決済を提供します。購入者の配送の詳細が必要な場合は、このproduct typeを選択してください
  • 'PayOnly' - 購入者のAmazonウォレットのみを使用して決済を提供します。購入者の配送の詳細が必要ない場合は、このproduct typeを選択してください
  • 'SignIn' - 「サインイン」'SignIn'サインインを提供します。購入者がAmazon Payの決済を開始する前に購入購入者の詳細が必要な場合は、このproduct typeを選択してください
デフォルト値: 'PayAndShip'
buttonColor

Type: string
Amazon Payボタンの色

サポートされている値: 'Gold', 'LightGray', 'DarkGray'
デフォルト値: 'Gold'
checkoutLanguage

Type: string
Amazon Payがホストするページでボタンとテキストをレンダリングするために使用される言語。サポートされている言語は、Amazon Payアカウントが登録されているリージョンによって異なることに注意してください

サポートされている値:
  • US 事業者 - 'en_US'
  • EU/UK 事業者 - 'en_GB', de_DE', 'fr_FR', 'it_IT', 'es_ES'
  • JP 事業者 - 'ja_JP'
sandbox

Type: boolean
ボタンをSANDBOX環境に設定します

デフォルト値: false

5. 購入者情報詳細を取得します

Get Buyer で購入者の詳細を取得します。 Get Buyerは、デフォルトでbuyerId のみを返します。ボタンはsignInScopes パラメータを使用して、追加の購入者の詳細へのアクセスを明示的に要求する必要があります。

Amazon Payは、購入者がサインインした後に購入購入者の詳細を取得するために必要なトークンのみを提供します。トークンはクエリパラメータとしてsignInReturnUrlに追加され、24時間後に期限切れになります。

リクエスト

リクエストパラメータ

名前
ロケーション
説明
buyerToken
(必須)

Type: string
Path Parameter
購入者の詳細を取得するために使用されるトークン。この値は、クエリパラメータとしてsignInReturnUrl追加されます。

最大長:500文字/バイト

レスポンス

{
	"name": "John Example",
	"email": "johnexample@amazon.com",
	"postalCode": "12345",
	"countryCode": "US",
	"buyerId": "DIRECTEDBUYERID",
	"phoneNumber": "1234567811" // default billing address phone number
	"shippingAddress": {
		"name": "John",
		"addressLine1": "15th Street",
		"addressLine2": "",
		"addressLine3": "",
		"city": "Seattle", 
		"county": "",
		"district": "",
		"stateOrRegion": "WA",
		"country": "USA",
		"postalCode": "98121",
		"phoneNumber": "1234567899"
	},
	"billingAddress": null,
	"primeMembershipTypes": null
}