通販やメディアサイトなど、会員機能を持つアプリケーションで決済機能を組み込む場合、Payment Linksを利用すると「メールアドレスの二重入力」が発生します。
StripeのPayment Links / Checkoutでは、メールアドレスの入力が必要です。
が、会員システムを持つアプリケーションでは、顧客はすでにメールアドレスをアカウント作成時に入力しています。
そのため、Payment Linksを利用した支払いリンクをそのまま組み込むと、決済時にもう一度メールアドレスの入力を要求されてしまいます。
この状況を解決するのに利用できるのが、prefilled_email
クエリパラメータです。
支払いリンクにprefilled_email
クエリでメールアドレスを追加する
通常の支払いリンクは、https://buy.stripe.com/test_xxx
のような形です。
ここにprefilled_email
クエリを追加しましょう。
https://buy.stripe.com/test_xxxx?prefilled_email==test%40example.com
このアドレスにアクセスすると、決済ページのメールアドレスが入力済みの状態に変わります。
これによって、顧客に再度メールアドレスの入力を求める必要がなくなります。
メールアドレスはエンコードして渡そう
JavaScriptなどでリンクを動的に生成する場合、メールアドレスはエンコードして設定しましょう。
console.log({
url: `https://buy.stripe.com/test_xxxx?prefilled_email=${encodeURIComponent('test+123@example.com')}`
})
メールアドレスは変更できることに注意
Webhookなどを利用して、メールアドレスから顧客データを取れるようにしたい場合、「顧客がメールアドレスを変更する可能性がある」ことに注意しましょう。
事前に入力prefill
するだけのクエリですので、クエリに設定したアドレスで注文されるとは限りません。
もし追跡を行いたい場合は、client_reference_id
クエリを追加で設定することをおすすめします。
[PR] Stripe開発者向け情報をQiitaにて配信中!
- [Stripe Updates]:開発者向けStripeアップデート紹介・解説
- ユースケース別のStripe製品や実装サンプルの紹介
- Stripeと外部サービス・OSSとの連携方法やTipsの紹介
- 初心者向けのチュートリアル(予定)
など、Stripeを利用してオンラインビジネスを始める方法について週に2〜3本ペースで更新中です。
-> Stripe Organizationsをフォローして最新情報をQiitaで受け取る