stripe でサブスクリプション2023

新サイトにサブスクリプション決済を導入する際、stripe の Checkout の実装方法が新しくなっていたのでメモ。

旧バージョンの書き方

新バージョンへの移行方法

Checkout 移行ガイド
Checkout のレガシーバージョンから新バージョンに移行する方法は以下のとおりです。
https://agohack.com/stripe-checkout-beta/

1.checkout session を作成

Stripe の Checkout セッションは、決済ページで顧客に対して表示されるものをプログラムで表現したもの。マーカーで引いた部分は、顧客が決済後にこちらのページに戻って来る際、データが引き継がれる。決済した顧客を特定するデータを入れておくといい。

$checkout_session = \Stripe\Checkout\Session::create([
'line_items' => [[
# Provide the exact Price ID (e.g. pr_1234) of the product you want to sell
// 'price' => '{{PRICE_ID}}',
'price' => 'ダッシュボードで作った price_id',
'quantity' => 1,
]],
'mode' => 'subscription',
'subscription_data' => [
'metadata' => [
'temp_hash' => 'temp_hash_test',
],
],
//データベースの会員ID
'client_reference_id' => $kaiin_id,
'customer_email' => 'aaaaa@example.com',

'success_url' => $YOUR_DOMAIN . '/join/signup_success.php',
'cancel_url' => $YOUR_DOMAIN . '/join/signup_cancel.php',
]);
header("HTTP/1.1 303 See Other");
header("Location: " . $checkout_session->url);

2.webhook の設定

顧客が決済したことをこちらが把握できるようにするために、webhook の設定をする。ダッシュボードから webhook のエンドポイントを登録して、エンドポイントとした phpファイルに受け取り後の処理を記述。

最低限検知が必要なのは以下の二つのイベント。

【Stripe】ダッシュボードで作成した商品のCheckout決済を実装する | 野良人(のらんど)
決済サービスのStripeでは様々な方法で決済を導入できますが、ここではダッシュボードで作成した商品をCheckoutで決済させるパターンの実装をいろいろ検討します。ダッシュボードで商品を作成事前にダッシュボード上で商品→料金を作成しておきます。Checkout クライアント専用組み込み のCheckout スニペット...
  • checkout.session.completed
  • invoice.payment_failed
Checkout で注文のフルフィルメントを実行する
顧客が Stripe Checkout または Stripe Payment Links で支払った後に、注文のフルフィルメントを実行する方法をご紹介します。

checkout.session.completed は、注文のフルフィルメントを実行するタイミングで必要。通知を受け取ったら、データベースへの登録や顧客へ登録完了のメールを送るなどの処理をする。

invoice.payment_failed は決済が失敗したときに発生。カード変更等、何らかの処理を顧客に依頼する。

エンドポイントをまとめたページ。

Stripeサブスクリプション契約時のおすすめWebhook Endpoints 5点
StripeのWebhookには、100個以上のEndpoint(エンドポイント)があります。この中からお好きなポイントを選び、管理者へのメール通知などのイベントを設定できます。たくさんあるのは便利ですが、「一体、どのEndpointを選択

3.カスタマーポータルを設定する

stripe のテストカード番号一覧

Test payment methods
実際に資金を移動することなく、Stripe の実装を検証するには、テストカードを使用します。支払いの成功と拒否、カードエラー、不審請求の請求、銀行認証など、さまざまな国際的なシナリオをテストできます。カード以外の決済手段とリダイレクトをテストすることもできます。
タイトルとURLをコピーしました