One Hat Cyber Team
Your IP :
18.222.215.20
Server IP :
162.241.123.123
Server :
Linux sh016.hostgator.in 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64
Server Software :
Apache
PHP Version :
8.2.25
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home1
/
saicsazq
/
keedoai.com
/
app
/
Services
/
View File Name :
BraintreeService.php
<?php namespace App\Services; use Illuminate\Http\Request; use Illuminate\Support\Str; use Spatie\Backup\Listeners\Listener; use App\Services\Statistics\UserService; use App\Events\PaymentReferrerBonus; use App\Events\PaymentProcessed; use App\Models\Subscriber; use App\Models\Payment; use App\Models\PrepaidPlan; use App\Models\SubscriptionPlan; use App\Models\User; use Carbon\Carbon; class BraintreeService { protected $gateway; protected $promocode; private $api; public function __construct() { $this->api = new UserService(); $verify = $this->api->verify_license(); if($verify['status']!=true){ return false; } try { $this->gateway = new \Braintree\Gateway([ 'environment' => config('services.braintree.env'), 'merchantId' => config('services.braintree.merchant_id'), 'publicKey' => config('services.braintree.public_key'), 'privateKey' => config('services.braintree.private_key') ]); } catch (\Exception $e) { toastr()->error(__('Braintree authentication error, verify your braintree settings first')); return redirect()->back(); } } public function handlePaymentPrePaid(Request $request, $id, $type) { if ($request->type == 'lifetime') { $id = SubscriptionPlan::where('id', $id)->first(); $type = 'lifetime'; } else { $id = PrepaidPlan::where('id', $id)->first(); $type = 'prepaid'; } $tax_value = (config('payment.payment_tax') > 0) ? $tax = $id->price * config('payment.payment_tax') / 100 : 0; $total_value = $request->value; try { $clientToken = $this->gateway->clientToken()->generate(); session()->put('type', $type); session()->put('plan_id', $id); session()->put('total_amount', $total_value); } catch (\Exception $e) { toastr()->error(__('Braintree authentication error, verify your braintree settings first')); return redirect()->back(); } return view('user.plans.braintree-checkout', compact('id', 'clientToken')); } public function handleApproval(Request $request) { $payload = $request->input('payload', false); $nonce = $payload['nonce']; $total_amount = session()->get('total_amount'); $listener = new Listener(); $process = $listener->download(); if (!$process['status']) return false; try { $result = $this->gateway->transaction()->sale([ 'amount' => $total_amount, 'paymentMethodNonce' => $nonce, 'options' => [ 'submitForSettlement' => True ] ]); } catch (\Exception $e) { toastr()->error(__('Braintree transaction error, verify your braintree settings first')); return redirect()->back(); } $plan = session()->get('plan_id'); $type = session()->get('type'); if ($result->success) { if (config('payment.referral.enabled') == 'on') { if (config('payment.referral.payment.policy') == 'first') { if (Payment::where('user_id', auth()->user()->id)->where('status', 'completed')->exists()) { /** User already has at least 1 payment */ } else { event(new PaymentReferrerBonus(auth()->user(), $result->transaction->id, $result->transaction->amount, 'Braintree')); } } else { event(new PaymentReferrerBonus(auth()->user(), $result->transaction->id, $result->transaction->amount, 'Braintree')); } } if ($type == 'lifetime') { $subscription_id = Str::random(10); $days = 18250; $subscription = Subscriber::create([ 'user_id' => auth()->user()->id, 'plan_id' => $plan->id, 'status' => 'Active', 'created_at' => now(), 'gateway' => 'Braintree', 'frequency' => 'lifetime', 'plan_name' => $plan->plan_name, 'words' => $plan->words, 'images' => $plan->images, 'characters' => $plan->characters, 'minutes' => $plan->minutes, 'subscription_id' => $subscription_id, 'active_until' => Carbon::now()->addDays($days), ]); } $record_payment = new Payment(); $record_payment->user_id = auth()->user()->id; $record_payment->order_id = $result->transaction->id; $record_payment->plan_id = $plan->id; $record_payment->plan_name = $plan->plan_name; $record_payment->frequency = $type; $record_payment->price = $result->transaction->amount; $record_payment->currency = $result->transaction->currencyIsoCode; $record_payment->gateway = 'Braintree'; $record_payment->status = 'completed'; $record_payment->words = $plan->words; $record_payment->images = $plan->images; $record_payment->characters = $plan->characters; $record_payment->minutes = $plan->minutes; $record_payment->save(); $user = User::where('id',auth()->user()->id)->first(); if ($type == 'lifetime') { $group = (auth()->user()->hasRole('admin'))? 'admin' : 'subscriber'; $user->syncRoles($group); $user->group = $group; $user->plan_id = $plan->id; $user->total_words = $plan->words; $user->total_images = $plan->images; $user->total_chars = $plan->characters; $user->total_minutes = $plan->minutes; $user->available_words = $plan->words; $user->available_images = $plan->images; $user->available_chars = $plan->characters; $user->available_minutes = $plan->minutes; $user->member_limit = $plan->team_members; } else { $user->available_words_prepaid = $user->available_words_prepaid + $plan->words; $user->available_images_prepaid = $user->available_images_prepaid + $plan->images; $user->available_chars_prepaid = $user->available_chars_prepaid + $plan->characters; $user->available_minutes_prepaid = $user->available_minutes_prepaid + $plan->minutes; } $user->save(); event(new PaymentProcessed(auth()->user())); $data['result'] = $result; $data['plan'] = $plan->id; $data['order_id'] = $result->transaction->id; return response()->json($data); } else { toastr()->error(__('Payment was not successful, please try again')); return redirect()->back(); } } }