電子商取引の継続的な発展に伴い、サブスクリプション支払いモデルの人気が高まっています。 Laravel Cashier は、サブスクリプションの管理と支払いの回収を非常に簡単にする Laravel フレームワークに基づく支払いツールです。この記事では、Laravel アプリケーションで Laravel Cashier と Authorize.net を使用してサブスクリプションの支払いを処理する方法を説明します。
始める前に、Laravel フレームワークと Composer パッケージ マネージャーがインストールされていることを確認する必要があります。ターミナルに次のコマンドを入力して、Laravel Cashier をインストールします。
composer require laravel/cashier
正常にインストールされたら、Cashier の移行テーブルを生成する必要があります。ターミナルで次のコマンドを実行できます。
php artisan migrate
これにより、支払い関連の Cashier テーブルに必要なデータベース移行ファイルが生成されます。
Authorize.net を使用して支払いを処理する前に、サービスをインストールし、API 認証情報 (API ログイン ID とトランザクション キー) を取得する必要があります。 。
これらの操作は、次の手順で実行できます。
始める前に、Cashier.php ファイル内のパラメーターを構成する必要があります。このファイルは、次のコマンドを使用して config フォルダーに作成できます:
php artisan vendor:publish --tag="cashier-config"
次に、.env ファイルで Authorize.net API 関連のパラメーターを設定する必要があります:
CASHIER_ENV=production CASHIER_CURRENCY=usd AUTHORIZE_API_LOGIN_ID=YOUR_API_LOGIN_ID AUTHORIZE_TRANSACTION_KEY=YOUR_TRANSACTION_KEY
Laravel Cashier と Authorize.net を使用してサブスクリプションの支払いを処理する前に、サブスクリプション プランを作成する必要があります。次のコマンドを使用してサブスクリプション プランを作成できます。
php artisan make:model Plan -m
このコマンドは、アプリ フォルダーにプラン モデルを作成し、それに対する移行テーブルを生成します。これで、移行ファイルを開いて編集し、必要なフィールドを追加できるようになります。参考のための例を次に示します。
Schema::create('plans', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('name'); $table->string('stripe_id'); $table->string('authorizenet_id'); $table->integer('price'); $table->string('interval'); $table->integer('interval_count'); $table->integer('trial_period_days')->nullable(); $table->timestamps(); });
移行ファイルの実行後、データベースにテーブルを作成する必要があります。ターミナルで次のコマンドを実行します。
php artisan migrate
次に、プラン モデルで必要なプロパティとメソッドを定義する必要があります。以下に例を示します。
use LaravelCashierSubscription; class Plan extends Model { public function subscriptions() { return $this->hasMany(Subscription::class); } public function getPrice() { return $this->price / 100; } public function getFormattedPrice() { return number_format($this->getPrice(), 2); } public function authorizeNetPlan() { return AuthorizeNet_Subscription::create([ 'name' => $this->name, 'intervalLength' => $this->interval_count, 'intervalUnit' => $this->interval, 'startDate' => date('Y-m-d'), 'totalOccurrences' => '9999', 'trialOccurrences' => '0', 'amount' => $this->price, 'trialAmount' => '0.00', 'creditCardCardNumber' => '', 'creditCardExpirationDate' => '', 'creditCardCardCode' => '' ]); } }
authorizeNetPlan
このメソッドは、Authorize.net サブスクリプション プランを作成し、関連情報を返します。
サブスクリプション プランが作成されたら、サブスクリプション リンクをサブスクライバーに送信します。次に、購読者はリンクを使用してリンクをクリックし、購読料を支払うことができます。
サブスクリプションを作成するときは、サブスクリプション プランとユーザー関連の情報を設定する必要があります。
以下はサンプル コントローラー メソッドです:
public function subscribe(Request $request, Plan $plan) { $user = $request->user(); $subscription = $user->newSubscription('default', $plan->stripe_id)->create($request->stripeToken); $authorizeSubscription = $plan->authorizeNetPlan(); $subscription->authorize_net_id = $authorizeSubscription->getSubscriptionId(); $subscription->save(); return redirect()->route('home')->with('success', 'Subscription successful'); }
この例では、newSubscription
メソッドを使用してユーザーの新しいサブスクリプションを作成します。 $request-> StripeToken
は、Stripe Checkout を使用して生成されたトークンであることに注意してください。 getUserPlan
このメソッドはプラン モデルで定義されており、現在のユーザーのサブスクリプション プランを取得するために使用されます。
サブスクリプションを作成した後、作成した Authorize.net サブスクリプション プランの ID をサブスクリプション モデルに保存します。
ユーザーが購読をキャンセルしたい場合は、次の操作を行う必要があります:
public function cancel(Request $request) { $user = $request->user(); $subscription = $user->subscription('default'); $authorizeSubscription = AuthorizeNet_Subscription::cancel($subscription->authorize_net_id); $subscription->cancel(); return redirect()->route('home')->with('success', 'Subscription cancelled.'); }
この例では # を使用します。 # #cancelユーザーの Laravel Cashier サブスクリプション プランをキャンセルし、Authorize.net で提供されるメソッドを使用してサブスクリプション プランをキャンセルするメソッド。
以上がLaravel 開発: Laravel Cashier と Authorize.net を使用してサブスクリプションの支払いを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。