fix: admin tier assignment when stripe price env vars are empty
env() returns an empty string (not null) when a STRIPE_PRICE_*
var is set but blank, so the ?? fallback never fired and the
synthetic subscription was created with stripe_price = '' —
which then resolved back to free in Plan::resolveForUser.
Switch to ?: so empty strings also fall back to the synthetic
price_admin_{tier}_{cadence} id, and backfill the matching Plan
row's stripe_price_id_{cadence} when empty so resolution succeeds.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -182,7 +182,14 @@ class UserResource extends Resource
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$priceId = config("services.stripe.prices.{$tier}.{$cadence}") ?? "price_admin_{$tier}_{$cadence}";
|
$priceId = config("services.stripe.prices.{$tier}.{$cadence}") ?: "price_admin_{$tier}_{$cadence}";
|
||||||
|
|
||||||
|
$planColumn = $cadence === 'annual' ? 'stripe_price_id_annual' : 'stripe_price_id_monthly';
|
||||||
|
$plan = Plan::where('name', $tier)->first();
|
||||||
|
|
||||||
|
if ($plan && empty($plan->{$planColumn})) {
|
||||||
|
$plan->update([$planColumn => $priceId]);
|
||||||
|
}
|
||||||
|
|
||||||
$user->subscriptions()->create([
|
$user->subscriptions()->create([
|
||||||
'type' => 'default',
|
'type' => 'default',
|
||||||
|
|||||||
Reference in New Issue
Block a user