Amazon Pay の billingAddress(請求者住所)

Amazon Pay の請求者住所

Amazon Payで請求者住所を取得できるようになりました。

Add the Amazon Pay Button | Amazon Pay
Add the Amazon Pay Button

(1)PayAndShipなどのボタン描画用のpayloadを作ります。このpayloadを作るとき、scopeにbillingAddressを指定します。

{
    "webCheckoutDetails": {
        "checkoutReviewReturnUrl": "https://a.com/merchant-review-page"
    },
    "storeId": "amzn1.application-oa2-client.8b5e45312b5248b69eeaStoreId",
    "scopes": ["name", "email", "phoneNumber", "billingAddress"],
    "deliverySpecifications": {
        "specialRestrictions": ["RestrictPOBoxes"],
        "addressRestrictions": {
            "type": "Allowed",
            "restrictions": {
                "US": {
                    "statesOrRegions": ["WA"],
                    "zipCodes": ["95050", "93405"]
                },
                "GB": {
                    "zipCodes": ["72046", "72047"]
                },
                "IN": {
                    "statesOrRegions": ["AP"]
                },
                "JP": {}
            }
        }
    }
}  Code language: JSON / JSON with Comments (json)

このjsonのcheckoutReviewReturnUrlがコールバックURLです。本番環境、ステージング環境、開発環境など、ホストURLが違うので、それぞれのURLごとに、payloadを用意する必要があり、少々面倒です。

(2)あらかじめターミナルで、payload用のsignature(署名)を作ります。Amazon Pay の API を叩いて返ってくるまで、約1秒かかりました。

(3)payloadとsignatureをボタン描画用のjavascriptに記述します。

payloadとsignatureはgitにcommitしてもいいの?

問題ないわ

秘密鍵はgitにcommitしてもいいの?

ブッブー、だめよ

gitにcommitするときは、パスフレーズ付きにしてね

billingAddressがnullになるときとは?

checkoutSessionのresponseをjsonデコードします。

キー説明
paymentPreferences支払い方法
billingAddress請求者情報
shippingAddress届け先情報

これまで、ECサイト側では、注文者情報、お届け先情報どちらもshippingAddress から取得していました。

これで、EC2サイト側の注文者情報をbillingAddressから取得できるようになりました。

ところが、billingAddress が null で返ってくる場合があります。

Amazonアカウントにクレジットカード登録がなく、Amazonギフト券しかない場合、
billingAddress に null が返ってきました。

セラーセントラルのSandbox用アカウントでは、この「クレジットカード登録がなく、Amazonギフト券のみ」に設定する方法が見つかりませんでした。

ふだん使っている本物のAmazonアカウントで試すことにしました。

(1)まず、Amazonアカウントに、Amazonギフト券をチャージしておきます。クレジットカードで購入するのが簡単です。

購入してもすぐにチャージされないので、数分待って、チャージされたことを確認します。

(2)次に、Amazonアカウントのクレジットカード情報を全て削除します。すでに購入済みの商品には影響しません。

すると、このAmazonアカウントは、支払い方法がAmazonギフト券だけとなります。

(3)ECサイトの開発環境で、本番用のPayAndShipボタンを表示するようにします。これが少々手間です。sandboxフラグをfalseにして、payload、signatrueを作り、しかるべきファイルにコピペします。

デバッガーを有効にします。

(4)ECサイトで商品をカートにいれて、PayAndShipボタンをクリックします。Amazonギフト券だけとなったAmazonアカウントでログインします。

(5)PhpStormのデバッガーで見ていると、billingAddressがnullでした。

クレジットカードに請求しないから、かしらね。

(6)開発環境のPayAndShipボタンのpayload、signatureを元に戻しておきます。

billingAddressのnullチェックは忘れないようにね

タイトルとURLをコピーしました