Где я могу обновить webhook так. Когда я создаю платеж, он работает на веб-сайте mollie, но у них есть идентификатор, сгенерированный mollie. идентификатор, который я назначаю продукту, содержится в метаданных, но, похоже, нет способа получить статус платежа по идентификатору метаданных. Это мой текущий код, который должен создать счет на электронную почту клиента.
Я изменил некоторые данные, используя < >
поэтому он не показывает конфиденциальные данные.
public function webhook(Request $request)
{
$mollie = new Mollie_API_Client;
$mollie->setApiKey('<API_TESTKEY>');
$id = $request->id;
/*
* Retrieve the payment's current state.
*/
$payment = $mollie->payments->get($id);
$order_id = $payment->metadata->order_id;
$user_id = $payment->metadata->user_id;
$user = User::findOrFail($user_id);
$shipping = $user->addresses()->where('type', 'shipping')->first();
$billing = $user->addresses()->where('type', 'billing')->first();
$order = Order::findOrFail($order_id);
/*
* Update the order in the database.
*/
if ($payment->isPaid() == TRUE)
{
$order->update([
'status' => 'betaald'
]);
foreach ($order->products()->get() as $product) {
//update stock amount
$qty = $product->pivot->quantity;
$stock = $product->stock - $qty;
$product->update([
'stock' => $stock
]);
}
// load the pdf view and send request data
$pdf = PDF::loadView('pages.frontend.orders.invoice.pdf',
compact('user', 'order', 'billing'));
// Setup the paper size and orientation
$pdf->setPaper('A4', 'portrait');
$output = $pdf->output();
//send order confirmation mail to client.
Mail::send('pages.frontend.orders.emails.order-confirmation',[
'user' => $user,
'order' => $order,
'shipping' => $shipping,
'billing' => $billing
], function ($m) use ($user,$order,$output) {
$m->from('<MAIL>', '<MAIL_USER>');
$m->to($user->email, $user->first_name . ' ' . $user->surname)
->subject('Bevestiging Bestelling');
$m->attachData($output, 'invoice.pdf');
});
//send confirmation mail to shopowner.
Mail::send('pages.frontend.orders.emails.client-order',[
'user' => $user,
'order' => $order,
'shipping' => $shipping,
'billing' => $billing
], function ($m) use ($user,$order,$output) {
$m->from('<MAIL>', '<MAIL_USER>');
// $m->to('<MAIL>' , '<MAIL_USER>')->subject('Bestelling Klant');
$m->to('<MAIL>', '<MAIL_USER>')->subject('Bestelling Klant');
$m->attachData($output, 'invoice.pdf');
});
Flash::success('Bedankt voor uw bestelling!
U ontvangt direct een mail met uw besteloverzicht.');
}
elseif ($payment->isOpen() == FALSE)
{
$order->update([
'status' => 'betaling mislukt'
]);
Flash::error('Oeps! Het lijkt er op dat uw betaling is mislukt of geannuleerd');
}
}
Задача ещё не решена.
Других решений пока нет …