middleware('guest'); } public function __invoke(PaymentWebhookRequest $request, string $company_key, string $gateway_key) { $transaction_reference = $this->getTransactionReference($request->all()); $payment = Payment::where('transaction_reference', $transaction_reference)->first(); if (is_null($payment)) { return response([], 404); /** Record event, throw an exception.. */ } return $request ->companyGateway() ->driver($payment->client) ->setPaymentMethod($payment->gateway_type_id) ->processWebhookRequest($request->all(), $request->company(), $request->companyGateway(), $payment); } public function getTransactionReference(array $data) { $flatten = Arr::dot($data); if (isset($flatten['data.object.id'])) { return $flatten['data.object.id']; // Request from Stripe } } }