From 2161464ee38c7f9cee03ec8c2b82b10cf70631d9 Mon Sep 17 00:00:00 2001 From: IceToast Date: Sun, 28 May 2023 02:34:59 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20=E2=9C=A8=20Added=20Enum=20for=20paymen?= =?UTF-8?q?t=20states?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Enums/PaymentStatus.php | 12 ++++++++++++ .../PaymentGateways/Mollie/MollieExtension.php | 16 ++++++---------- .../PaymentGateways/PayPal/PayPalExtension.php | 11 ++++------- .../PaymentGateways/Stripe/StripeExtension.php | 13 ++++--------- app/Listeners/UserPayment.php | 3 ++- 5 files changed, 28 insertions(+), 27 deletions(-) create mode 100644 app/Enums/PaymentStatus.php diff --git a/app/Enums/PaymentStatus.php b/app/Enums/PaymentStatus.php new file mode 100644 index 00000000..eb01dbdd --- /dev/null +++ b/app/Enums/PaymentStatus.php @@ -0,0 +1,12 @@ +input('payment')); - $payment->status = 'pending'; - $couponCode = $request->input('couponCode'); - - if ($couponCode) { - event(new CouponUsedEvent($couponCode)); - } + $payment->status = PaymentStatus::PROCESSING; + $payment->save(); Redirect::route('home')->with('success', 'Your payment is being processed')->send(); return; @@ -100,16 +97,15 @@ class MollieExtension extends AbstractExtension return response()->json(['success' => false]); } - $payment = Payment::findOrFail($response->json()['metadata']['payment_id']); - $payment->status->update([ - 'status' => $response->json()['status'], - ]); + $payment = Payment::findOrFail($response->json()['metadata']['payment_id']); $shopProduct = ShopProduct::findOrFail($payment->shop_item_product_id); event(new PaymentEvent($payment, $payment, $shopProduct)); if ($response->json()['status'] == 'paid') { $user = User::findOrFail($payment->user_id); + $payment->status = PaymentStatus::PAID; + $payment->save(); event(new UserUpdateCreditsEvent($user)); } } catch (Exception $ex) { diff --git a/app/Extensions/PaymentGateways/PayPal/PayPalExtension.php b/app/Extensions/PaymentGateways/PayPal/PayPalExtension.php index bef9b530..981d86ef 100644 --- a/app/Extensions/PaymentGateways/PayPal/PayPalExtension.php +++ b/app/Extensions/PaymentGateways/PayPal/PayPalExtension.php @@ -7,6 +7,7 @@ use App\Events\PaymentEvent; use App\Events\UserUpdateCreditsEvent; use App\Extensions\PaymentGateways\PayPal\PayPalSettings; use App\Classes\PaymentExtension; +use App\Enums\PaymentStatus; use App\Models\PartnerDiscount; use App\Models\Payment; use App\Models\ShopProduct; @@ -104,7 +105,6 @@ class PayPalExtension extends PaymentExtension $payment = Payment::findOrFail($laravelRequest->payment); $shopProduct = ShopProduct::findOrFail($payment->shop_item_product_id); - $couponCode = $laravelRequest->input('couponCode'); $request = new OrdersCaptureRequest($laravelRequest->input('token')); $request->prefer('return=representation'); @@ -115,13 +115,10 @@ class PayPalExtension extends PaymentExtension if ($response->statusCode == 201 || $response->statusCode == 200) { //update payment $payment->update([ - 'status' => 'paid', + 'status' => PaymentStatus::PAID, 'payment_id' => $response->result->id, ]); - if ($couponCode) { - event(new CouponUsedEvent($couponCode)); - } event(new UserUpdateCreditsEvent($user)); event(new PaymentEvent($user, $payment, $shopProduct)); @@ -134,7 +131,7 @@ class PayPalExtension extends PaymentExtension dd($response); } else { $payment->update([ - 'status' => 'cancelled', + 'status' => PaymentStatus::CANCELED, 'payment_id' => $response->result->id, ]); abort(500); @@ -146,7 +143,7 @@ class PayPalExtension extends PaymentExtension dd($ex->getMessage()); } else { $payment->update([ - 'status' => 'cancelled', + 'status' => PaymentStatus::CANCELED, 'payment_id' => $response->result->id, ]); abort(422); diff --git a/app/Extensions/PaymentGateways/Stripe/StripeExtension.php b/app/Extensions/PaymentGateways/Stripe/StripeExtension.php index 2c975232..b9613431 100644 --- a/app/Extensions/PaymentGateways/Stripe/StripeExtension.php +++ b/app/Extensions/PaymentGateways/Stripe/StripeExtension.php @@ -3,6 +3,7 @@ namespace App\Extensions\PaymentGateways\Stripe; use App\Classes\AbstractExtension; +use App\Enums\PaymentStatus; use App\Events\PaymentEvent; use App\Events\CouponUsedEvent; use App\Events\UserUpdateCreditsEvent; @@ -93,7 +94,6 @@ class StripeExtension extends AbstractExtension $user = User::findOrFail($user->id); $payment = Payment::findOrFail($request->input('payment')); $shopProduct = ShopProduct::findOrFail($payment->shop_item_product_id); - $couponCode = $request->input('couponCode'); Redirect::route('home')->with('success', 'Please wait for success')->send(); @@ -112,16 +112,11 @@ class StripeExtension extends AbstractExtension //update payment $payment->update([ 'payment_id' => $paymentSession->payment_intent, - 'status' => 'paid', + 'status' => PaymentStatus::PAID, ]); - if ($couponCode) { - event(new CouponUsedEvent(new Coupon, $couponCode)); - } - //payment notification $user->notify(new ConfirmPaymentNotification($payment)); - event(new UserUpdateCreditsEvent($user)); event(new PaymentEvent($user, $payment, $shopProduct)); @@ -133,7 +128,7 @@ class StripeExtension extends AbstractExtension //update payment $payment->update([ 'payment_id' => $paymentSession->payment_intent, - 'status' => 'processing', + 'status' => PaymentStatus::PROCESSING, ]); event(new PaymentEvent($user, $payment, $shopProduct)); @@ -174,7 +169,7 @@ class StripeExtension extends AbstractExtension //update payment db entry status $payment->update([ 'payment_id' => $payment->payment_id ?? $paymentIntent->id, - 'status' => 'paid' + 'status' => PaymentStatus::PAID, ]); //payment notification diff --git a/app/Listeners/UserPayment.php b/app/Listeners/UserPayment.php index 3417a7ce..9e1066ef 100644 --- a/app/Listeners/UserPayment.php +++ b/app/Listeners/UserPayment.php @@ -2,6 +2,7 @@ namespace App\Listeners; +use App\Enums\PaymentStatus; use App\Events\PaymentEvent; use App\Models\User; use Illuminate\Support\Facades\DB; @@ -48,7 +49,7 @@ class UserPayment $shopProduct = $event->shopProduct; // only update user if payment is paid - if ($event->payment->status != "paid") { + if ($event->payment->status != PaymentStatus::PAID) { return; }