LaravelとStripeを連携させてサブスクリプション申し込みフォームを作成する際、Stripeで作成したクーポンを設定できます。
具体的な手順を4ステップで解説していきます。
なおLaravelの公式マニュアルにも掲載されていますが、結構、ざっくりな説明です^^;
前後の処理も組み入れて、説明していきますね。
LaravelとStripeの連携:手軽にクーポンを設定する方法
すでにLaravelとStripeの連携があるとして、次のステップでクーポンを設定していきます。
- Stripeで初回500円引きクーポン作成
- クーポンAPIをLaravelに設定
- フォームにクーポン入力欄を作成
- コントローラーにクーポンを設定
Stripeで初回500円引きクーポン作成
まずはStripeにログインし、左側のメニュー 商品/クーポンから、クーポンを作成しましょう。
【定額割引】で【\500】としておきます。
作成後、クーポン名をクリックすると、真ん中あたりに【プロモーションコード】が表示されます。
そのなかに【API ID】があります。
こちらをコピーしておいてください。
クーポンAPIをLaravelに設定
次に、Laravelのプロジェクトを開きます。
.envファイルにクーポンコードを貼り付けておきます。
さらに app/config/services に、.envファイルへのリンクを貼っておきます。
1 |
'coupon'=>env('STRIPE_COUPON'), |
.envとconfigの設定については、こちらの記事で詳しく解説しているので、気になったら、併せて読んでみてくださいね。
フォームにクーポン入力欄を作成
次にフォームにクーポン入力欄を作成します。
既にあるフォームに、次のようにクーポン用のinputを追加してください。
1 |
<input type="test" class="form-control col-sm-5" name="coupon"> |
コントローラーにクーポンを設定
次に、コントローラーにクーポンを設定します。
先ほどのフォームで name=”coupon”としたので、クーポン情報は $request->input('coupon') で取り出せます。
このクーポンコードが正しいかIF構文を使って照合し、合っていれば、クーポンコードを使って、新規サブスクリプションを作成していきます。
このステップは、次のようにコントローラーに記述できます。
1 2 3 4 5 6 7 8 9 10 11 |
// 入力したクーポンコードを$couponに代入 $coupon=$request->input('coupon'); // $couponがクーポンコードとあっているか照合 if($coupon==config('services.coupon')){ // あっていれば、クーポンを使ってサブスク作成 $user->newSubscription('default', $plan) ->withCoupon($coupon) ->create($paymentMethod) } |
これで、クーポンを使ってサブスクが可能になりました。
フォーム投稿後、Stripeにログインし、支払いをチェックしてみてください。
成功していれば、割引された金額が表示されています。
補足:必要な機能について
今回はざっくりと機能を紹介しました。
実際には、「クーポン番号が間違えた場合」や「クーポンがない場合」の処理も必要になります。
IF構文で条件分岐させてください。
またクーポン入力後に割引後の金額を表示させたりしたほうが、分かりやすいかと思います。
今回は雑なフォームをお見せしましたが^^; お好みに合わせて変更してください。
他サイトのクーポン入力欄なども参考になります。
個人的には、Udemyという学習サイトのクーポン入力欄が好きです。
おまけ:クーポンにでデメリットもあるかも
ちなみに「クーポンを入れると離脱率が上がる」という話もあります。
どうやらユーザーはクーポン入力欄を見ると、「どこかにクーポンが落ちているんじゃない!?」と思って、他のサイトを探しにいってしまうからだそう。
すごく、分かる気がする。
クーポンコードは販売促進機能がありそうですが、一筋縄ではいかないですよね。
このあたりも考えつつ、LaravelとStripeで素敵な決済機能を作っていきましょう♪