From 417d5763ecf68f98b41a0f59914c6e45d540438a Mon Sep 17 00:00:00 2001 From: "sweep-ai[bot]" <128439645+sweep-ai[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 17:38:37 +0000 Subject: [PATCH] feat: Implement StripePaymentController for handli --- .../Controllers/StripePaymentController.php | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 app/Http/Controllers/StripePaymentController.php diff --git a/app/Http/Controllers/StripePaymentController.php b/app/Http/Controllers/StripePaymentController.php new file mode 100644 index 0000000..51dc377 --- /dev/null +++ b/app/Http/Controllers/StripePaymentController.php @@ -0,0 +1,82 @@ +validate([ + 'amount' => 'required|numeric', + 'payment_method' => 'required|string', + ]); + + $user = $request->user(); + $amount = $request->input('amount'); + $paymentMethod = $request->input('payment_method'); + + try { + $payment = $user->charge($amount * 100, $paymentMethod); + return response()->json(['success' => true, 'payment_id' => $payment->id]); + } catch (IncompletePayment $exception) { + return response()->json(['success' => false, 'error' => $exception->getMessage()], 402); + } + } + + public function createSubscription(Request $request) + { + $request->validate([ + 'plan' => 'required|string', + ]); + + $user = $request->user(); + $plan = $request->input('plan'); + + try { + $subscription = $user->newSubscription('default', $plan)->create($request->input('payment_method')); + return response()->json(['success' => true, 'subscription_id' => $subscription->stripe_id]); + } catch (IncompletePayment $exception) { + return response()->json(['success' => false, 'error' => $exception->getMessage()], 402); + } + } + + public function updateSubscription(Request $request) + { + $request->validate([ + 'subscription_id' => 'required|string', + 'plan' => 'required|string', + ]); + + $user = $request->user(); + $subscriptionId = $request->input('subscription_id'); + $plan = $request->input('plan'); + + try { + $subscription = $user->subscription($subscriptionId)->swap($plan); + return response()->json(['success' => true, 'new_plan' => $subscription->stripe_plan]); + } catch (\Exception $exception) { + return response()->json(['success' => false, 'error' => $exception->getMessage()], 400); + } + } + + public function cancelSubscription(Request $request) + { + $request->validate([ + 'subscription_id' => 'required|string', + ]); + + $user = $request->user(); + $subscriptionId = $request->input('subscription_id'); + + try { + $user->subscription($subscriptionId)->cancel(); + return response()->json(['success' => true, 'message' => 'Subscription cancelled successfully.']); + } catch (\Exception $exception) { + return response()->json(['success' => false, 'error' => $exception->getMessage()], 400); + } + } +}