From 45aaac4189815252df4615c276c21efc5b10dec5 Mon Sep 17 00:00:00 2001 From: IceToast <> Date: Sun, 15 Jan 2023 00:43:13 +0100 Subject: [PATCH] =?UTF-8?q?refactor:=20=E2=99=BB=EF=B8=8F=20Extracted=20Pa?= =?UTF-8?q?yment=20logic=20to=20events?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PaymentGateways/PayPal/index.php | 127 ++++++------------ 1 file changed, 39 insertions(+), 88 deletions(-) diff --git a/app/Extensions/PaymentGateways/PayPal/index.php b/app/Extensions/PaymentGateways/PayPal/index.php index 4a260155..3cee4748 100644 --- a/app/Extensions/PaymentGateways/PayPal/index.php +++ b/app/Extensions/PaymentGateways/PayPal/index.php @@ -31,15 +31,15 @@ function PaypalPay(Request $request) $user = Auth::user(); $shopProduct = ShopProduct::findOrFail($request->shopProduct); - // create a new payment - $payment = Payment::create([ + // create a new payment + $payment = Payment::create([ 'user_id' => $user->id, 'payment_id' => null, 'payment_method' => 'paypal', 'type' => $shopProduct->type, 'status' => 'open', '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(), @@ -50,52 +50,52 @@ function PaypalPay(Request $request) $request = new OrdersCreateRequest(); $request->prefer('return=representation'); $request->body = [ - "intent" => "CAPTURE", - "purchase_units" => [ - [ - "reference_id" => uniqid(), - "description" => $shopProduct->display . (PartnerDiscount::getDiscount()?(" (" . __('Discount') . " " . PartnerDiscount::getDiscount() . '%)'):""), - "amount" => [ - "value" => $shopProduct->getTotalPrice(), - 'currency_code' => strtoupper($shopProduct->currency_code), - 'breakdown' => [ - 'item_total' => - [ - 'currency_code' => strtoupper($shopProduct->currency_code), - 'value' => $shopProduct->getPriceAfterDiscount(), - ], - 'tax_total' => - [ - 'currency_code' => strtoupper($shopProduct->currency_code), - 'value' => $shopProduct->getTaxValue(), - ] + "intent" => "CAPTURE", + "purchase_units" => [ + [ + "reference_id" => uniqid(), + "description" => $shopProduct->display . (PartnerDiscount::getDiscount() ? (" (" . __('Discount') . " " . PartnerDiscount::getDiscount() . '%)') : ""), + "amount" => [ + "value" => $shopProduct->getTotalPrice(), + 'currency_code' => strtoupper($shopProduct->currency_code), + 'breakdown' => [ + 'item_total' => + [ + 'currency_code' => strtoupper($shopProduct->currency_code), + 'value' => $shopProduct->getPriceAfterDiscount(), + ], + 'tax_total' => + [ + 'currency_code' => strtoupper($shopProduct->currency_code), + 'value' => $shopProduct->getTaxValue(), ] ] ] - ], - "application_context" => [ - "cancel_url" => route('payment.Cancel'), - "return_url" => route('payment.PayPalSuccess', ['payment' => $payment->id]), - 'brand_name' => config('app.name', 'Laravel'), - 'shipping_preference' => 'NO_SHIPPING' ] + ], + "application_context" => [ + "cancel_url" => route('payment.Cancel'), + "return_url" => route('payment.PayPalSuccess', ['payment' => $payment->id]), + 'brand_name' => config('app.name', 'Laravel'), + 'shipping_preference' => 'NO_SHIPPING' + ] ]; - - try { // Call API with your client and get a response for your call $response = getPayPalClient()->execute($request); Redirect::away($response->result->links[1]->href)->send(); + return; } catch (HttpException $ex) { error_log($ex->statusCode); error_log($ex->getMessage()); $payment->delete(); - return Redirect::route('payment.Cancel'); + Redirect::route('payment.Cancel'); + return; } } /** @@ -104,9 +104,11 @@ function PaypalPay(Request $request) function PaypalSuccess(Request $laravelRequest) { $user = Auth::user(); + $user = User::findOrFail($user->id); + $payment = Payment::findOrFail($laravelRequest->payment); $shopProduct = ShopProduct::findOrFail($payment->shop_item_product_id); - + $request = new OrdersCaptureRequest($laravelRequest->input('token')); $request->prefer('return=representation'); @@ -114,55 +116,6 @@ function PaypalSuccess(Request $laravelRequest) // Call API with your client and get a response for your call $response = getPayPalClient()->execute($request); if ($response->statusCode == 201 || $response->statusCode == 200) { - //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); - } - //give referral commission always - if((config("SETTINGS::REFERRAL:MODE") == "commission" || config("SETTINGS::REFERRAL:MODE") == "both") && $shopProduct->type=="Credits" && config("SETTINGS::REFERRAL::ALWAYS_GIVE_COMMISSION") == "true"){ - 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*(PartnerDiscount::getCommission($ref_user->id))/100,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 role give Referral-reward - if ($user->role == 'member') { - $user->update(['role' => 'client']); - - //give referral commission only on first purchase - if((config("SETTINGS::REFERRAL:MODE") == "commission" || config("SETTINGS::REFERRAL:MODE") == "both") && $shopProduct->type=="Credits" && config("SETTINGS::REFERRAL::ALWAYS_GIVE_COMMISSION") == "false"){ - 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*(PartnerDiscount::getCommission($ref_user->id))/100,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 $payment->update([ 'status' => 'success', @@ -170,13 +123,11 @@ function PaypalSuccess(Request $laravelRequest) ]); event(new UserUpdateCreditsEvent($user)); - event(new PaymentEvent($payment)); - - error_log("Payment successfull"); + event(new PaymentEvent($user, $payment, $shopProduct)); // redirect to the payment success page with success message Redirect::route('home')->with('success', 'Payment successful')->send(); - } elseif(env('APP_ENV') == 'local') { + } elseif (env('APP_ENV') == 'local') { // If call returns body in response, you can get the deserialized version from the result attribute of the response $payment->delete(); dd($response); @@ -184,7 +135,7 @@ function PaypalSuccess(Request $laravelRequest) $payment->update([ 'status' => 'failed', 'payment_id' => $response->result->id, - ]); + ]); abort(500); } } catch (HttpException $ex) { @@ -196,7 +147,7 @@ function PaypalSuccess(Request $laravelRequest) $payment->update([ 'status' => 'failed', 'payment_id' => $response->result->id, - ]); + ]); abort(422); } } @@ -262,4 +213,4 @@ function getConfig() ], ], ]; -} \ No newline at end of file +}