Amazonサインイン
Amazon Payの決済を開始する前に購入者の詳細情報が必要な場合は、Amazonサインインを実装します。決済が開始されると、Get Checkout Session と Get 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ボタンの配置 サポートされている値:
|
ledgerCurrency (必須) Type: string |
事業者ID登録時の通貨 Supported values:
|
productType Type: string |
決済用に選択されたProduct type サポートされている値:
|
buttonColor Type: string |
Amazon Payボタンの色 サポートされている値: 'Gold', 'LightGray', 'DarkGray' デフォルト値: 'Gold' |
checkoutLanguage Type: string |
Amazon Payがホストするページでボタンとテキストをレンダリングするために使用される言語。サポートされている言語は、Amazon Payアカウントが登録されているリージョンによって異なることに注意してください サポートされている値:
|
sandbox Type: boolean |
ボタンをSANDBOX環境に設定します デフォルト値: false |
5. 購入者情報詳細を取得します
Get Buyer で購入者の詳細を取得します。 Get Buyerは、デフォルトでbuyerId
のみを返します。ボタンはsignInScopes
パラメータを使用して、追加の購入者の詳細へのアクセスを明示的に要求する必要があります。
Amazon Payは、購入者がサインインした後に購入購入者の詳細を取得するために必要なトークンのみを提供します。トークンはクエリパラメータとしてsignInReturnUrl
に追加され、24時間後に期限切れになります。
リクエスト
リクエストパラメータ
名前
|
ロケーション
|
説明
|
buyerToken (必須) Type: string |
Path Parameter
|
購入者の詳細を取得するために使用されるトークン。この値は、クエリパラメータとしてsignInReturnUrl 追加されます。最大長:1000文字/バイト |
レスポンス
{
"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
}