uawdijnntqw1x1x1
IP : 216.73.216.93
Hostname : panel.codeskitter.com
Kernel : Linux panel.codeskitter.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
Disable Function : apache_child_terminate, apache_note, apache_setenv, define_syslog_variables, dl, link, opcache_get_status, openlog, pcntl_exec, pcntl_fork, pcntl_setpriority, popen, posix_getpwuid, posix_kill, posix_mkfifo, posix_setpgid, posix_setsid, posix_setuid
OS : Linux
PATH:
/
home
/
users
/
unlimited
/
www
/
whatsapp-crm
/
app
/
Services
/
FlutterwaveService.php
/
/
<?php namespace App\Services; use App\Models\BillingPayment; use App\Models\BillingTransaction; use App\Models\PaymentGateway; use App\Models\Setting; use App\Models\User; use App\Services\SubscriptionService; use App\Traits\ConsumesExternalServices; use Carbon\Carbon; use CurrencyHelper; use DB; use Helper; use GuzzleHttp\Client as HttpClient; use GuzzleHttp\Exception\RequestException; use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; class FlutterwaveService { public function __construct() { $this->subscriptionService = new SubscriptionService(); $methodInfo = PaymentGateway::where('name', 'Flutterwave')->first(); $this->config = json_decode($methodInfo->metadata); $this->baseUri = 'https://api.flutterwave.com/'; $this->publicKey = $this->config->public_key; $this->secretKey = $this->config->secret_key; } public function makeRequest($method, $url, $body = NULL) { $httpClient = new HttpClient(); try { $request = $httpClient->request($method, $this->baseUri . $url, [ 'headers' => [ 'Authorization' => 'Bearer ' . $this->secretKey, 'Content-Type' => 'application/json' ], 'body' => $body != null ? json_encode($body) : null ] ); return (object) array('success' => true, 'data' => json_decode($request->getBody()->getContents())); } catch (RequestException $e) { Log::error("Error Code:" . $e->getMessage()); return (object) array('success' => false, 'error' => json_decode($e->getResponse()->getBody()->getContents())); } } public function handlePayment($amount, $planId = NULL) { $currency = 'USD'; $redirectUrl = url('payment/flutterwave'); $user = User::where('id', auth()->user()->id)->first(); try { $pay = $this->makeRequest( 'POST', 'v3/payments', [ 'tx_ref' => 'Ref:' . auth()->user()->id . session()->get('current_organization') . now()->format('YmdHis'), 'amount' => $amount, 'currency' => $currency, 'redirect_url' => $redirectUrl, 'meta' => [ 'organization_id' => session()->get('current_organization'), 'plan_id' => $planId, 'user_id' => auth()->user()->id, ], 'customer' => [ 'email' => $user->email, 'phonenumber' => $user->phone, 'name' => $user->first_name . ' ' . $user->last_name, ], 'customizations' => [ 'title' => Setting::where('key', 'company_name')->first()->value, ] ] ); return (object) array('success' => true, 'data' => $pay->data->data->link); } catch (\Exception $e) { // Log or handle the error as needed \Log::error("Error Code:" . $e->getMessage()); return (object) array('success' => false, 'error' => $e->getMessage()); } } public function verifyTransaction($transactionId) { return $this->makeRequest( 'GET', 'v3/transactions/'. $transactionId .'/verify' ); } public function updateSubscription($dataId) { $verifiedTrans = $this->verifyTransaction($dataId); if($verifiedTrans->success && isset($verifiedTrans->data)){ $request = $verifiedTrans->data; if($request->status === 'success'){ $transaction = DB::transaction(function () use ($request) { $metadata = $request->data->meta; $organizationId = $metadata->organization_id ?? null; $userId = $metadata->user_id ?? null; $planId = $metadata->plan_id ?? null; $amount = $request->data->amount; //Check if payment exists $exists = BillingPayment::where('processor', 'flutterwave')->where('details', $request->data->flw_ref)->first(); Log::info($exists); if(!$exists){ $payment = BillingPayment::create([ 'organization_id' => $organizationId, 'processor' => 'flutterwave', 'details' => $request->data->flw_ref, 'amount' => $amount ]); $transaction = BillingTransaction::create([ 'organization_id' => $organizationId, 'entity_type' => 'payment', 'entity_id' => $payment->id, 'description' => 'Flutterwave Payment', 'amount' => $amount, 'created_by' => $userId, ]); if($planId == null){ $this->subscriptionService->activateSubscriptionIfInactiveAndExpiredWithCredits($organizationId, $userId); } else { $this->subscriptionService->updateSubscriptionPlan($organizationId, $planId, $userId); } //Log::debug($transaction); return $transaction; } }); return (object) array('success' => true); } } return (object) array('success' => false); } public function handleWebhook(Request $request) { $this->updateSubscription($request->data['id']); } }
/home/users/unlimited/www/whatsapp-crm/app/Services/FlutterwaveService.php