隨著電子商務(wù)的不斷發(fā)展,訂閱付款模式越來(lái)越受歡迎。Laravel Cashier是一個(gè)基于Laravel框架的付款工具,它使得管理訂閱和收取付款變得非常簡(jiǎn)單。 本文將介紹如何在Laravel應(yīng)用程序中使用Laravel Cashier以及Authorize.net來(lái)處理訂閱付款。
- 安裝Laravel Cashier
在開始之前,需要確保你已經(jīng)安裝了Laravel框架和Composer包管理器。在終端輸入以下命令來(lái)安裝Laravel Cashier:
composer require laravel/cashier
登錄后復(fù)制
一旦它安裝成功,你需要為Cashier生成遷移表。可以在終端運(yùn)行以下命令:
php artisan migrate
登錄后復(fù)制登錄后復(fù)制
這將為付款相關(guān)的Cashier表生成所需的數(shù)據(jù)庫(kù)遷移文件。
- 配置Authorize.net API
在使用Authorize.net處理付款之前,需要安裝該服務(wù)并獲取API憑據(jù)(API Login ID和Transaction Key)。
可以通過(guò)以下步驟執(zhí)行這些操作:
前往https://www.authorize.net/注冊(cè)一個(gè)賬號(hào)登錄后,在左側(cè)菜單中選擇“Account”,再選擇“Settings”在“Security Settings”中,選擇“API Credentials & Keys”點(diǎn)擊“New Transaction Key”,輸入需要的信息,再點(diǎn)擊“Submit”在彈出窗口中會(huì)顯示API Login ID和Transaction Key。請(qǐng)務(wù)必復(fù)制并妥善保管。
- 配置Laravel Cashier
在開始之前,需要配置cashier.php文件中的參數(shù)。可以通過(guò)以下命令在config文件夾中創(chuàng)建該文件:
php artisan vendor:publish --tag="cashier-config"
登錄后復(fù)制
接下來(lái),需要在.env文件中設(shè)置Authorize.net API相關(guān)參數(shù):
CASHIER_ENV=production CASHIER_CURRENCY=usd AUTHORIZE_API_LOGIN_ID=YOUR_API_LOGIN_ID AUTHORIZE_TRANSACTION_KEY=YOUR_TRANSACTION_KEY
登錄后復(fù)制
- 創(chuàng)建訂閱計(jì)劃
在使用Laravel Cashier和Authorize.net處理訂閱付款之前,需要?jiǎng)?chuàng)建訂閱計(jì)劃。可以通過(guò)以下命令來(lái)創(chuàng)建訂閱計(jì)劃:
php artisan make:model Plan -m
登錄后復(fù)制
該命令將在app文件夾中創(chuàng)建一個(gè)Plan模型,并為其生成遷移表。現(xiàn)在可以打開遷移文件進(jìn)行編輯,并添加必要的字段。以下是一個(gè)可以參考的示例:
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();
});
登錄后復(fù)制
執(zhí)行完遷移文件后,需要在數(shù)據(jù)庫(kù)中創(chuàng)建該表。在終端中運(yùn)行以下命令:
php artisan migrate
登錄后復(fù)制登錄后復(fù)制
接下來(lái),需要在Plan模型中定義必要的屬性和方法。以下是一個(gè)示例:
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' => ''
]);
}
}
登錄后復(fù)制
authorizeNetPlan方法將創(chuàng)建Authorize.net訂閱計(jì)劃并返回相關(guān)的信息。
- 處理訂閱付款
一旦訂閱計(jì)劃已經(jīng)創(chuàng)建,現(xiàn)在就可以向訂閱者發(fā)送訂閱鏈接。接下來(lái),訂閱者可以使用Link點(diǎn)擊鏈接進(jìn)行訂閱付款。
在創(chuàng)建訂閱時(shí),需要設(shè)置訂閱計(jì)劃和用戶相關(guān)信息。
以下是一個(gè)示例控制器方法:
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');
}
登錄后復(fù)制
在該示例中,我們使用newSubscription方法為用戶創(chuàng)建新的訂閱。注意,$request->stripeToken是使用Stripe Checkout生成的令牌。getUserPlan方法在Plan模型中定義,用于獲取當(dāng)前用戶的訂閱計(jì)劃。
在創(chuàng)建訂閱后,我們將創(chuàng)建的Authorize.net訂閱計(jì)劃的ID保存到Subscription模型中。
- 處理取消訂閱
當(dāng)用戶想要取消訂閱時(shí),需要執(zhí)行以下操作:
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.');
}
登錄后復(fù)制
在該示例中,我們使用cancel方法取消用戶的Laravel Cashier訂閱計(jì)劃,并使用Authorize.net中提供的方法取消訂閱計(jì)劃。
總結(jié)
使用Laravel Cashier和Authorize.net處理訂閱付款非常簡(jiǎn)單。僅需按照以上步驟即可快速設(shè)置和實(shí)現(xiàn)。Laravel Cashier提供了便捷的付款工具,何不實(shí)現(xiàn)這樣一種新模式,以滿足日益變化的市場(chǎng)需求呢?
以上就是Laravel開發(fā):如何使用Laravel Cashier和Authorize.net處理訂閱付款?的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注www.xfxf.net其它相關(guān)文章!







