iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 29
0
Modern Web

PHP laravel的邂逅系列 第 29

DAY29-laravel 交易介紹

介紹

Laravel Cashier 提供口語化,流暢的介面與 Stripe 的訂購交易服務介接。它幾乎處理了所有讓人退步三舍的訂購管理相關邏輯。除了基本的訂購管理,Cashier 還可以處理折價券,訂購轉換,管理訂購「數量」、取消寬限期,甚至產生收據的 PDF。

建立訂購
要建立一個訂購,首先要取得可交易的模型實例,這通常會是 App\User 的實例。一旦你取得了模型實例,你可以使用 newSubscription 方法來管理模型的訂購:

$user = User::find(1);

$user->newSubscription('main', 'monthly')->create($creditCardToken);

傳遞給 newSubscription 方法的第一個參數應該為訂單的名稱。如果你的應用程式只提供一個單一的訂購方式,你可能會呼叫 main 或 primary。第二個參數是用於特定 Striple 方案的使用者訂購。這個值應該對應到在 Stripe 計畫的識別碼。

create 方法會自動建立與 Stripe 的交易,以及將 Stripe 客戶 ID 和其他相關帳款資訊更新到資料庫。如果你的方案有在 Stripe 設定試用期,試用到期日也會自動儲存至使用者的記錄。

額外使用者詳細資料
如果你想自定額外的顧客詳細資料,你可以將資料陣列作為 create 方法的第二個參數傳入:

$user->newSubscription('main', 'monthly')->create($creditCardToken, [
    'email' => $email, 'description' => '我們的第一個客戶'
]);

想知道更多 Stripe 支援的額外欄位,請查看 Stripe 的建立顧客的文件。

折價券
如果你想在建立訂購的時候使用折價券,可以使用 withCoupon 方法:

$user->newSubscription('main', 'monthly')
     ->withCoupon('code')
     ->create($creditCardToken);

確認訂購狀態
一旦使用者在你的應用程式訂購,你可以使用多種便捷的方法,很簡單的檢查他們的訂購狀態。首先,當使用者擁有有效訂購時,subscribed 方法會回傳 true,即使該訂購目前在試用期間:

if ($user->subscribed('main')) {
    //
}

subscribed 方法很適合用在路由中介層,讓你可以透過使用者的訂購狀態,過濾存取路由及控制器:

public function handle($request, Closure $next)
{
    if ($request->user() && ! $request->user()->subscribed('main')) {
        // 此使用者不是付費使用者...
        return redirect('billing');
    }

    return $next($request);
}

如果你想確認使用者是否還在他們的試用期內,你可以使用 onTrial 方法。此方法在向使用者顯示他們還在試用期內的警告是很有用的:

if ($user->subscription('main')->onTrial()) {
    //
}

onPlan 方法可以用 Stripe ID 來確認使用者是否訂購某方案:

if ($user->onPlan('monthly')) {
    //
}

上一篇
DAY28-laravel 授權介紹
下一篇
DAY30-laravel 完結篇
系列文
PHP laravel的邂逅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言