LaravelのプロジェクトをStripeと連携させると、最新のオンライン決済機能を利用できます。
「Laravelにサブスクリプション申込機能をつけたい」
「キャンセルや払い戻しなどが手軽にできる決済機能を使いたい」
「サブスク申込かどうかでユーザーへの表示を変えたい」
こんなことをご希望の方にぴったりです。
ただ正直、LaravelとStripeの連携設定は、メンドウな部分もあります…
このブログでは、私自身の経験をもとに、連携の方法を解説しています。
色々とご紹介していくので、あなたの悩みや関心に合うものをご一読ください。
LaravelとSTRIPE決済システムの連携方法
難易度別に★をつけています。
一番難しいものは、★を3個つけています。
難しい、というより、時間がかかるといったほうが良いかも。
お時間があるときにお試しください。
Laravelにサブスクリプション申込機能をつける ★★★
まずはいちから連携する方法を解説します。
こちらの記事では、10個のステップでLaravelとStripeを連携させ、サブスクリプション申込機能を付ける方法を解説しています。
「10ステップって多すぎ」と思われるかもですが^^;
基本の連携ができれば色々なワザが使えるので、最初の手間も取り返せます。
30分でLaravelとSTRIPE連携を試す方法 ★☆☆
「10ステップなんてメンドウ」
「とりあえずStripeがどんなものか知りたい」
という場合は、こちらの記事の手順で簡単にStripeとの連携を見れます。
こみいったことはできませんが、雰囲気を見たい方は、まずはこちらをお試しください。
Webhookを設定してイベントごとに自動処理を設定 ★★☆
Webhookを設定すれば、任意のタイミングで、設定したイベントを実行できます。
たとえばユーザーが支払い方法やプランを変更したときに、管理者に自動で通知がいくように設定することも可能。
Webhookを実行するにはHTTPS通信が必要になるため、テスト用にローカル環境で使うには、前準備が必要です。
Windows環境で、ローカル上でWebhookを使えるようになる手順を、下記の記事で解説しています。
サブスクキャンセル処理を入れる方法★★★
サブスクのキャンセル処理を入れる方法はこちら。
Stripeのカスタマーポータルを使う方法、Laravel上に埋め込む方法、Webhookを利用する方法の3つがあります。
キャンセル処理を入れる際にお役立てください。
手順は面倒なのですが他の処理でも応用が利く方法なので、知っておくと便利です!
おまけ① Stripe CliをWindowsに設定する方法
上記では、NGLOKを使ってWebhookのテストを行う方法を解説しています。
ただStripeのWebhookをテストする際に、Stripe Cliを使う方法があります。
Windows環境で、Stripe Cliをインストールする方法はこちらにまとめました。
わたしはNGLOKを使っており、このほうが便利だと感じていますが。
おまけ② Webhookのエンドポイント5選
なおStripeのWebhookは100個以上あります。
こんなにいっぱいの中から、どれを選べばよいのか、判断に悩みますよね。
契約時に使われるエンドポイントの意味と、おすすめのエンドポイント5点を表にしました。
エンドポイント設定に悩んだら、参考にしてください。
サブスク加入の有無で表示や動作を変更する ★★☆
既存のお客様と、まだ未加入のお客様で、サイトの表示や動作を変えたい時もあります。
Laravelのミドルウェアを使えば、サブスクに加入しているかどうかで、表示や動作を変更できます。
詳しい設定方法はこちらをどうぞ。
Stripeクーポンを設定して割引をする ★★☆
Stripeはパーセンテージごとや、初回時のみ適用可能、期限付きのものなど、様々なな条件のクーポンを手軽に作成できます。
いざ作成したクーポンを、ユーザーにどのように使ってもらうか。
Laravelで申込フォームを作成する際のクーポンの組み入れ方は、下記記事で解説しています。
LaravelからStripeのカスタマーポータルへ誘導 ★☆☆
Stripeは、ユーザーごとのカスタマーポータルサイトが利用できます。
ポータルサイトを通じて、ユーザーは過去の支払い履歴も確認できますし、支払いに利用するクレジットカードの変更も可能。
設定によってユーザー自身でプラン変更もできるので、管理者側の手間を減らせます。
LaravelのサイトからStripeカスタマーポータルへのリンクの貼り方は、こちらの記事をご覧ください。
LaravelとStripeの連携をテスト時に使えるデータ ★☆☆
LaravelとStripeの連携をテストする際に使えるテスト用クレジットカード番号をまとめました。
認証エラーが起こる番号などもあるので、テストにご活用ください。
エラー時のHTTPステータスコードの意味もまとめてあります。
エラーの原因がカード側にあるのか、サーバーのコードにあるのかも、HTTPステータスコードの番号から判断できます。
エラー対策編
LaravelとStripe連携時のエラー対策はこちら。
payment methodがないと言われる場合 ★★★
LaravelがStripeと連携する際、Cashierパッケージを使います。
このパッケージはバージョン10の時から、連携方法が変わったようです。
以前の方法をそのまま用いると「payment methodがない」と言われちゃいます。
どのように解決するか、こちらをご覧ください。
LaravelでStripeのAPIキーが読み込めない時の対策 ★★☆
LaravelとStripeを連携させるには、StripeのAPIキーをLaravelの.envファイルに入れる必要があります。
そのあと、configで.envの情報を読み込みます。
コントローラーやビューでは、configヘルパ関数を使って、APIキーを呼び出します。
ただ、この連携がうまくいかず「APIキーが無効」となってしまうことも。
下記にAPIキーが読めない場合の3つの対策をまとめたので、エラー時には、症例に合った対策をお読みください。
Stripe PaymentMethod instanceエラー ★☆☆
なお、Stripeは既存のJavascriptファイルと競合してエラーになることもあります。
こんなエラーがでたら、app.js ファイルへのリンクタグの場所を変えてみてください。
詳細はこちらで解説しています。
Stripeの一般的な知識について
Laravelとの連携はおいておいて、そもそもStripeってどんなものか?
Stripeそのものに関する記事をこちらにまとめました。
オンライン認証の厳格化とStripeの対応
現在、オンライン決済が増えるにつれて、詐欺事件も増えています。
そのため、ヨーロッパではSCAという規制によって、認証方法が厳格化されています。
日本でも3Dセキュアへの対応が求められています。
Stripeのシステムは、こういった規制や変化にどう対応しているのか、こちらの記事で解説しています。
個人的には、このあたりは知っておくべき重要ポイントかと思います。
PaypalとStripeの比較
そもそも論ですが、決済システムとしてStripeは最適なのか。
オンライン決済の王者、Paypalと何が違うのか。
両者の比較を、手数料・シェア・参考資料という3つの点でまとめてみました。
Stripeの本番アカウント作成時の質問への回答方法
Stripeは本番用アカウントを作成する際、「改正割販法に関連する質問」に答えねばなりません。
普通は「なにそれ?」って思いますよね^^;
質問の意味と答え方を、こちらに紹介しました。
さいごに
以上、ざっと16個の記事をご紹介しました。
記事は、また更新したり増やしていきます。
ぜひ、あなたのLaravelサイトに最適な決済システムを搭載するのにお役立てください。
★2021年5月9日追記
「no attached payment エラー対策」と、「決済エラーのハンドリング方法」を追加したので、記事の数が18個になりました。
あわせて参考にしてください。
コメント
じゅんこさま
お詳しい情報にまとめて下さり、大変勉強になります!
質問なのですが、よろしいでしょうか?
Stripe決済時に、備考欄などに何か文字をプログラム側で入力して送信することは可能でしょうか?
やりたいこととしては、例えば
AというサイトにStripe決済ページを置く
Pというサイトにも同様にStripe決済ページを置く
それぞれ、決済時にプログラム内で「決済メモとして文字を入れ込みStripe側に送信する」
それにより、どちらのサイトから決済されたのかを知ることができる
というシステム構築がしたいのです。そのために、Stripeの決済APIにメモや備考欄をセットできるメソッドをご存知でしたらぜひお教えいただけませんでしょうか?
たけのこさん、
ありがとうございます!
ご質問の件ですが、メタデータやデスクリプションといったものが使えるかと思います。
Laravelのマニュアルにもありますが、下記のようなコードを使って、決済時にメタデータを追加できますよ。
—
$user->newSubscription(‘default’, ‘price_monthly’)->create($paymentMethod, [
‘email’ => $email,
], [
‘metadata’ => [‘note’ => ‘Some extra information.’],
]);
参考URL:https://readouble.com/laravel/8.x/ja/billing.html