Ларавел Молли, как подойти к Webhook

Где я могу обновить 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');
    }
}

0 ответов

Другие вопросы по тегам