A raw subscriptions()->exists() check treated a leftover incomplete / incomplete_expired row — which Cashier persists when a first payment fails or a 3DS challenge is abandoned — as a prior subscription, so a genuinely new customer retrying after a failed first attempt lost the $1 coupon and was charged full price. Exclude those never-started statuses so only a subscription that actually started (active, canceled, etc.) marks the account as a returning customer. |
||
|---|---|---|
| .. | ||
| Billing | ||
| BillingCycle.php | ||
| HexColorName.php | ||
| MentionParser.php | ||
| PostMediaRules.php | ||
| PostPlatformMetaRules.php | ||
| PostStatusRules.php | ||
| WorkspacePresence.php | ||