ホームページ >PHPフレームワーク >Laravel >Laravel 開発: Laravel Cashier と Authorize.net を使用してサブスクリプションの支払いを処理するにはどうすればよいですか?

Laravel 開発: Laravel Cashier と Authorize.net を使用してサブスクリプションの支払いを処理するにはどうすればよいですか?

王林
王林オリジナル
2023-06-13 19:15:411329ブラウズ

電子商取引の継続的な発展に伴い、サブスクリプション支払いモデルの人気が高まっています。 Laravel Cashier は、サブスクリプションの管理と支払いの回収を非常に簡単にする Laravel フレームワークに基づく支払いツールです。この記事では、Laravel アプリケーションで Laravel Cashier と Authorize.net を使用してサブスクリプションの支払いを処理する方法を説明します。

  1. Laravel Cashier のインストール

始める前に、Laravel フレームワークと Composer パッケージ マネージャーがインストールされていることを確認する必要があります。ターミナルに次のコマンドを入力して、Laravel Cashier をインストールします。

composer require laravel/cashier

正常にインストールされたら、Cashier の移行テーブルを生成する必要があります。ターミナルで次のコマンドを実行できます。

php artisan migrate

これにより、支払い関連の Cashier テーブルに必要なデータベース移行ファイルが生成されます。

  1. Authorize.net API の構成

Authorize.net を使用して支払いを処理する前に、サービスをインストールし、API 認証情報 (API ログイン ID とトランザクション キー) を取得する必要があります。 。

これらの操作は、次の手順で実行できます。

  • https://www.authorize.net/ にアクセスしてアカウントを登録します
  • ログイン後, 左側のメニューをクリックします。 「セキュリティ設定」で「アカウント」を選択し、「設定」を選択します。
  • 「セキュリティ設定」で、「API 認証情報とキー」を選択します。
  • 「」をクリックします。新しいトランザクション キー」に必要な情報を入力し、「送信」をクリックします。
  • API ログイン ID とトランザクション キーがポップアップ ウィンドウに表示されます。コピーを作成し、安全な場所に保管してください。
  1. Laravel Cashier の構成

始める前に、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
  1. サブスクリプション プランを作成する

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 サブスクリプション プランを作成し、関連情報を返します。

  1. サブスクリプション支払いの処理

サブスクリプション プランが作成されたら、サブスクリプション リンクをサブスクライバーに送信します。次に、購読者はリンクを使用してリンクをクリックし、購読料を支払うことができます。

サブスクリプションを作成するときは、サブスクリプション プランとユーザー関連の情報を設定する必要があります。

以下はサンプル コントローラー メソッドです:

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 をサブスクリプション モデルに保存します。

  1. 購読解除の処理

ユーザーが購読をキャンセルしたい場合は、次の操作を行う必要があります:

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 Cashier と Authorize.net を使用すると簡単です。上記の手順に従うだけで、すぐにセットアップして実装できます。 Laravel Cashier は便利な決済ツールを提供していますが、変化する市場のニーズを満たすためにこのような新しいモデルを実装してみてはいかがでしょうか?

以上がLaravel 開発: Laravel Cashier と Authorize.net を使用してサブスクリプションの支払いを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。