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


関連記事

RubyでOSM Nominatimを使ってみた

1 はじめに2 導入3 検索3.1 建物名による検索の実装例3.2 住所による検索の実装例4 リバースジオコーディング4.1 実装例5 住所の整形6 Open Street Map Nominatim ...

https-portalで既存のdocker環境をhttps化

1 はじめに2 https-portalとは3 設定ファイル3.1 docker-compose.yml3.2 default.conf4 説明4.1 docker-compose.yml4.2 de ...

Firestoreのルール設定とdumpやrestoreが簡単に行えるfsrpl

1 はじめに2 Firestoreのルール設定2.1 全て許可2.2 本番環境でのルール設定例3 fsrpl3.1 fsrplとは3.2 インストール3.3 秘密鍵3.4 copy3.5 開発環境から ...

Google

【Google Invisible reCAPTCHA】Railsサイトにキャプチャ導入

1 はじめに2 reCAPTCHAとは3 Site keyとSecret keyの取得4 Rails gemの導入5 サイトへの組み込み6 さいごに はじめに こんにちは、最近休みなく仕事をいただいて ...

MyCoachのDocker環境を変えてみた

1 はじめに2 なんで改修しようと思ったか3 構成3.1 使用するコンテナ3.2 各Dockerfile3.3 docker-compose.yml3.4 Unicorn3.5 database.rb ...

フォロー

follow us in feedly

blog-page_side_responsive

2020年7月
 1234
567891011
12131415161718
19202122232425
262728293031 

アプリ情報

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