header('verif-hash'); if (!$signature || ($signature !== $secretHash)) { // This request isn't from Flutterwave; discard // Log::info("Fake incoming flutterwave payment payload - ".json_encode($request->all())); abort(401); } $payload = $request->all(); // It's a good idea to log all received events. // Log::info(json_encode($payload)); // check if already credited $deposit = FluterwaveSub::where('trx', $request->data['tx_ref'])->first(); if ($deposit->status == 1) { Log::notice($request->data['tx_ref'] . " Already credited"); return response(200); } // Do something (that doesn't take too long) with the payload if ($deposit->amount != $request->data['amount']) { Log::notice($request->data['tx_ref'] . " Amount stated not paid. and can not be approved."); abort(401); } if ($request->data['status'] != "successful") { Log::notice($request->data['tx_ref'] . " Payment not successful and user can not be credited."); abort(401); } $deposit->trans = $request->data['flw_ref']; $deposit->status = "success"; $deposit->save(); $u = User::find($deposit->uuid); // $u->sub_expiry = $expiry; $u->save(); $to = $u->email; $name = $u->firstname; $subject = "Deposit Successful"; $message = "You have successfully funded your wallet balance with the sum of " . $gnl->currency . "" . $deposit->amount . " via Flutterwave
Thank you for choosing " . $gnl->sitename; send_email($to, $name, $subject, $message); // Log::info("Email successfully sent to ".$u->firstname." ".$u->email." for deposit approved and credited."); return response(200); } //====================================================================== // FLUTTERWAVE WEBHOOKS ENDS HERE //====================================================================== }