khidirdotid/xendit-laravel

Laravel 的 Xendit 包装器

v1.0.0 2024-09-17 07:34 UTC

This package is auto-updated.

Last update: 2024-09-17 07:35:19 UTC


README

Laravel 的 Xendit 包装器

安装

  1. 安装包

    composer require khidirdotid/xendit-laravel
  2. 发布配置文件

    php artisan vendor:publish --provider="KhidirDotID\Xendit\Providers\XenditServiceProvider"
  3. 将外观添加到您的 config/app.php 中的 aliases 部分

    'Xendit' => KhidirDotID\Xendit\Facades\Xendit::class,
  4. 添加 ENV 数据

    XENDIT_API_KEY=

    或者您也可以通过控制器设置它

    \Xendit::setXenditKey('XENDIT_API_KEY');

使用方法

发票

  1. 获取支付页面的重定向 URL
    $data = [
        'external_id' => 'invoice-' . time(),
        'amount' => 10000
    ];
    
    try {
        // Get Payment Page URL
        $paymentUrl = \Xendit::createInvoice($data);
    
        // Redirect to Payment Page
        return redirect()->away($paymentUrl['invoice_url']);
    } catch (\Throwable $th) {
        throw $th;
    }

处理 HTTP 通知

  1. 创建处理通知的路由
    Route::match(['GET', 'POST'], 'xendit.ipn', [PaymentController::class, 'xenditIpn'])->name('xendit.ipn');
  2. 在控制器中创建方法
    public function xenditIpn(Request $request)
    {
        try {
            $response = \Xendit::getInvoiceById($request->invoice_id);
    
            if (in_array(strtolower($response['status']), ['paid', 'settled'])) {
                // TODO: Set payment status in merchant's database to 'success'
            }
        } catch (\Throwable $th) {
            throw $th;
        }
    }
  3. 除了在 app/Http/Middleware/VerifyCsrfToken.php 中验证 CSRF 令牌之外
    protected $except = [
        'xendit/ipn'
    ];