fix(stripe-webhook): grant lifetime entitlement on no_payment_required (100%-off checkout) - #116
Conversation
…checkout) CodeRabbit (PR #115): a fully-discounted payment-mode checkout completes with payment_status='no_payment_required'. The prior guard skipped entitlement for anything != 'paid' and waited for async_payment_succeeded, which never fires for such sessions → the user never got lifetime access. Now grant on both 'paid' and 'no_payment_required'; only genuinely 'unpaid' async sessions await settlement. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Deploying with
|
| Status | Name | Latest Commit | Updated (UTC) |
|---|---|---|---|
| ❌ Deployment failed View logs |
paycraft-docs | 4f05681 | Jul 13 2026, 02:57 PM |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Addresses CodeRabbit's Functional-Correctness finding on PR #115.
Bug: A fully-discounted (100%-off coupon) Stripe payment-mode checkout completes with
payment_status: "no_payment_required". The guard added in #114 skipped entitlement for anything!== "paid"and waited forcheckout.session.async_payment_succeeded— which never fires for a no-payment-required session → the buyer never received lifetime access.Fix: Grant on both
paidandno_payment_required; only a genuinelyunpaidasync session awaits settlement.Not yet deployed (edge-functions deploy is pending CI secrets), so this ships correct once functions deploy.
🤖 Generated with Claude Code