diff --git a/.env.example b/.env.example
index 2002df16..d66a920f 100644
--- a/.env.example
+++ b/.env.example
@@ -63,8 +63,11 @@ STRIPE_KEY=
STRIPE_SECRET=
STRIPE_WEBHOOK_SECRET=
STRIPE_MINI_PRICE_ID=
+STRIPE_MINI_PRICE_ID_EAP=
STRIPE_PRO_PRICE_ID=
+STRIPE_PRO_PRICE_ID_EAP=
STRIPE_MAX_PRICE_ID=
+STRIPE_MAX_PRICE_ID_EAP=
STRIPE_FOREVER_PRICE_ID=
STRIPE_TRIAL_PRICE_ID=
STRIPE_MINI_PAYMENT_LINK=
diff --git a/app/Enums/Subscription.php b/app/Enums/Subscription.php
index d767f438..f336b0b5 100644
--- a/app/Enums/Subscription.php
+++ b/app/Enums/Subscription.php
@@ -26,9 +26,12 @@ public static function fromStripeSubscription(\Stripe\Subscription $subscription
public static function fromStripePriceId(string $priceId): self
{
return match ($priceId) {
- config('subscriptions.plans.mini.stripe_price_id') => self::Mini,
- config('subscriptions.plans.pro.stripe_price_id') => self::Pro,
- config('subscriptions.plans.max.stripe_price_id') => self::Max,
+ config('subscriptions.plans.mini.stripe_price_id'),
+ config('subscriptions.plans.mini.stripe_price_id_eap') => self::Mini,
+ config('subscriptions.plans.pro.stripe_price_id'),
+ config('subscriptions.plans.pro.stripe_price_id_eap') => self::Pro,
+ config('subscriptions.plans.max.stripe_price_id'),
+ config('subscriptions.plans.max.stripe_price_id_eap') => self::Max,
default => throw new RuntimeException("Unknown Stripe price id: {$priceId}"),
};
}
@@ -52,7 +55,10 @@ public function name(): string
public function stripePriceId(): string
{
- return config("subscriptions.plans.{$this->value}.stripe_price_id");
+ // EAP ends June 1st at midnight UTC
+ return now()->isBefore('2025-06-01 00:00:00')
+ ? config("subscriptions.plans.{$this->value}.stripe_price_id_eap")
+ : config("subscriptions.plans.{$this->value}.stripe_price_id");
}
public function stripePaymentLink(): string
diff --git a/config/subscriptions.php b/config/subscriptions.php
index ea97182f..2ab453dd 100644
--- a/config/subscriptions.php
+++ b/config/subscriptions.php
@@ -2,35 +2,38 @@
return [
'plans' => [
- \App\Enums\Subscription::Mini->value => [
- 'name' => 'Early Access (Mini)',
+ 'mini' => [
+ 'name' => 'Mini',
'stripe_price_id' => env('STRIPE_MINI_PRICE_ID'),
+ 'stripe_price_id_eap' => env('STRIPE_MINI_PRICE_ID_EAP'),
'stripe_payment_link' => env('STRIPE_MINI_PAYMENT_LINK'),
'anystack_product_id' => env('ANYSTACK_PRODUCT_ID'),
'anystack_policy_id' => env('ANYSTACK_MINI_POLICY_ID'),
],
- \App\Enums\Subscription::Pro->value => [
- 'name' => 'Early Access (Pro)',
+ 'pro' => [
+ 'name' => 'Pro',
'stripe_price_id' => env('STRIPE_PRO_PRICE_ID'),
+ 'stripe_price_id_eap' => env('STRIPE_PRO_PRICE_ID_EAP'),
'stripe_payment_link' => env('STRIPE_PRO_PAYMENT_LINK'),
'anystack_product_id' => env('ANYSTACK_PRODUCT_ID'),
'anystack_policy_id' => env('ANYSTACK_PRO_POLICY_ID'),
],
- \App\Enums\Subscription::Max->value => [
- 'name' => 'Early Access (Max)',
+ 'max' => [
+ 'name' => 'Max',
'stripe_price_id' => env('STRIPE_MAX_PRICE_ID'),
+ 'stripe_price_id_eap' => env('STRIPE_MAX_PRICE_ID_EAP'),
'stripe_payment_link' => env('STRIPE_MAX_PAYMENT_LINK'),
'anystack_product_id' => env('ANYSTACK_PRODUCT_ID'),
'anystack_policy_id' => env('ANYSTACK_MAX_POLICY_ID'),
],
- \App\Enums\Subscription::Forever->value => [
+ 'forever' => [
'name' => 'Forever',
'stripe_price_id' => env('STRIPE_FOREVER_PRICE_ID'),
'stripe_payment_link' => env('STRIPE_FOREVER_PAYMENT_LINK'),
'anystack_product_id' => env('ANYSTACK_PRODUCT_ID'),
'anystack_policy_id' => env('ANYSTACK_FOREVER_POLICY_ID'),
],
- \App\Enums\Subscription::Trial->value => [
+ 'trial' => [
'name' => 'Trial',
'stripe_price_id' => env('STRIPE_TRIAL_PRICE_ID'),
'stripe_payment_link' => env('STRIPE_TRIAL_PAYMENT_LINK'),
diff --git a/phpunit.xml b/phpunit.xml
index ab40d840..368547a6 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -33,6 +33,9 @@
+
+
+