Server

Laravel Cashierでサブスクリプションを実装する

投稿日:2020年7月8日 更新日:

はじめに

Laravel Cashierは Laravel公式のパッケージで、Stripe決済に必要なバックエンドの実装を肩代わりしてくれるパッケージです。
今回は、支払い方法の登録、サブスクリプションの作成について紹介します。

Stripeの準備

はじめに、Stripeでアカウントを作成します。
管理画面で、[開発者]>[APIキー]にある、「公開可能キー」と「シークレットキー」を控えておきます。

Laravel Cachierの初期設定

インストール

composerを使用してインストールします。

$ composer require laravel/cashier

インストール後、必要なマイグレーションファイルが追加されるため、マイグレーションを実施します。

$ php artisan migrate

APIキーの設定

envファイルに、控えておいたAPIキーを設定します。

Userモデルへの実装

Userモデル、 Billable トレイトを使用するようにします。
これにより、Webサイトの利用者が、課金・決済することができるようになります。

支払い方法の登録

支払い方法の登録

コントローラから実装していきます。

次に、ビューです。

Laravelの公式ドキュメントのソースコードをベースに作成しています。
支払い情報を登録する際は、コントローラー側で、 $user->createSetupIntent() を呼び出し、結果をそのままビューに渡します。
ビュー側の登録ボタンでは、 <button id="card-button" data-secret="{{ $intent->client_secret }}"> となっており、シークレットを設定します。

ビュー側は、基本的にStripe JS SDKを使用します。カード情報はStripe側に登録させて、Laravel側にはトークンのみを受け取るようにします。
支払い情報は、Stripe顧客を作成しないと登録できないため、先に作成した上で、カード情報を登録します。

サプスクリプション

サブスクリプションを作成するには、 $user->newSubscription() メソッドを使用して作成します。
コントローラーのコードです。

newSubscription() メソッドの第一引数には、サブスクリプション の名前を付けます。この名前は、Laravelアプリ内のsubscriptionテーブルで管理されるもので、後からサブスクリプション の状況を確認するときにも使用します。
プランIDは、Stripeに登録済みのプランIDを指定する必要があります。
Stripe管理画面で商品を登録し、価格を登録すると表示される「API ID」を指定してください。

サブスクリプション状況を確認するには、 $user->subscribed('default') とすることで、確認することができます。

試用期間

試用期間を設定したい場合は、サプスクリプション作成時に設定します。

サブスクリプション作成時に、 trialDays() メソッドを使用することで、試用期間を設定できます。
試用期間を設定すると、Stripe側で請求日が試用期間後の日付となり、その日以降は自動的に請求が発生します。

おまけ

Laravel Cashierには、Stripe PHP SDKがそのまま入っているため、直接使用することもできます。
例えば、サブスクリプション作成時に必要となる、プランは、Stripe SDKを使用して動的に増やすこともできます。
プランを作成し、そのプランIDを使用してサブスクリプションを作成するサンプルコードです。

さいごに

いかがでしたか。Laravel Cashierを使用すると、Stripeの実装に必要なバックエンドの実装が、かなり軽減されることが分かりました。次回は、Laravel CashierのWeb hookや、複数の支払い方法を管理する方法について紹介したいと思います。

おすすめ書籍

PHPフレームワークLaravel入門 第2版 PHPフレームワーク Laravel実践開発 PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応 よくわかるPHPの教科書 【PHP7対応版】

blog-page_footer_336




blog-page_footer_336




-Server
-,

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA


関連記事

MyCoachのDocker環境を変えてみた

はじめに MyCoachのアプリがリリースされました。 アプリとは別で、Web版のMyCoachも作成しておりました。 実際のコンテンツの方はこちらをご覧ください。 (現在はまだβ期間として運用してお ...

DockerでRuby2.5、Rails5.2betaの環境をつくる【Compose file v3】

はじめに 明けましておめでとうございます。 年末年始休みに、少しRuby 2.5.0、Rails 5.2 beta2を触りました。 その際にDockerを使って環境を作成したので、そちらに関して記載し ...

aws

AWS Lambdaの関数スケーリングとローカル実行

はじめに 前回の記事では、AWS LambdaとSQSを組み合わせるシンプルな方法を紹介しました。 今回は引き続きLambdaについて、関数スケーリングとローカルでの実行について紹介します 関数スケー ...

aws

AWS LambdaとSQSでキューを処理する

はじめに 前回の記事ではLambdaとAPI Gatewayを組み合わせる方法を紹介しました。今回の記事では、引き続きLambdaの掘り下げで、Amazon SQSと組み合わせてキューを処理する方法を ...

aws

EC2インスタンスのメモリとディスクのメトリクスモニタリングでハマったこと

はじめに AWSのEC2インスタンスでディスク容量やメモリの使用率をCloudWatchで監視をする際に、ハマったポイントをご紹介したいと思います。 メモリとディスクのメトリクスモニタリング EC2の ...

フォロー

blog-page_side_responsive

2020年7月
日 月 火 水 木 金 土
 1234
567891011
12131415161718
19202122232425
262728293031  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。