From a34825a6920fc7c917c555138c909ad0ac55a488 Mon Sep 17 00:00:00 2001 From: IceToast <> Date: Sun, 15 Jan 2023 01:41:16 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20=E2=9C=A8=20Moved=20Stripe=20functions?= =?UTF-8?q?=20to=20extension?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PaymentGateways/Stripe/index.php | 400 ++++++++++++++++ .../Controllers/Admin/PaymentController.php | 443 +----------------- 2 files changed, 416 insertions(+), 427 deletions(-) create mode 100644 app/Extensions/PaymentGateways/Stripe/index.php diff --git a/app/Extensions/PaymentGateways/Stripe/index.php b/app/Extensions/PaymentGateways/Stripe/index.php new file mode 100644 index 00000000..134ca414 --- /dev/null +++ b/app/Extensions/PaymentGateways/Stripe/index.php @@ -0,0 +1,400 @@ +shopProduct); + + // check if the price is valid for stripe + if (!checkPriceAmount($shopProduct->getTotalPrice(), strtoupper($shopProduct->currency_code), 'stripe')) { + Redirect::route('home')->with('error', __('The product you chose can\'t be purchased with this payment method. The total amount is too small. Please buy a bigger amount or try a different payment method.'))->send(); + return; + } + + + // create payment + $payment = Payment::create([ + 'user_id' => $user->id, + 'payment_id' => null, + 'payment_method' => 'stripe', + 'type' => $shopProduct->type, + 'status' => 'open', + 'amount' => $shopProduct->quantity, + 'price' => $shopProduct->price - ($shopProduct->price * PartnerDiscount::getDiscount() / 100), + 'tax_value' => $shopProduct->getTaxValue(), + 'total_price' => $shopProduct->getTotalPrice(), + 'tax_percent' => $shopProduct->getTaxPercent(), + 'currency_code' => $shopProduct->currency_code, + 'shop_item_product_id' => $shopProduct->id, + ]); + + $stripeClient = getStripeClient(); + $request = $stripeClient->checkout->sessions->create([ + 'line_items' => [ + [ + 'price_data' => [ + 'currency' => $shopProduct->currency_code, + 'product_data' => [ + 'name' => $shopProduct->display . (PartnerDiscount::getDiscount() ? (' (' . __('Discount') . ' ' . PartnerDiscount::getDiscount() . '%)') : ''), + 'description' => $shopProduct->description, + ], + 'unit_amount_decimal' => round($shopProduct->getPriceAfterDiscount() * 100, 2), + ], + 'quantity' => 1, + ], + [ + 'price_data' => [ + 'currency' => $shopProduct->currency_code, + 'product_data' => [ + 'name' => __('Tax'), + 'description' => $shopProduct->getTaxPercent() . '%', + ], + 'unit_amount_decimal' => round($shopProduct->getTaxValue(), 2) * 100, + ], + 'quantity' => 1, + ], + ], + + 'mode' => 'payment', + 'payment_method_types' => str_getcsv(config('SETTINGS::PAYMENTS:STRIPE:METHODS')), + 'success_url' => route('payment.StripeSuccess', ['payment' => $payment->id]) . '&session_id={CHECKOUT_SESSION_ID}', + 'cancel_url' => route('payment.Cancel'), + ]); + + Redirect::to($request->url)->send(); +} + +/** + * @param Request $request + */ +function StripeSuccess(Request $request) +{ + $user = Auth::user(); + error_log('StripeSuccess'); + $payment = Payment::findOrFail($request->input('payment')); + $shopProduct = ShopProduct::findOrFail($payment->shop_item_product_id); + + + $stripeClient = getStripeClient(); + try { + //get stripe data + $paymentSession = $stripeClient->checkout->sessions->retrieve($request->input('session_id')); + $paymentIntent = $stripeClient->paymentIntents->retrieve($paymentSession->payment_intent); + + //get DB entry of this payment ID if existing + $paymentDbEntry = Payment::where('payment_id', $paymentSession->payment_intent)->count(); + + // check if payment is 100% completed and payment does not exist in db already + if ($paymentSession->status == 'complete' && $paymentIntent->status == 'succeeded' && $paymentDbEntry == 0) { + + //update payment + $payment->update([ + 'payment_id' => $paymentSession->payment_intent, + 'status' => 'paid', + ]); + + //payment notification + $user->notify(new ConfirmPaymentNotification($payment)); + + event(new UserUpdateCreditsEvent($user)); + event(new PaymentEvent($user, $payment, $shopProduct)); + + //redirect back to home + Redirect::route('home')->with('success', 'Payment successful')->send(); + } else { + if ($paymentIntent->status == 'processing') { + + //update payment + $payment->update([ + 'payment_id' => $paymentSession->payment_intent, + 'status' => 'processing', + ]); + + // todo invoice + event(new PaymentEvent($user, $payment, $shopProduct)); + + Redirect::route('home')->with('success', 'Your payment is being processed')->send(); + } + + if ($paymentDbEntry == 0 && $paymentIntent->status != 'processing') { + $stripeClient->paymentIntents->cancel($paymentIntent->id); + + //redirect back to home + Redirect::route('home')->with('info', __('Your payment has been canceled!'))->send(); + } else { + abort(402); + } + } + } catch (Exception $e) { + if (env('APP_ENV') == 'local') { + dd($e->getMessage()); + } else { + abort(422); + } + } +} + +/** + * @param Request $request + */ +function handleStripePaymentSuccessHook($paymentIntent) +{ + try { + // Get payment db entry + $payment = Payment::where('payment_id', $paymentIntent->id)->first(); + $user = User::where('id', $payment->user_id)->first(); + $shopProduct = ShopProduct::findOrFail($payment->shop_item_product_id); + + if ($paymentIntent->status == 'succeeded' && $payment->status == 'processing') { + + + //update payment db entry status + $payment->update(['status' => 'paid']); + + //payment notification + $user->notify(new ConfirmPaymentNotification($payment)); + event(new UserUpdateCreditsEvent($user)); + event(new PaymentEvent($user, $payment, $shopProduct)); + } + } catch (Exception $ex) { + abort(422); + } +} + +/** + * @param Request $request + */ +function StripeWebhooks(Request $request) +{ + Stripe::setApiKey(getStripeSecret()); + + try { + $payload = @file_get_contents('php://input'); + $sig_header = $request->header('Stripe-Signature'); + $event = null; + $event = \Stripe\Webhook::constructEvent( + $payload, + $sig_header, + getStripeEndpointSecret() + ); + } catch (\UnexpectedValueException $e) { + // Invalid payload + + abort(400); + } catch (SignatureVerificationException $e) { + // Invalid signature + + abort(400); + } + + // Handle the event + switch ($event->type) { + case 'payment_intent.succeeded': + $paymentIntent = $event->data->object; // contains a \Stripe\PaymentIntent + handleStripePaymentSuccessHook($paymentIntent); + break; + default: + echo 'Received unknown event type ' . $event->type; + } +} + +/** + * @return \Stripe\StripeClient + */ +function getStripeClient() +{ + return new StripeClient(getStripeSecret()); +} + +/** + * @return string + */ +function getStripeSecret() +{ + return env('APP_ENV') == 'local' + ? config('SETTINGS::PAYMENTS:STRIPE:TEST_SECRET') + : config('SETTINGS::PAYMENTS:STRIPE:SECRET'); +} + +/** + * @return string + */ +function getStripeEndpointSecret() +{ + return env('APP_ENV') == 'local' + ? config('SETTINGS::PAYMENTS:STRIPE:ENDPOINT_TEST_SECRET') + : config('SETTINGS::PAYMENTS:STRIPE:ENDPOINT_SECRET'); +} +/** + * @param $amount + * @param $currencyCode + * @param $payment_method + * @return bool + * @description check if the amount is higher than the minimum amount for the stripe gateway + */ +function checkPriceAmount($amount, $currencyCode, $payment_method) +{ + $minimums = [ + "USD" => [ + "paypal" => 0, + "stripe" => 0.5 + ], + "AED" => [ + "paypal" => 0, + "stripe" => 2 + ], + "AUD" => [ + "paypal" => 0, + "stripe" => 0.5 + ], + "BGN" => [ + "paypal" => 0, + "stripe" => 1 + ], + "BRL" => [ + "paypal" => 0, + "stripe" => 0.5 + ], + "CAD" => [ + "paypal" => 0, + "stripe" => 0.5 + ], + "CHF" => [ + "paypal" => 0, + "stripe" => 0.5 + ], + "CZK" => [ + "paypal" => 0, + "stripe" => 15 + ], + "DKK" => [ + "paypal" => 0, + "stripe" => 2.5 + ], + "EUR" => [ + "paypal" => 0, + "stripe" => 0.5 + ], + "GBP" => [ + "paypal" => 0, + "stripe" => 0.3 + ], + "HKD" => [ + "paypal" => 0, + "stripe" => 4 + ], + "HRK" => [ + "paypal" => 0, + "stripe" => 0.5 + ], + "HUF" => [ + "paypal" => 0, + "stripe" => 175 + ], + "INR" => [ + "paypal" => 0, + "stripe" => 0.5 + ], + "JPY" => [ + "paypal" => 0, + "stripe" => 0.5 + ], + "MXN" => [ + "paypal" => 0, + "stripe" => 10 + ], + "MYR" => [ + "paypal" => 0, + "stripe" => 2 + ], + "NOK" => [ + "paypal" => 0, + "stripe" => 3 + ], + "NZD" => [ + "paypal" => 0, + "stripe" => 0.5 + ], + "PLN" => [ + "paypal" => 0, + "stripe" => 2 + ], + "RON" => [ + "paypal" => 0, + "stripe" => 2 + ], + "SEK" => [ + "paypal" => 0, + "stripe" => 3 + ], + "SGD" => [ + "paypal" => 0, + "stripe" => 0.5 + ], + "THB" => [ + "paypal" => 0, + "stripe" => 10 + ] + ]; + return $amount >= $minimums[$currencyCode][$payment_method]; +} + +function getStripeConfig() +{ + return [ + "name" => "Stripe", + "description" => "Stripe payment gateway", + "mode" => [ + "type" => "select", + "label" => "Mode", + "value" => config("APP_ENV") == 'local' ? "sandbox" : "live", + "options" => [ + "sandbox" => "Sandbox", + "live" => "Live", + ], + ], + "TEST_SECRET" => [ + "type" => "text", + "label" => "Test Secret Key", + "value" => config("SETTINGS::PAYMENTS:STRIPE:TEST_SECRET"), + ], + "SECRET" => [ + "type" => "text", + "label" => "Live Secret Key", + "value" => config("SETTINGS::PAYMENTS:STRIPE:SECRET"), + ], + "ENDPOINT_TEST_SECRET" => [ + "type" => "text", + "label" => "Test Endpoint Secret", + "value" => config("SETTINGS::PAYMENTS:STRIPE:ENDPOINT_TEST_SECRET"), + ], + "ENDPOINT_SECRET" => [ + "type" => "text", + "label" => "Live Endpoint Secret", + "value" => config("SETTINGS::PAYMENTS:STRIPE:ENDPOINT_SECRET"), + ], + ]; +} diff --git a/app/Http/Controllers/Admin/PaymentController.php b/app/Http/Controllers/Admin/PaymentController.php index a543bc02..11cf78c3 100644 --- a/app/Http/Controllers/Admin/PaymentController.php +++ b/app/Http/Controllers/Admin/PaymentController.php @@ -60,8 +60,7 @@ class PaymentController extends Controller $paymentGateways[] = $payment; } } - - + return view('store.checkout')->with([ 'product' => $shopProduct, 'discountpercent' => PartnerDiscount::getDiscount(), @@ -83,8 +82,8 @@ class PaymentController extends Controller { //dd($shopProduct); //check if the product is really free or the discount is 100% - if($shopProduct->getTotalPrice()>0) return redirect()->route('home')->with('error', __('An error ocured. Please try again.')); - + if ($shopProduct->getTotalPrice() > 0) return redirect()->route('home')->with('error', __('An error ocured. Please try again.')); + //give product /** @var User $user */ $user = Auth::user(); @@ -92,14 +91,14 @@ class PaymentController extends Controller //not updating server limit //update User with bought item - if ($shopProduct->type=="Credits") { + if ($shopProduct->type == "Credits") { $user->increment('credits', $shopProduct->quantity); - }elseif ($shopProduct->type=="Server slots"){ + } elseif ($shopProduct->type == "Server slots") { $user->increment('server_limit', $shopProduct->quantity); } //skipped the referral commission, because the user did not pay anything. - + //not giving client role //store payment @@ -110,7 +109,7 @@ class PaymentController extends Controller 'type' => $shopProduct->type, 'status' => 'paid', 'amount' => $shopProduct->quantity, - 'price' => $shopProduct->price - ($shopProduct->price*PartnerDiscount::getDiscount()/100), + 'price' => $shopProduct->price - ($shopProduct->price * PartnerDiscount::getDiscount() / 100), 'tax_value' => $shopProduct->getTaxValue(), 'tax_percent' => $shopProduct->getTaxPercent(), 'total_price' => $shopProduct->getTotalPrice(), @@ -126,8 +125,8 @@ class PaymentController extends Controller return redirect()->route('home')->with('success', __('Your credit balance has been increased!')); } - public function pay(Request $request) - { + public function pay(Request $request) + { $product = ShopProduct::find($request->product_id); $paymentGateway = $request->payment_method; @@ -142,416 +141,6 @@ class PaymentController extends Controller return redirect()->route('store.index')->with('info', 'Payment was Canceled'); } - /** - * @param Request $request - * @param ShopProduct $shopProduct - * @return RedirectResponse - */ - public function StripePay(Request $request, ShopProduct $shopProduct) - { - if(!$this->checkAmount($shopProduct->getTotalPrice(), strtoupper($shopProduct->currency_code), "stripe")) return redirect()->route('home')->with('error', __('The product you chose canĀ“t be purchased with this payment method. The total amount is too small. Please buy a bigger amount or try a different payment method.')); - $stripeClient = $this->getStripeClient(); - - $request = $stripeClient->checkout->sessions->create([ - 'line_items' => [ - [ - 'price_data' => [ - 'currency' => $shopProduct->currency_code, - 'product_data' => [ - 'name' => $shopProduct->display.(PartnerDiscount::getDiscount() ? (' ('.__('Discount').' '.PartnerDiscount::getDiscount().'%)') : ''), - 'description' => $shopProduct->description, - ], - 'unit_amount_decimal' => round($shopProduct->getPriceAfterDiscount() * 100, 2), - ], - 'quantity' => 1, - ], - [ - 'price_data' => [ - 'currency' => $shopProduct->currency_code, - 'product_data' => [ - 'name' => __('Tax'), - 'description' => $shopProduct->getTaxPercent().'%', - ], - 'unit_amount_decimal' => round($shopProduct->getTaxValue(), 2) * 100, - ], - 'quantity' => 1, - ], - ], - - 'mode' => 'payment', - 'payment_method_types' => str_getcsv(config('SETTINGS::PAYMENTS:STRIPE:METHODS')), - 'success_url' => route('payment.StripeSuccess', ['product' => $shopProduct->id]).'&session_id={CHECKOUT_SESSION_ID}', - 'cancel_url' => route('payment.Cancel'), - ]); - - return redirect($request->url, 303); - } - - /** - * @param Request $request - */ - public function StripeSuccess(Request $request) - { - /** @var ShopProduct $shopProduct */ - $shopProduct = ShopProduct::findOrFail($request->input('product')); - - /** @var User $user */ - $user = Auth::user(); - - $stripeClient = $this->getStripeClient(); - - try { - //get stripe data - $paymentSession = $stripeClient->checkout->sessions->retrieve($request->input('session_id')); - $paymentIntent = $stripeClient->paymentIntents->retrieve($paymentSession->payment_intent); - - //get DB entry of this payment ID if existing - $paymentDbEntry = Payment::where('payment_id', $paymentSession->payment_intent)->count(); - - // check if payment is 100% completed and payment does not exist in db already - if ($paymentSession->status == 'complete' && $paymentIntent->status == 'succeeded' && $paymentDbEntry == 0) { - - //update server limit - if (config('SETTINGS::USER:SERVER_LIMIT_AFTER_IRL_PURCHASE') !== 0) { - if ($user->server_limit < config('SETTINGS::USER:SERVER_LIMIT_AFTER_IRL_PURCHASE')) { - $user->update(['server_limit' => config('SETTINGS::USER:SERVER_LIMIT_AFTER_IRL_PURCHASE')]); - } - } - - //update User with bought item - if ($shopProduct->type == 'Credits') { - $user->increment('credits', $shopProduct->quantity); - } elseif ($shopProduct->type == 'Server slots') { - $user->increment('server_limit', $shopProduct->quantity); - } - - //update role give Referral-reward - if ($user->role == 'member') { - $user->update(['role' => 'client']); - - if ((config('SETTINGS::REFERRAL:MODE') == 'commission' || config('SETTINGS::REFERRAL:MODE') == 'both') && $shopProduct->type == 'Credits') { - if ($ref_user = DB::table('user_referrals')->where('registered_user_id', '=', $user->id)->first()) { - $ref_user = User::findOrFail($ref_user->referral_id); - $increment = number_format($shopProduct->quantity / 100 * config('SETTINGS::REFERRAL:PERCENTAGE'), 0, '', ''); - $ref_user->increment('credits', $increment); - - //LOGS REFERRALS IN THE ACTIVITY LOG - activity() - ->performedOn($user) - ->causedBy($ref_user) - ->log('gained '.$increment.' '.config('SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME').' for commission-referral of '.$user->name.' (ID:'.$user->id.')'); - } - } - } - - //store paid payment - $payment = Payment::create([ - 'user_id' => $user->id, - 'payment_id' => $paymentSession->payment_intent, - 'payment_method' => 'stripe', - 'type' => $shopProduct->type, - 'status' => 'paid', - 'amount' => $shopProduct->quantity, - 'price' => $shopProduct->price - ($shopProduct->price * PartnerDiscount::getDiscount() / 100), - 'tax_value' => $shopProduct->getTaxValue(), - 'total_price' => $shopProduct->getTotalPrice(), - 'tax_percent' => $shopProduct->getTaxPercent(), - 'currency_code' => $shopProduct->currency_code, - 'shop_item_product_id' => $shopProduct->id, - ]); - - //payment notification - $user->notify(new ConfirmPaymentNotification($payment)); - - event(new UserUpdateCreditsEvent($user)); - - //only create invoice if SETTINGS::INVOICE:ENABLED is true - if (config('SETTINGS::INVOICE:ENABLED') == 'true') { - $this->createInvoice($user, $payment, 'paid', $shopProduct->currency_code); - } - - //redirect back to home - return redirect()->route('home')->with('success', __('Your credit balance has been increased!')); - } else { - if ($paymentIntent->status == 'processing') { - - //store processing payment - $payment = Payment::create([ - 'user_id' => $user->id, - 'payment_id' => $paymentSession->payment_intent, - 'payment_method' => 'stripe', - 'type' => $shopProduct->type, - 'status' => 'processing', - 'amount' => $shopProduct->quantity, - 'price' => $shopProduct->price, - 'tax_value' => $shopProduct->getTaxValue(), - 'total_price' => $shopProduct->getTotalPrice(), - 'tax_percent' => $shopProduct->getTaxPercent(), - 'currency_code' => $shopProduct->currency_code, - 'shop_item_product_id' => $shopProduct->id, - ]); - - //only create invoice if SETTINGS::INVOICE:ENABLED is true - if (config('SETTINGS::INVOICE:ENABLED') == 'true') { - $this->createInvoice($user, $payment, 'paid', $shopProduct->currency_code); - } - - //redirect back to home - return redirect()->route('home')->with('success', __('Your payment is being processed!')); - } - if ($paymentDbEntry == 0 && $paymentIntent->status != 'processing') { - $stripeClient->paymentIntents->cancel($paymentIntent->id); - - //redirect back to home - return redirect()->route('home')->with('success', __('Your payment has been canceled!')); - } else { - abort(402); - } - } - } catch (HttpException $ex) { - if (env('APP_ENV') == 'local') { - echo $ex->statusCode; - dd($ex->getMessage()); - } else { - abort(422); - } - } - } - - /** - * @param Request $request - */ - protected function handleStripePaymentSuccessHook($paymentIntent) - { - try { - // Get payment db entry - $payment = Payment::where('payment_id', $paymentIntent->id)->first(); - $user = User::where('id', $payment->user_id)->first(); - - if ($paymentIntent->status == 'succeeded' && $payment->status == 'processing') { - - //update server limit - if (config('SETTINGS::USER:SERVER_LIMIT_AFTER_IRL_PURCHASE') !== 0) { - if ($user->server_limit < config('SETTINGS::USER:SERVER_LIMIT_AFTER_IRL_PURCHASE')) { - $user->update(['server_limit' => config('SETTINGS::USER:SERVER_LIMIT_AFTER_IRL_PURCHASE')]); - } - } - //update User with bought item - if ($shopProduct->type == 'Credits') { - $user->increment('credits', $shopProduct->quantity); - } elseif ($shopProduct->type == 'Server slots') { - $user->increment('server_limit', $shopProduct->quantity); - } - - //update role give Referral-reward - if ($user->role == 'member') { - $user->update(['role' => 'client']); - - if ((config('SETTINGS::REFERRAL:MODE') == 'commission' || config('SETTINGS::REFERRAL:MODE') == 'both') && $shopProduct->type == 'Credits') { - if ($ref_user = DB::table('user_referrals')->where('registered_user_id', '=', $user->id)->first()) { - $ref_user = User::findOrFail($ref_user->referral_id); - $increment = number_format($shopProduct->quantity / 100 * config('SETTINGS::REFERRAL:PERCENTAGE'), 0, '', ''); - $ref_user->increment('credits', $increment); - - //LOGS REFERRALS IN THE ACTIVITY LOG - activity() - ->performedOn($user) - ->causedBy($ref_user) - ->log('gained '.$increment.' '.config('SETTINGS::SYSTEM:CREDITS_DISPLAY_NAME').' for commission-referral of '.$user->name.' (ID:'.$user->id.')'); - } - } - } - - //update payment db entry status - $payment->update(['status' => 'paid']); - - //payment notification - $user->notify(new ConfirmPaymentNotification($payment)); - event(new UserUpdateCreditsEvent($user)); - - //only create invoice if SETTINGS::INVOICE:ENABLED is true - if (config('SETTINGS::INVOICE:ENABLED') == 'true') { - $this->createInvoice($user, $payment, 'paid', strtoupper($paymentIntent->currency)); - } - } - } catch (HttpException $ex) { - abort(422); - } - } - - /** - * @param Request $request - */ - public function StripeWebhooks(Request $request) - { - \Stripe\Stripe::setApiKey($this->getStripeSecret()); - - try { - $payload = @file_get_contents('php://input'); - $sig_header = $request->header('Stripe-Signature'); - $event = null; - $event = \Stripe\Webhook::constructEvent( - $payload, - $sig_header, - $this->getStripeEndpointSecret() - ); - } catch (\UnexpectedValueException $e) { - // Invalid payload - - abort(400); - } catch (\Stripe\Exception\SignatureVerificationException $e) { - // Invalid signature - - abort(400); - } - - // Handle the event - switch ($event->type) { - case 'payment_intent.succeeded': - $paymentIntent = $event->data->object; // contains a \Stripe\PaymentIntent - $this->handleStripePaymentSuccessHook($paymentIntent); - break; - default: - echo 'Received unknown event type '.$event->type; - } - } - - /** - * @return \Stripe\StripeClient - */ - protected function getStripeClient() - { - return new \Stripe\StripeClient($this->getStripeSecret()); - } - - /** - * @return string - */ - protected function getStripeSecret() - { - return env('APP_ENV') == 'local' - ? config('SETTINGS::PAYMENTS:STRIPE:TEST_SECRET') - : config('SETTINGS::PAYMENTS:STRIPE:SECRET'); - } - - /** - * @return string - */ - protected function getStripeEndpointSecret() - { - return env('APP_ENV') == 'local' - ? config('SETTINGS::PAYMENTS:STRIPE:ENDPOINT_TEST_SECRET') - : config('SETTINGS::PAYMENTS:STRIPE:ENDPOINT_SECRET'); - } - - public function checkAmount($amount, $currencyCode, $payment_method) - { - $minimums = [ - "USD" => [ - "paypal" => 0, - "stripe" => 0.5 - ], - "AED" => [ - "paypal" => 0, - "stripe" => 2 - ], - "AUD" => [ - "paypal" => 0, - "stripe" => 0.5 - ], - "BGN" => [ - "paypal" => 0, - "stripe" => 1 - ], - "BRL" => [ - "paypal" => 0, - "stripe" => 0.5 - ], - "CAD" => [ - "paypal" => 0, - "stripe" => 0.5 - ], - "CHF" => [ - "paypal" => 0, - "stripe" => 0.5 - ], - "CZK" => [ - "paypal" => 0, - "stripe" => 15 - ], - "DKK" => [ - "paypal" => 0, - "stripe" => 2.5 - ], - "EUR" => [ - "paypal" => 0, - "stripe" => 0.5 - ], - "GBP" => [ - "paypal" => 0, - "stripe" => 0.3 - ], - "HKD" => [ - "paypal" => 0, - "stripe" => 4 - ], - "HRK" => [ - "paypal" => 0, - "stripe" => 0.5 - ], - "HUF" => [ - "paypal" => 0, - "stripe" => 175 - ], - "INR" => [ - "paypal" => 0, - "stripe" => 0.5 - ], - "JPY" => [ - "paypal" => 0, - "stripe" => 0.5 - ], - "MXN" => [ - "paypal" => 0, - "stripe" => 10 - ], - "MYR" => [ - "paypal" => 0, - "stripe" => 2 - ], - "NOK" => [ - "paypal" => 0, - "stripe" => 3 - ], - "NZD" => [ - "paypal" => 0, - "stripe" => 0.5 - ], - "PLN" => [ - "paypal" => 0, - "stripe" => 2 - ], - "RON" => [ - "paypal" => 0, - "stripe" => 2 - ], - "SEK" => [ - "paypal" => 0, - "stripe" => 3 - ], - "SGD" => [ - "paypal" => 0, - "stripe" => 0.5 - ], - "THB" => [ - "paypal" => 0, - "stripe" => 10 - ] - ]; - return $amount >= $minimums[$currencyCode][$payment_method]; - } - - /** * @return JsonResponse|mixed * @@ -564,9 +153,7 @@ class PaymentController extends Controller return datatables($query) ->addColumn('user', function (Payment $payment) { - return - ($payment->user)?''.$payment->user->name.'':__('Unknown user'); - + return ($payment->user) ? '' . $payment->user->name . '' : __('Unknown user'); }) ->editColumn('price', function (Payment $payment) { return $payment->formatToCurrency($payment->price); @@ -575,18 +162,20 @@ class PaymentController extends Controller return $payment->formatToCurrency($payment->tax_value); }) ->editColumn('tax_percent', function (Payment $payment) { - return $payment->tax_percent.' %'; + return $payment->tax_percent . ' %'; }) ->editColumn('total_price', function (Payment $payment) { return $payment->formatToCurrency($payment->total_price); }) ->editColumn('created_at', function (Payment $payment) { - return ['display' => $payment->created_at ? $payment->created_at->diffForHumans() : '', - 'raw' => $payment->created_at ? strtotime($payment->created_at) : '']; + return [ + 'display' => $payment->created_at ? $payment->created_at->diffForHumans() : '', + 'raw' => $payment->created_at ? strtotime($payment->created_at) : '' + ]; }) ->addColumn('actions', function (Payment $payment) { - return ''; + return ''; }) ->rawColumns(['actions', 'user']) ->make(true);