From 1b055f03165b7d14315571b4cbaa6902d3d68092 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Sun, 25 Feb 2024 14:00:35 +0100 Subject: [PATCH] Refactor subscription pricing and update server limit --- app/Livewire/Subscription/PricingPlans.php | 38 +++++++++++-------- .../subscription/pricing-plans.blade.php | 13 +++---- routes/webhooks.php | 8 ++++ 3 files changed, 36 insertions(+), 23 deletions(-) diff --git a/app/Livewire/Subscription/PricingPlans.php b/app/Livewire/Subscription/PricingPlans.php index a3afcaabc..3996d70d5 100644 --- a/app/Livewire/Subscription/PricingPlans.php +++ b/app/Livewire/Subscription/PricingPlans.php @@ -9,8 +9,9 @@ use Stripe\Checkout\Session; class PricingPlans extends Component { public bool $isTrial = false; - public function mount() { - $this->isTrial = !data_get(currentTeam(),'subscription.stripe_trial_already_ended'); + public function mount() + { + $this->isTrial = !data_get(currentTeam(), 'subscription.stripe_trial_already_ended'); if (config('constants.limits.trial_period') == 0) { $this->isTrial = false; } @@ -26,15 +27,15 @@ class PricingPlans extends Component case 'basic-yearly': $priceId = config('subscription.stripe_price_id_basic_yearly'); break; - case 'ultimate-monthly': - $priceId = config('subscription.stripe_price_id_ultimate_monthly'); - break; case 'pro-monthly': $priceId = config('subscription.stripe_price_id_pro_monthly'); break; case 'pro-yearly': $priceId = config('subscription.stripe_price_id_pro_yearly'); break; + case 'ultimate-monthly': + $priceId = config('subscription.stripe_price_id_ultimate_monthly'); + break; case 'ultimate-yearly': $priceId = config('subscription.stripe_price_id_ultimate_yearly'); break; @@ -64,18 +65,25 @@ class PricingPlans extends Component 'success_url' => route('dashboard', ['success' => true]), 'cancel_url' => route('subscription.index', ['cancelled' => true]), ]; - - if (!data_get($team,'subscription.stripe_trial_already_ended')) { - if (config('constants.limits.trial_period') > 0) { - $payload['subscription_data'] = [ - 'trial_period_days' => config('constants.limits.trial_period'), - 'trial_settings' => [ - 'end_behavior' => [ - 'missing_payment_method' => 'cancel', - ] - ], + if (str($type)->contains('ultimate')) { + $payload['line_items'][0]['adjustable_quantity'] = [ + 'enabled' => true, + 'minimum' => 10, ]; + $payload['line_items'][0]['quantity'] = 10; } + + if (!data_get($team, 'subscription.stripe_trial_already_ended')) { + if (config('constants.limits.trial_period') > 0) { + $payload['subscription_data'] = [ + 'trial_period_days' => config('constants.limits.trial_period'), + 'trial_settings' => [ + 'end_behavior' => [ + 'missing_payment_method' => 'cancel', + ] + ], + ]; + } $payload['payment_method_collection'] = 'if_required'; } $customer = currentTeam()->subscription?->stripe_customer_id ?? null; diff --git a/resources/views/livewire/subscription/pricing-plans.blade.php b/resources/views/livewire/subscription/pricing-plans.blade.php index bb7001119..e4a3cc762 100644 --- a/resources/views/livewire/subscription/pricing-plans.blade.php +++ b/resources/views/livewire/subscription/pricing-plans.blade.php @@ -22,16 +22,13 @@ - - Contact us + + {{ $isTrial ? 'Start Trial' : 'Subscribe' }} - - Contact us + {{ $isTrial ? 'Start Trial' : 'Subscribe' }} @endif diff --git a/routes/webhooks.php b/routes/webhooks.php index e4e9c043b..03bbfd999 100644 --- a/routes/webhooks.php +++ b/routes/webhooks.php @@ -875,6 +875,14 @@ Route::post('/payments/stripe/events', function () { $alreadyCancelAtPeriodEnd = data_get($subscription, 'stripe_cancel_at_period_end'); $feedback = data_get($data, 'cancellation_details.feedback'); $comment = data_get($data, 'cancellation_details.comment'); + $lookup_key = data_get($data, 'items.data.0.price.lookup_key'); + if (str($lookup_key)->contains('ultimate')) { + $quantity = data_get($data, 'items.data.0.quantity', 10); + $team = data_get($subscription, 'team'); + $team->update([ + 'custom_server_limit' => $quantity, + ]); + } $subscription->update([ 'stripe_feedback' => $feedback, 'stripe_comment' => $comment,