ホームページ > バックエンド開発 > PHPチュートリアル > Laravel Cashierとのメンバーシップ

Laravel Cashierとのメンバーシップ

William Shakespeare
リリース: 2025-02-21 11:34:11
オリジナル
289 人が閲覧しました

Laravel Cashierとのメンバーシップ

このチュートリアルでは、Laravel Cashierパッケージを使用して基本的な有料メンバーシップWebサイトを作成することがどれほど簡単かを確認します。ここでアプリのデモを表示して、こちらからソースコードをダウンロードできます。

キーテイクアウト

laravelキャッシャーは、サブスクリプション請求、クーポンの取り扱い、サブスクリプションの交換、キャンセルグレース期間、請求書PDFの生成を管理することにより、基本的な有料メンバーシップウェブサイトの作成を簡素化します。 Laravelキャッシャーを既存のLaravelプロジェクトに統合するには、Composer経由でパッケージをインストールし、ユーザーテーブルに必要な列を追加し、APIキーをセットアップし、請求可能な特性をモデルに追加します。
    Laravel Cashierは、自動的に支払いを再試行することにより、失敗した支払いを処理できます。支払いが継続され続けると、サブスクリプションはキャンセルされます。
  • Laravel Cashierは現在、StripeとBraintreeのみをサポートしていますが、LaravelとPayment GatewayのAPIを十分に理解して他の支払いゲートウェイと連携するように拡張できます。
  • 作業環境のセットアップ
  • 開始するにはboilleplateプロジェクトを作成する必要があります。2つの異なる方法でそれを行うことができます。
  • プロジェクトフォルダーにGitHubリポジトリをクローンできます。
  • コンポーザーがインストールされていると仮定してください(詳細については、インストールガイドを確認してください)。
Composer Create-Project Laravel/Laravel Laravel_Membership - Prefer-Distを実行します。

次に、「Laravel/Cashier」を追加することにより、Laravel Cashierパッケージをプロジェクトに要求する必要があります。 その後、レジ係サービスプロバイダークラスをロードするようにアプリに指示する必要があります。 config/app.phpファイルでプロバイダー配列に「laravelcashiercashierserviceprovider」を追加することで、それを行うことができます。

注:クラスマップパッケージを更新するには、Composer Dump-Autoloadを実行する必要があります。 移行を使用してデータベースを作成する

Laravelの移行が初めての場合は、必ずドキュメントを確認してください。
    2つのテーブルを使用します:
  • テーブルの投稿:
  • - int id
    - 文字列タイトル
  • - long_text content
- bool is_premium

ユーザーテーブル:

- int id

- varchar(60)電子メール

- varchar(60)パスワード

Laravel Artisan Command Lineツールにより、移行クラスの作成と管理が簡単になります。

そして、スキーマ::このように見える必要なコードでコールバック関数引数を作成します

Laravel Cashierに請求可能なテーブルについて知らせるには、そのために特定の移行を作成する必要があります。 Laravel Cashierには、その目的のために組み込みの指揮官があります。

データベースを移行する準備が整いました

<span>php artisan migrate:make create_posts_table --create="posts"
</span><span>
</span><span>php artisan migrate:make create_users_table --create="users"</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

ユーザーテーブルを開くと、パッケージの移行が実行されたときに追加されたフィールドが追加されます。
- Stripe_Activeアクティブなサブスクリプションがある場合。
- Stripeサーバー上のStripe_IDユーザーID。
- stripe_planストライプサブスクリプションプラン。
- last_fourクレジットカード最後の4桁。
- 試用期間を指定した場合、trial_ends_at終了日は保存されます。
- subscription_ends_atサブスクリプションの終了日。

ここで、データベースをいくつかのダミーデータでシードして開始します。 githubの最終結果を確認してください。

ストライプ請求プロセス

支払いに対処することは首の痛みになる可能性があり、ストライプはそれに役立ち、カード番号などではなくトークンを使用します。 。

注:あなたの国でストライプがサポートされているかどうかを確認してください。しかし、そうでない場合でもテストに使用できます。

開始するには、最初にアカウントを取得する必要があります。 Stripeにはサブスクリプションの月額料金はありません。支払いを受けたときにのみ支払います。

今、アカウントを取得した後、アプリケーションの計画を作成する必要があります(毎月、毎年、銀、金…)。

Laravel Cashierとのメンバーシップすべてのフィールドは自明であるため、40ドルの費用がかかるゴールドメンバーシップと10ドルの基本メンバーシップを作成しましょう。彼らは毎月請求されます。

ユーザーテーブルに必要な列をすでに追加しましたが、Laravel Cashierにユーザークラスを請求クラスとして使用することを知らせる必要があります。

注:Billabletraitを使用しており、特性にはPHP 5.4以降が必要です。 アカウント設定> APIキーを作成し、テストシークレットキーをコピーします。

<span>Schema::create('posts', function(Blueprint $table)
</span><span>{
</span><span>    $table->increments('id');
</span><span>    $table->string('title');
</span><span>    $table->longText('content');
</span><span>    $table->boolean("is_premium");
</span><span>    $table->timestamps();
</span><span>});
</span><span>
</span><span>Schema::create('users', function(Blueprint $table)
</span><span>{
</span><span>    $table->increments('id');
</span><span>    $table->string('email', 100)->unique();
</span><span>    $table->string('password', 60);
</span><span>    $table->timestamps();
</span><span>});</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

billabletraitを使用することにより、ユーザーにアクセスできます:: setStripeKey(key)メソッドはコードのどこでも呼び出すことができますが、希望する方法はconfigディレクトリの下にservices.phpファイルを作成し、次のような配列を返すことです。これ:

GetStripekeyがキーをロードしようとすると、Stripekeyというプロパティが探しられます。見つからない場合は、サービスファイルを自動的にロードします。 Laravel Cashierとのメンバーシップページを作成します

物事をシンプルに保つために、数ページしか作成しません:

- サインアップ:ユーザーがメンバーシッププラン(ベーシック、ゴールド)でサインアップできる場所。
<span>php artisan cashier:table users</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
- ログイン:メンバーログインページ。

- アップグレード:基本的なメンバーシップからゴールドメンバーシップへのアップグレード。

- 投稿:単一の投稿ページを表示します

プロセスをスピードアップするには、Bootsnippを使用します。 githubリポジトリから最終コードを取得できます。

ログインページ:





ログインページには、基本的な電子メールとパスワードフィールドがあり、このようなログインコントローラーページがあります。

<span>php artisan migrate:make create_posts_table --create="posts"
</span><span>
</span><span>php artisan migrate:make create_users_table --create="users"</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

サインアップページ:

Laravel Cashierとのメンバーシップ

サインアップページには、計画するユーザーを割り当てるために使用されるサブスクリプション計画フィールドがあります。
また、クレジットカード番号、有効期限、CVCもあります。

先に言ったように、支払いまたは検証プロセスに対処する必要はありません。これらの値をStripeサーバーに渡して、充電と検証プロセスを処理します。

返品値は成功した場合のトークンです。そうしないと、ユーザーに表示できるエラーメッセージが表示されます。
フロントエンドコードがどのように見えるかを見てみましょう:

最初にJavaScript APIファイルを含め、次に、ストライプダッシュボードの設定からつかんだ公開キーを設定しました。 次に、コールバック関数を送信フォームに添付します(フォームIDがイベントハンドラーで使用されているものと一致していることを確認してください)。
<span>Schema::create('posts', function(Blueprint $table)
</span><span>{
</span><span>    $table->increments('id');
</span><span>    $table->string('title');
</span><span>    $table->longText('content');
</span><span>    $table->boolean("is_premium");
</span><span>    $table->timestamps();
</span><span>});
</span><span>
</span><span>Schema::create('users', function(Blueprint $table)
</span><span>{
</span><span>    $table->increments('id');
</span><span>    $table->string('email', 100)->unique();
</span><span>    $table->string('password', 60);
</span><span>    $table->timestamps();
</span><span>});</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
stripe.card.createtokenは2つの引数を受け入れます。最初の引数は、必要な値とオプションの値を持つJSONオブジェクトです。

必須値:


番号:セパレーターのない文字列としてのカード番号。

exp_month:カードの有効期限を表す2桁の数字。

    exp_year:カードの有効期限を表す2桁または4桁の番号。
  • オプションの値:
  • CVC:カードセキュリティコードは文字列として、CVC番号はオプションですが、詐欺を防ぐために推奨されます。
  • 名前:カードホルダー名。

address_line1:請求アドレスライン1.

    address_line2:請求アドレスライン2。
  • address_city:請求先住所市。
  • address_state:請求先住所状態。
  • address_zip:zipを文字列として請求します
  • address_country:請求住所国。
  • JSONオブジェクトの代わりにフォームオブジェクトを渡すことに気付くことができます。値を手動でつかむか、入力でデータストライプHTML5属性を使用することを選択できます。 。例:
  • stripe.card.createtokenメソッドに渡された2番目の引数は、応答を処理するコールバック関数です。
  • 障害の場合、Striperesponsehandlerは、ユーザーにいくつかの説明的なエラーを表示するために、一連のPayment_Errorsを備えた要素を見つけようとします。
  • 成功した場合、stripeToken Hidden入力はフォームに追加され、送信時に利用可能になります。
  • 追加オプション
トライアル期間:前に述べたように、新しいプランを作成すると、ユーザーが製品をテストするための試用期間を指定する選択肢があり、指定された期間が経過するまで請求されません。
<span>php artisan cashier:table users</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
クーポン:ダッシュボードメニューを介してクーポンを作成し、固定金額またはパーセンテージを指定できる他のいくつかの有用なオプションを使用します。

ここで、SignupControllerに移動して、これをどのように処理するかを確認しましょう。
<span>php artisan migrate:make create_posts_table --create="posts"
</span><span>
</span><span>php artisan migrate:make create_users_table --create="users"</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

検証プロセスをスキップして、物事をシンプルに保つ。

新しいユーザーを作成して保存した後、ユーザーを新しいメンバーシッププランに購読するオプションがあります。サブスクリプションメソッドは、既に登録されている計画を引数として受け入れます。これは、PlanInterfaceまたは文字列であり、Strapegatewayを返すことができます。

作成メソッドは、トークンをパラメーターとして受け入れます。 StripeTokenという名前で新しい非表示の入力値を渡します。
アップグレードページ:

Laravel Cashierとのメンバーシップアップグレードページは、次のようなアップグレードコントローラーに送信されます:

ユーザーが最初にログインしているかどうかを確認し、次に新しいプランで新しいサブスクリプションを作成し、スワップ方法を呼び出します。同じように。
<span>Schema::create('posts', function(Blueprint $table)
</span><span>{
</span><span>    $table->increments('id');
</span><span>    $table->string('title');
</span><span>    $table->longText('content');
</span><span>    $table->boolean("is_premium");
</span><span>    $table->timestamps();
</span><span>});
</span><span>
</span><span>Schema::create('users', function(Blueprint $table)
</span><span>{
</span><span>    $table->increments('id');
</span><span>    $table->string('email', 100)->unique();
</span><span>    $table->string('password', 60);
</span><span>    $table->timestamps();
</span><span>});</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

投稿ページ:

Laravel CashierとのメンバーシップPostControllerは、Post IS_PREMIUMのかどうかを確認します。もしそうなら、ユーザーが投稿を見ることができるゴールドメンバーであるかどうかをテストします。

もちろん、routes.phpファイルでは、認証されていないユーザーがページにアクセスできないようにするためのAuthフィルターを追加する必要があります。

ルートファイルは次のようになります:

<span>php artisan cashier:table users</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

その他の便利な方法

<span>php artisan migrate</span>
ログイン後にコピー
withcoupon:私たちは前に割引クーポンを作成する可能性があると言いました。私たちの例では、そうすることができます。

  • キャンセル:このメソッドを使用してサブスクリプションを簡単にキャンセルできますが、ユーザーがongraceperiodであるかどうかを確認して、すぐにブロックしないようにする必要があります。
<span>use Laravel\Cashier\BillableInterface;
</span><span>use Laravel\Cashier\BillableTrait;
</span><span>
</span><span>class User extends Eloquent implements BillableInterface {
</span><span>
</span><span>    use BillableTrait;
</span><span>    protected $dates = ['trial_ends_at', 'subscription_ends_at'];</span>
ログイン後にコピー
    onplan:ユーザーが特定のプランを使用しているかどうかを確認してください。
  • Ontrial:ユーザーがまだ試用期間中にいるかどうかを確認します キャンセル:ユーザーがサブスクリプションをキャンセルした場合
getLastFourCardDigits:4桁の後にユーザーカードを取得します。
<span>return [
</span><span>    'stripe' => [
</span><span>            'secret'    => 'Your key'
</span><span>        ]
</span><span>];</span>
ログイン後にコピー
    getSubscriptionEnddate:サブスクリプションの終了日を取得します。
  • GetTrialEnddate:試用終了日を取得します
  • 請求書:ユーザーの請求書のリストを取得します。
  • FindInvoice:id。
  • による請求書を見つけます
  • ダウンロードinvoice:ID。
  • によるダウンロード可能な請求書を生成します
  • 結論
  • このチュートリアルでは、Laravel Cashierが請求プロセスを緩和し、顧客の管理をより簡単に管理できる方法を調査しました。
  • ここではすべてをカバーしたわけではありませんが、ソースコードを掘り下げて他にできることを探求することが始まります。このアプリの窒素ホストのデモをご覧になりたい場合は、こちらをご覧ください。Laravel Cashierメンバーシップに関するよくある質問(FAQ)

    Laravel Cashierはサブスクリプションの請求をどのように処理しますか?

    Laravel Cashierは、サブスクリプション請求の管理プロセスを簡素化する強力なツールです。 StripeとBraintreeのサブスクリプション請求サービスに表現力豊かで流fluentなインターフェイスを提供します。それはあなたが恐ろしい執筆をしているボイラープレートのサブスクリプション請求コードのほぼすべてを処理します。 Laravel Cashierはクーポンを処理したり、サブスクリプションの「数量」を交換したり、キャンセルグレース期間をキャンセルしたり、請求書PDFを生成したりできます。 'LL Stripeアカウントを作成し、Composerを介してCashierパッケージをインストールする必要があります。また、請求可能な特性をモデル定義に追加する必要があります。この特性は、サブスクリプションの作成、クーポンの適用、カード情報の更新など、一般的な請求タスクを実行できるさまざまな方法を提供します。 Laravel Cashierを既存のLaravelプロジェクトに統合しますか?Laravel Cashierは、失敗した支払いをどのように処理しますか?支払いが失敗した場合、キャッシャーは自動的に支払いを再試行します。支払いが継続され続けると、サブスクリプションはキャンセルされます。ただし、関連するイベントを聞いて適切なアクションを実行することで、これらのイベントを手動で処理することもできます。

    他の支払いゲートウェイでlaravelキャッシャーを使用できますか?ブレインツリー。ただし、必要に応じて、キャッシャーを他の支払いゲートウェイと連携するように拡張できます。これには、LaravelとPayment GatewayのAPIの両方を十分に理解する必要があります。

    Laravel Cashierを使用してサブスクリプションをキャンセルするにはどうすればよいですか? 。サブスクリプションがキャンセルされると、キャッシャーは現在の請求サイクルの終了時にサブスクリプションの終了日を自動的に設定します。試用期間をサポートします。サブスクリプションを作成するときにトライアル期間を設定できます。試用期間が終わるまでユーザーは請求されません。

    Laravel Cashierを使用して請求書を生成するにはどうすればよいですか?

    ​​

    laravelキャッシャーは、請求書PDFを自動的に生成できます。請求書インスタンスのダウンロードメソッドを呼び出すことにより、ダウンロード可能なPDFバージョンの請求書にアクセスできます。これにより、PDFをディスクに書き込むか、ブラウザにストリーミングします。

    はい、Laravel Cashierはサブスクリプションにクーポンを適用することをサポートしています。これは、新しいサブスクリプションを作成するときにwithCouponメソッドを使用して行うことができます。

    Laravel Cashierでサブスクリプション量を処理するにはどうすればよいですか? 「シートごと」タイプのサブスクリプション用。サブスクリプションインスタンスのUpdateQuantityメソッドを使用して、サブスクリプションの数量を更新できます。

以上がLaravel Cashierとのメンバーシップの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート