什么是最好的方法,你怎么能做到这一点?
我目前有一个用laravel(livewire)渲染视图的livewire组件。现在的问题是,我有一个订单函数,它给mollie数据,并返回一个重定向到相应的mollie路线支付。在这里,我已经为莫莉设置了webhook。
public function order() {
$user = Auth::user();
$payment = Mollie::api()->payments()->create([
'amount' => [
'currency' => 'EUR',
'value' => number_format($this->service->price, 2, '.', '')
],
'description' => 'Order #' . Str::random(6),
'redirectUrl' => route('service.order.callback'),
'webhookUrl' => route('service.order.webhook'),
'metadata' => [
'user' => [
'id' => $user->id,
'name' => $user->name,
],
'invoice' => [
'id' => 0
]
]
]);
return $this->redirect($payment->getCheckoutUrl(), 303);
}
我已经调整了路线。在我的web.php webhook看到这里.
Route::post('/service/order/webhook', [\App\Http\Controllers\Payment\Invoice::class, 'webhook'])->name('service.order.webhook');
现在它知道在一个正常的Laravel(php)控制器进一步,因为我可以在livewire没有功能,只是这样。
但是webhook函数根本没有被调用,也没有错误被抛出。webhook函数有一个发票数据库迁移,然后实际上把一些东西放入数据库。请参阅此处:
public function webhook() {
$invoiceUser = \App\Models\Payment\Invoice::create([
'status' => 'paid',
'number' => '1',
'date' => Carbon::now(),
'billing_detail_id' => 1,
'payment_id' => 1
]);
}
我只是在测试路线上测试了整个事情,创建发票工作。
1条答案
按热度按时间w8ntj3qf1#
请记住:Laravel POST路由默认情况下由VerifyCsrfToken中间件(app/Http/Middleware/VerifyCsrfToken.php)保护。webhook调用是POST请求。但不是从一个形式。因此,必须定义一个例外。打开app/Http/Middleware/VerifyCsrfToken.php.将你的webhook url添加到受保护的$except数组中。