跳到主要內容

Laravel Cashier(Paddle)

📝 此頁面為 Laravel 官方文檔的繁體中文翻譯。查看原始英文版本

Laravel Cashier(Paddle)

簡介

[!WARNING] 此文件適用於 Cashier Paddle 2.x 與 Paddle Billing 的整合。如果您仍在使用 Paddle Classic,應使用 Cashier Paddle 1.x

Laravel Cashier PaddlePaddle 的訂閱計費服務提供了一個表達力強、流暢的介面。它處理了幾乎所有您不想編寫的樣板訂閱計費代碼。除了基本的訂閱管理之外,Cashier 還可以處理:訂閱方案轉換、訂閱「數量」、訂閱暫停、取消寬限期等。

在深入了解 Cashier Paddle 之前,我們建議您同時查閱 Paddle 的概念指南API 文件

升級 Cashier

升級到新版本的 Cashier 時,務必仔細查閱升級指南

安裝

首先,使用 Composer 套件管理器安裝 Paddle 的 Cashier 套件:

composer require laravel/cashier-paddle

接下來,使用 vendor:publish Artisan 命令發佈 Cashier 的遷移檔案:

php artisan vendor:publish --tag="cashier-migrations"

然後,執行應用程式的資料庫遷移。Cashier 遷移將建立一個新的 customers 資料表。此外,還會建立新的 subscriptionssubscription_items 資料表來儲存所有客戶的訂閱。最後,建立一個新的 transactions 資料表來儲存與客戶關聯的所有 Paddle 交易:

php artisan migrate

[!WARNING] 為確保 Cashier 正確處理所有 Paddle 事件,請記得設定 Cashier 的 webhook 處理

Paddle 沙箱

在本地和開發環境開發期間,您應註冊一個 Paddle 沙箱帳戶。此帳戶將為您提供一個沙箱環境來測試和開發應用程式,而無需進行實際付款。您可以使用 Paddle 的測試卡號來模擬各種付款場景。

使用 Paddle 沙箱環境時,您應在應用程式的 .env 檔案中將 PADDLE_SANDBOX 環境變數設定為 true

PADDLE_SANDBOX=true

配置

可計費模型

Billable trait 新增到您的使用者模型:

use Laravel\Paddle\Billable;

class User extends Authenticatable
{
    use Billable;
}

API 金鑰

.env 中配置您的 Paddle API 金鑰:

PADDLE_CLIENT_ID=...
PADDLE_CLIENT_SECRET=...
PADDLE_WEBHOOK_SECRET=...

快速入門

銷售產品

使用 checkout 方法建立結帳工作階段,將使用者重導向到 Paddle 託管的結帳頁面:

use Illuminate\Http\Request;

Route::get('/product/{product}/checkout', function (Request $request, string $product) {
    $checkout = $request->user()->checkout($product);

    return $checkout->redirect();
});

銷售訂閱

使用 newSubscription 方法建立訂閱:

use Illuminate\Http\Request;

Route::post('/subscribe', function (Request $request) {
    $subscription = $request->user()->newSubscription('default', 'pri_monthly')
        ->create();

    return redirect('/home');
});

結帳工作階段

Cashier Paddle 支援覆蓋式結帳(Overlay Checkout)和內嵌式結帳(Inline Checkout)。覆蓋式結帳會打開一個 Paddle 託管的模式視窗,而內嵌式結帳則將結帳表單嵌入到您的頁面中。

客戶

使用 createAsCustomer 方法在 Paddle 中建立客戶記錄。使用 customer 方法檢索客戶資訊。

訂閱

建立訂閱

使用 newSubscription 方法建立新訂閱。第一個參數是訂閱的名稱,第二個參數是 Paddle 中的價格 ID:

$user->newSubscription('default', 'pri_monthly')->create();

檢查訂閱狀態

使用 subscribedonTrialpausedcancelledonGracePeriod 等方法檢查訂閱狀態。

更改方案

使用 swap 方法將訂閱轉換到新價格:

$user->subscription('default')->swap('pri_yearly');

暫停訂閱

使用 pause 方法暫停訂閱:

$user->subscription('default')->pause();

取消訂閱

使用 cancel 方法取消訂閱:

$user->subscription('default')->cancel();

訂閱試用

Cashier Paddle 支援試用期。使用 trialDays 設定試用天數,或使用 trialUntil 設定特定的結束日期。

處理 Paddle Webhook

Cashier 自動處理 Paddle webhook。發佈 webhook 路由:

php artisan vendor:publish --tag="cashier-webhooks"

然後在 Paddle 儀表板中配置 webhook URL。Cashier 處理諸如 subscription.createdsubscription.updatedtransaction.completed 等事件。

單次扣款

使用 charge 方法對客戶進行單次扣款。使用 Paddle 的產品價格 ID 來建立一次性付款。

交易

使用 transactions 方法檢索客戶的交易記錄。使用 downloadInvoice 方法下載發票。

測試

測試時,Cashier Paddle 提供了一個模擬實作。您可以透過設定相應的環境變數來使用 Paddle 的沙箱環境進行測試。