【Laravel5.8+Stripe⑨】サブスクリプションプラン変更機能の実装
こちらの連載記事では、LaravelとStripeを使用して企業サイト兼Eコマース(ECサイト)を作成していきます。
Laravelのプロジェクト作成からStripeの実装まで行い、最終的に単発決済・サブスクリプションの実装までを目指します。
シリーズ
【Laravel5.8+Stripe⓪】ECサイト作成チュートリアル概要 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe①】ベースプロジェクトの作成 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe②】メールフォームの実装 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe③】ユーザー認証機能のカスタマイズ - Laravelとねころっけくん5.8
【Laravel5.8+Stripe④】ディスカウントページを作成する - Laravelとねころっけくん5.8
【Laravel5.8+Stripe⑤】Laravel CasherとStripeを導入して管理者権限を設定する その1 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe⑥】Laravel CasherとStripeを導入して管理者権限を設定する その2 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe⑦】サブスクリプション決済の作成 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe⑧】請求書ダウンロード機能の実装 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe⑨】サブスクリプションプラン変更機能の実装 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe⑩】サブスクリプション中止機能の実装 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe11】Webhookの実装 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe12】クーポン機能を実装する - Laravelとねころっけくん5.8
【Laravel5.8+Stripe13】ショッピングカートの実装 - Laravelとねころっけくん5.8
ちなみにこちらの記事は、Easy E-Commerce Using Laravel and Stripeという書籍をもとに執筆しています。
今回は、サブスクリプションプランの変更機能を実装していきます。
サブスクリプションプラン変更機能の概要
顧客がサブスクリプションプランをアップグレードまたはダウングレードしたい場合があります。Laravel Cashierでは、Userモデルのswap()メソッドを使用することにより、簡単に実装することができるようになっています。
サブスクリプションプラン変更機能の実装
まずはプラン変更用のルーティングから行います。
Route::post('plans/swap','SubscriptionsController@swapPlans')->name('plans.swap');
次にSubscriptionControllerへアクションを追加します。
/app/Http/Controllers/SubscriptionsController.php
public function swapPlans(Request $request) { $planId = $request->get('plan_id'); if ($this->planNotAvailable($planId)) { return redirect()->back()->withErrors('Plan is required'); } Auth::user()->subscription('main')->swap($planId); return redirect()->back()->withMessage('Plan changed!'); }
View側にプラン変更フォームを追加します。
// 省略 @endforeach </table> {!! Form::open(['route' => 'plans.swap', 'class' => 'form-horizontal']) !!} <select name="plan_id" class="form-control" id="plan_id"> <option value="plan_FduAwOAXHAUV4D">Trial / $10 per month</option> <option value="plan_Fdu9EtdLJBzXnS">Regular / $30 per month</option> <option value="plan_Fdu92JzwGqspER">Premium / $50 per month</option> </select> <button type="submit" class="btn btn-default">Swap Plans</button> {!! Form::close() !!} @endsection
ただ、この状態だとエラーが出てしまいます。
nekorokkekun.hatenablog.com
そのため、/config/services.phpを改変します。
'stripe' => [ 'model' => \App\User::class, // ここを改変 'secret' => env('STRIPE_API_SECRET'), ],
これでサブスクリプションプラン変更機能の実装が完了しました。
連載記事
【Laravel5.8+Stripe⓪】ECサイト作成チュートリアル概要 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe①】ベースプロジェクトの作成 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe②】メールフォームの実装 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe③】ユーザー認証機能のカスタマイズ - Laravelとねころっけくん5.8
【Laravel5.8+Stripe④】ディスカウントページを作成する - Laravelとねころっけくん5.8
【Laravel5.8+Stripe⑤】Laravel CasherとStripeを導入して管理者権限を設定する その1 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe⑥】Laravel CasherとStripeを導入して管理者権限を設定する その2 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe⑦】サブスクリプション決済の作成 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe⑧】請求書ダウンロード機能の実装 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe⑨】サブスクリプションプラン変更機能の実装 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe⑩】サブスクリプション中止機能の実装 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe11】Webhookの実装 - Laravelとねころっけくん5.8
【Laravel5.8+Stripe12】クーポン機能を実装する - Laravelとねころっけくん5.8
【Laravel5.8+Stripe13】ショッピングカートの実装 - Laravelとねころっけくん5.8