khidirdotid / xendit-laravel
Laravel 的 Xendit 包装器
v1.0.0
2024-09-17 07:34 UTC
Requires
- php: ^8.1
- illuminate/support: ^10.0|^11.0
- xendit/xendit-php: ^6.0
Requires (Dev)
- nunomaduro/collision: ^8.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
README
Laravel 的 Xendit 包装器
安装
-
安装包
composer require khidirdotid/xendit-laravel
-
发布配置文件
php artisan vendor:publish --provider="KhidirDotID\Xendit\Providers\XenditServiceProvider" -
将外观添加到您的
config/app.php中的aliases部分'Xendit' => KhidirDotID\Xendit\Facades\Xendit::class,
-
添加 ENV 数据
XENDIT_API_KEY=
或者您也可以通过控制器设置它
\Xendit::setXenditKey('XENDIT_API_KEY');
使用方法
发票
- 获取支付页面的重定向 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 通知
- 创建处理通知的路由
Route::match(['GET', 'POST'], 'xendit.ipn', [PaymentController::class, 'xenditIpn'])->name('xendit.ipn');
- 在控制器中创建方法
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; } }
- 除了在
app/Http/Middleware/VerifyCsrfToken.php中验证 CSRF 令牌之外protected $except = [ 'xendit/ipn' ];