こんにちは、Ryohei(@ityryohei)です!

本記事では、Stripe Payment Linksで作成したお支払いリンクを使って、決済完了後にサンクスページでCheckoutのsession_idを取得する方法をご紹介しています。

Stripe Payment Linksで決済完了後に実行したい処理があるから指定したサンクスページでsession_idを取得したいな。良い方法ないかな?

上記の疑問にお答えします。

では、解説していきます。

Stripe Payment Linksとは

Stripe Payment Linksは、WEBサイトがなくても商品を販売する支払いページを作成することができるサービスです。管理画面(ダッシュボード)で販売したい商品情報を登録し、リンクを発行するだけで商品の支払いをするページを作成することができます。作成した支払いページのリンクは、WEBサイトはもちろんメールやSNS等でも利用することができます。

参考:https://stripe.com/jp/payments/payment-links

ここではStripe Payment Linksで発行したリンク(URL)にsession_idを設定し、サンクスページでsession_idを取得する方法をご紹介します。

Stripe Payment Linksでサンクスページを設定する

Stripe Payment Linksでは、確認ページという名称で任意のサンクスページを設定することができます。Stripeにサインインし、「支払い」>「支払いリンク」に移動して、下記画像内の赤枠から設定できます。

「支払いリンクを編集する」を開く

「支払いリンクを編集する」から「確認ページ」を選択する

上記の確認ページにURLを指定することで、決済完了後に任意のページにリダイレクトさせることができます。また、こちらのURL欄にパラメータを設定することで、サンクスページ(確認ページ)にsession_idを渡すことができます。

サンクスページにsession_idを持たせてリダイレクトする

サンクスページにsession_idを持たせてリダイレクトするには、下記のStripeのテンプレート変数をURLに含める必要があります。

{CHECKOUT_SESSION_ID}

実際に確認ページのURLとして設定する際は下記のような形式にします。

https://into-the-program.com/thankspage/?session_id={CHECKOUT_SESSION_ID}

上記を設定することでサンクスページにStripeのsession_idを渡すことができます。後は取得したsession_idからStripeClient等でセッションオブジェクトを取得し、メールアドレスや決済金額といった決済情報を取得することができます。下記ページで解説していますので、あわせてお読みください。

現状パラメータ名は自由に指定することができますが、値ついては大文字じゃないと動作しないようですのでお気を付けください。

参考:https://stripe.com/docs/payments/payment-links#change-confirmation-behavior

最後に

Stripeにはwebhookという機能が備わっており、決済時の各ポイントで発生するイベントから任意のタイミングで処理を実行できる環境が用意されています。webhookを使えば「このイベントのタイミングでこの処理を実行だ!」といった設計が可能ですが、決済完了した際に情報を受け取ってDBに登録したりメールを送信するようなシンプルな処理であれば本記事の内容でも十分実現可能です。もし似たようなケースであれば、本記事の内容を参考に実装してみてくださいね。

以上、Stripe Payment Linksの決済後にサンクスページでsession_idを取得する方法のご紹介でした!

この記事を書いた人

Ryohei

Webエンジニア / ブロガー

福岡のWeb制作会社に務めるWebエンジニアです。エンジニア歴は10年程で、好きな言語はPHPとJavaScriptです。本サイトは私がインプットしたWebに関する知識を整理し、共有することを目的に2015年から運営しています。Webに関するご相談があれば気軽にお問い合わせください。