Laravel8とSTRIPEの連携で $paymentMethod が設定できず悩んでいる方へ

LaravelとStripe API連携

LaravelのCashierがバージョンアップした際、それまでの機能が一部、使えなくなりました。

そのため、少し前の記事で解説されている方法を使うと「$paymentMethodがない」と言われ、エラーになります。

そうとも知らず、わたしは無駄に試行錯誤をしてしまいました><

同じように、このトラップにかかってしまった方のために、原因と対策を記事にします。

じゅんこ
じゅんこ

この経験が、他の方の役に立てば、少しは報われます。

Laravel8とSTRIPEの連携で $paymentMethod が設定できず悩んでいる方へ

まずは、なぜこれまでの方法が使えなくなったのか、問題の原因から説明していきますね。

なぜこれまでの方法が使えなくなったのか

Laravelのマニュアルでは、サブスクリプションを作成する際のコードとして、下記が提示されています。

$user = User::find(1);
$user->newSubscription(‘default’, ‘price_premium’)->create($paymentMethod);

この $paymentMethodは、少し前までなら、下記のようにコントローラーに記述すればOKだったようです。

$token = $_POST[‘stripeToken’];
$user = User::find($id);
$user->newSubscription(‘main’, ‘Plan Id’) ->create($request->stripeToken);

検索をかけると、このようにサブスクリプション作成を行うよう解説しているものが結構あります。

ただ、2019年8月にCashier10がリリースされた際、上記の方法は使えなくなりました。

がんばって行おうとすると「$paymentMethodがない」「無効だ」といったエラーがでます。

対策① Cashierを古いバージョンで使う

ではどうすれば良いのかですが、一番シンプルなのは、Cashierを古いバージョンで使うことです。

通常は、下記のコードによって最新版の cachierパッケージをインストールできます。

$ composer require laravel/cashier

このとき、バージョンを指定することで、古いcashierをインストールできます。

$ composer require “laravel/cashier”:”~9.0″

対策② balde.phpファイル側で$paymentMethodを設定する

もうひとつの方法はblade.phpファイル側で$paymentMethodを設定しておくこと。

こちらのほうが正当法ですが、面倒です。

ざっとコードをお見せします。

ビュー表示用のコントローラー

まずビューを表示させるためのコントローラーに、次のようにいれておきます。

ビューのフォーム部分

ビューのフォーム部分は、下記のようにしておきます。

なお外見はすごくテキトウです^^;

ご了承ください。

ビューのJavascript部分

Javascript部分は、次のようになります。

フォーム送信後のコントローラー

フォームをポストした後、コントローラーの処理は下記の感じになります。

$planは別途定義してください。

より詳しい手順はこちらをどうぞ!

さいごに

今回の件で、少し前に書かれた方法でも、既に使えない可能性があることを改めて学びました。

正直、分かったときはガックリきましたが Σ( ̄ロ ̄lll)ガーン

今後も、色々な変化は起こるかもしれません。

このエラーのもとになった変更は、そもそも、認証に関する規制が強まったことによって起こっています。

詳しく解説してみたので、気になる方は、こちらの記事をお読みください。

別の記事でもLaravelとStripe連携を解説しているので、トラブルなどがあれば、関連記事をチェックしてくださいね。

LaravelとStripe API連携

【Laravelの教科書・プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。 基礎編は無料でプレゼント中です♪
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

最新のLaravel10版テキストに加え、Laravel8版・Laravel9版もご用意しています♪

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

最新のLaravel10版テキストに加え、Laravel8版・Laravel9版もご用意しています♪

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravel10対応

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。

書籍の詳細を見てみる

Laravelの本を書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravel10対応

Laravelの使い方を分かりやすく解説した書籍を出版しました。書店やAmazon等のオンラインショップにて販売中です。

書籍の詳細を見てみる


Laravelの教科書限定コミュニティ【Laravelの教科書ラボ】はじめました。
セミナーで、StripeやChatGPT連携、デバックなど実践スキルを分かりやすく学べます。

ラボの案内を見てみる

Twitter始めました。
40代からプログラミング!
タイトルとURLをコピーしました