本資料は、従来のAmazon Payフローを活用しながらキャンペーン応募ポップアップを表示し、シームレスにエントリーを促す仕組みの設置手順です。サンプルコードや事業者様側でご対応いただく作業(TODO)を記載しています。
placement)と merchantMetadata.customInformation をセットすることで通常Amazon Payボタンの決済と区別し、セラーセントラルのトランザクションレポートで対象の特定が可能になります(詳細は「4. キャンペーン対象者の特定方法」を参照)。| ファイル | 役割 |
|---|---|
amazonpayWalletReward.js | ポップアップ生成スクリプト(本体) |
本ガイドの「作業対象」は次の2つです。
① amazonpayWalletReward.js:ダウンロードして配置するポップアップ生成スクリプト本体
② 設置対象ページ:事業者様のポップアップ設置対象ページ(カート画面/支払方法選択画面)のフロント側
▼ ポップアップ生成スクリプト(amazonpayWalletReward.js)をダウンロード
上記の「ダウンロード」ボタンから amazonpayWalletReward.js を取得し、ポップアップ設置対象ページのフロントエンドに配置してください。
発動条件(パターンA / パターンB)に応じて、以下のいずれかのスクリプトを組み込んでください。
<!-- ① ポップアップ生成スクリプト(amazonpayAssist を定義)と Amazon Pay 公式スクリプトを読み込む -->
<script type="text/javascript" src="amazonpayWalletReward.js"></script> <!-- [TODO(事業者様): 配置先パスに合わせる] -->
<script src="https://static-fe.payments-amazon.com/checkout.js" type="text/javascript" charset="utf-8"></script> <!-- amazon.Pay を提供 -->
<script type="text/javascript" charset="utf-8">
document.addEventListener("DOMContentLoaded", function () {
// 発動トリガーとなる「Amazon Payで購入」ラジオボタン
const targetRadio = document.querySelector('[id="amazon-pay"]'); // [TODO(事業者様): 自社のラジオボタンidに合わせる]
// ポップアップ内 Amazon Pay ボタンの活性/非活性を切り替える(エントリー前は押せないようにする)
function toggleAmazonPayButton(elem, enable) {
elem.inert = !enable;
elem.style.opacity = enable ? '1' : '0.5';
elem.style.pointerEvents = enable ? 'auto' : 'none'; // Safari対策
}
// 「Amazon Payで購入」選択時にポップアップを表示し、Amazon Pay ボタンを描画する
function showAmazonPayPopup() {
if (!targetRadio || !targetRadio.checked) return; // 選択時のみ発動
// amazonpayAssist() は amazonpayWalletReward.js で定義。引数はポップアップ内に生成するボタンコンテナのid。
// fadeIn(秒) で指定秒後にポップアップを表示(内部で setTimeout → 表示)。
amazonpayAssist('AmazonPayButtonOnPopup').fadeIn(0.2); // [TODO(事業者様): 表示タイミング(秒)を調整]
renderApayButton();
}
// ポップアップ内に生成された #AmazonPayButtonOnPopup へ Amazon Pay ボタンを描画
function renderApayButton() {
// ボタンパラメータ・payload・署名生成処理は既存の Amazon Pay 実装をそのまま流用可能。
// 本キャンペーンで変更するのは placement と merchantMetadata.customInformation の2点のみ(トラッキング用)。
amazon.Pay.renderButton('#AmazonPayButtonOnPopup', {
merchantId: 'XXXXXXXXXX', // [TODO] セラーセントラルの Merchant ID
ledgerCurrency: 'JPY',
sandbox: true, // [TODO] 本番は false
checkoutLanguage: 'ja_JP',
productType: 'PayOnly', // 支払方法選択型のポップアップは PayOnly
placement: 'Home', // [TODO] 通常導線と別値にしてトラッキング(payload外なので署名再生成は不要)
buttonColor: 'Gold',
createCheckoutSessionConfig: {
payloadJSON: '<?php echo $payloadJSON ;?>', // 既存payload + merchantMetadata.customInformation(キャンペーンコード)
signature: '<?php echo $signature ;?>', // [TODO] customInformation追加後のpayloadで署名を再生成
publicKeyId: '<?php echo $publicKeyId ;?>'
}
});
// 描画直後にエントリー状態(termsAgreed)を反映し、ボタンの活性/非活性を初期化
setTimeout(function () {
const apayButtonElem = document.getElementById('AmazonPayButtonOnPopup');
const currentCheckbox = document.querySelector('input[name="termsAgreed"]');
if (apayButtonElem && currentCheckbox) {
toggleAmazonPayButton(apayButtonElem, currentCheckbox.checked);
}
}, 200);
}
// 【JS側と連動】ポップアップ内の「エントリーする」ボタン押下時、amazonpayWalletReward.js が
// name="termsAgreed" の隠しチェックボックスを切り替えて change を発火する。これを受けて活性/非活性を制御。
document.addEventListener('change', function (e) {
if (e.target && e.target.name === 'termsAgreed') {
const apayButtonElem = document.getElementById('AmazonPayButtonOnPopup');
if (apayButtonElem) toggleAmazonPayButton(apayButtonElem, e.target.checked);
}
});
// 初期表示時の選択状態を確認し、以降の選択変更も監視
if (targetRadio) {
showAmazonPayPopup();
targetRadio.addEventListener('change', showAmazonPayPopup);
}
});
</script>
<!-- ① ポップアップ生成スクリプト(amazonpayAssist を定義)と Amazon Pay 公式スクリプトを読み込む -->
<script type="text/javascript" src="amazonpayWalletReward.js"></script> <!-- [TODO(事業者様): 配置先パスに合わせる] -->
<script src="https://static-fe.payments-amazon.com/checkout.js" type="text/javascript" charset="utf-8"></script> <!-- amazon.Pay を提供 -->
<script type="text/javascript" charset="utf-8">
document.addEventListener("DOMContentLoaded", function () {
// 【カート表示型】条件を設けず、カート画面の表示時点で必ずポップアップを表示する
// ポップアップ内 Amazon Pay ボタンの活性/非活性を切り替える(エントリー前は押せないようにする)
function toggleAmazonPayButton(elem, enable) {
elem.inert = !enable;
elem.style.opacity = enable ? '1' : '0.5';
elem.style.pointerEvents = enable ? 'auto' : 'none'; // Safari対策
}
// amazonpayAssist() は amazonpayWalletReward.js で定義。引数はポップアップ内に生成するボタンコンテナのid。
// fadeIn(秒) で指定秒後にポップアップを表示(ページ表示時点で即発動)。
amazonpayAssist('AmazonPayButtonOnPopup').fadeIn(0.2); // [TODO(事業者様): 表示タイミング(秒)を調整]
// ポップアップ内に生成された #AmazonPayButtonOnPopup へ Amazon Pay ボタンを描画
// ボタンパラメータ・payload・署名生成処理は既存の Amazon Pay 実装をそのまま流用可能。
// 本キャンペーンで変更するのは placement と merchantMetadata.customInformation の2点のみ(トラッキング用)。
amazon.Pay.renderButton('#AmazonPayButtonOnPopup', {
merchantId: 'XXXXXXXXXX', // [TODO] セラーセントラルの Merchant ID
ledgerCurrency: 'JPY',
sandbox: true, // [TODO] 本番は false
checkoutLanguage: 'ja_JP',
productType: 'PayAndShip', // カート表示型は配送あり(PayAndShip)
placement: 'Home', // [TODO] 通常導線と別値にしてトラッキング(payload外なので署名再生成は不要)
buttonColor: 'Gold',
createCheckoutSessionConfig: {
payloadJSON: '<?php echo $payloadJSON ;?>', // 既存payload + merchantMetadata.customInformation(キャンペーンコード)
signature: '<?php echo $signature ;?>', // [TODO] customInformation追加後のpayloadで署名を再生成
publicKeyId: '<?php echo $publicKeyId ;?>'
}
});
// 描画直後にエントリー状態(termsAgreed)を反映
setTimeout(function () {
const apayButtonElem = document.getElementById('AmazonPayButtonOnPopup');
const currentCheckbox = document.querySelector('input[name="termsAgreed"]');
if (apayButtonElem && currentCheckbox) toggleAmazonPayButton(apayButtonElem, currentCheckbox.checked);
}, 200);
// 【JS側と連動】ポップアップ内の「エントリーする」ボタン押下時、amazonpayWalletReward.js が
// name="termsAgreed" の隠しチェックボックスを切り替えて change を発火する。これを受けて活性/非活性を制御。
document.addEventListener('change', function (e) {
if (e.target && e.target.name === 'termsAgreed') {
const apayButtonElem = document.getElementById('AmazonPayButtonOnPopup');
if (apayButtonElem) toggleAmazonPayButton(apayButtonElem, e.target.checked);
}
});
});
</script>
上記スクリプトおよびamazonpayWalletReward.jsの [TODO(事業者様): ...] を、自社環境に合わせて設定してください(詳細は「5. 事業者様 対応 TODO 一覧」を参照)。
選択したパターンに応じてポップアップが表示されること、エントリー後に Amazon Pay ボタンが活性化して決済に進めることを確認してください。テスト環境では sandbox: true のままご確認ください。
Amazon Pay のセラーセントラルで取得できるトランザクションレポートで、customInformation がセットされている注文を事業者様側で確認できます。Sandbox・本番環境ともに、決済後すぐに確認可能です。
| カラム | 内容 |
|---|---|
AmazonOrderReferenceId | Amazon のリファレンスID |
SellerOrderId | 販売事業者注文番号(=事業者様の注文番号) |
OrderTotal | Amazon Pay の注文金額 |
CustomInformation | セットされたキャンペーンコード文字列 |
OrderReferenceStatus | 注文のステータス(Open, Closed, Canceled など) |
Amazon Pay ボタンの一般的な設定値(merchantId/publicKeyId/payloadJSON/ 署名生成処理 / リターンURL 等)は、既存の Amazon Pay 実装のものをそのまま流用してください。ボタンの動作自体は変わりません。本キャンペーンで変更いただくのは、トラッキング用の 2 パラメーター(placementとmerchantMetadata.customInformation)のみです。
| 箇所 | 作業対象 | 内容 |
|---|---|---|
placement | 設置対象ページ | トラッキング用に、通常('Cart' 等)とは別の値(例: 'Home')をセット。 |
merchantMetadata.customInformation | 設置対象ページ(payload 生成箇所) | payload 内にキャンペーンコードをセット。※ payload を変更すると署名も変わるため、追加後の payload に対し signature の再生成が必要 |
| 箇所 | 作業対象 | 内容 |
|---|---|---|
| スクリプト読み込みパス | 設置対象ページ | 配置した amazonpayWalletReward.js のファイルパスを設定 |
| 発動条件 | 設置対象ページ | パターンA(カート表示時点で必ず表示)または パターンB(targetRadio を「Amazon Payで購入」の id に合わせる)を選択 |
| 表示タイミング | 設置対象ページ | fadeIn(0.2) の秒数を UX 要件に合わせて調整 |
amazonpayWalletReward.js)| 箇所 | 作業対象 | 内容 |
|---|---|---|
| バナー画像 | amazonpayWalletReward.js | 事業者様側でバナー画像を作成し、img.src のファイル名/URL を差し替えてください(現状は仮画像 https://d487dy88y87x7.cloudfront.net/walletRewardPlaceholder.png)※サイズの厳密な指定はありませんが、目安として横400 × 縦200〜300px 程度(横長)を推奨します。ポップアップ幅に合わせて自動で表示されます。 |
| 細則リンク | amazonpayWalletReward.js | 応募規約・キャンペーン細則ページの URL を設定してください(現状は仮ページ campaignTerms.html) |
| 文言・スタイル | amazonpayWalletReward.js(既定値)/設置対象ページ(option で上書き) | ポップアップ内の文言や配色は option.styles で上書き可能。必要に応じて調整 |
応募規約・キャンペーン細則ページは事業者様側でご用意ください。 デモの campaignTerms.html は参考用のプレースホルダーです(配布物ではありません)。ポップアップ内の細則リンク先を、事業者様側でご用意いただいたページの URL に設定してください。
すでに稼働中の通常 Amazon Pay ボタンと比べ、戻り値・パラメーター・ボタンの動作自体に変更はありません。ポップアップ上のAmazon Payボタンから既存のAmazon Payフローに合流します。
キャンペーン対象者の特定(通常購入者との色分け)のためだけに、以下の 2 パラメーターを変更します。
placement(amazon.Pay.renderButton() の引数)'Cart' 等)とは別の値(例: 'Home')をセットします。payload には含まれないため、署名の再生成は不要です。merchantMetadata.customInformation(payload 内)これらにより、Amazon 側のログ・トランザクションレポートで通常購入者とキャンペーン応募者を色分けできます(確認方法は「4. キャンペーン対象者の特定方法」を参照)。
amazonpayWalletReward.js のみです。amazonpayWalletReward.js 内のバナー画像 img.src と細則リンク先を差し替えてください。