Add paid-account subscription checkout and confirmation flow #359
Labels
No labels
automated
code-quality
component: admin dashboard
component: backend
component: billing
component: content management
component: faqs
component: game genres
component: game lists
component: game reviews
component: game search
component: games
component: internal notifications
component: platforms
component: security
component: tests
component: user api
component: user badges
component: user blogs
component: user consoles
component: user favorites
component: user friends
component: user notifications
component: user profiles
component: user site notifications
component: user wishlists
component: web design
dependencies
php
priority
high
priority
low
priority
medium
security-hotspot
source: codex
source: sonarqube
status
awaiting feedback
status
backlog
status
done
status
in progress
status
in queue
status
in review
status
needs codex review
status
needs investigation
status
wontfix
type: bug
type: documentation
type: feature
type: improvement
type: regression
type: task
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
MyVideoGameList/myvideogamelist.com#359
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The Stripe/Cashier foundation from issue #1 is in place, but MyVideoGameList still needs the actual paid-account subscription flow built on top of it.
Issue #1's follow-up notes called out that the donation/payment foundation should be easy to integrate with paid accounts, likely with multiple buttons for differing amounts. The older subscription-confirmation note also included a useful receipt-style template: welcome message, transaction/subscription details, renewal or expiration date, cancellation guidance, FAQ/support links, and a reminder to keep the message for records. This issue tracks turning that foundation into the first user-facing paid-account subscription experience.
Scope
Helpful Stripe Documentation
mode=subscription, passing configured Price IDs, and subscription Checkout behavior.Acceptance Criteria
STRIPE_KEY,STRIPE_SECRET,STRIPE_WEBHOOK_SECRET,CASHIER_CURRENCY,CASHIER_CURRENCY_LOCALE, paid-account Stripe Price IDs, and subscription type names.Test Coverage Required
vendor/bin/pint --dirtybefore closing the issue.Progress Checklist
Useris billable and retains legacystripe_idImplemented and committed the current issue #359 slice in commit
53fe918(Add donation billing and gated account subscriptions).What changed
Help Support MyVideoGameListdonation card:$10,$25,$50preset buttons.$5.00minimum donation default and client-side below-minimum feedback./billing/donations/{donation}/receipt./account-subscriptionsroutes/controller/actions./billing/subscriptions/{subscription}/invoice.public/images/.laravel/pennantand gated user-facing account subscription interfaces behindApp\Features\AccountSubscriptions.ACCOUNT_SUBSCRIPTIONS_ENABLED=false.Upgradeand Settings subscription UI are hidden while disabled.Verification run
php artisan test --compact tests/Feature/AccountSubscriptionTest.php- passed (15 passed)php artisan test --compact tests/Feature/Settings/ProfileUpdateTest.php --filter="profile billing tab"- passed (5 passed)php artisan test --compact tests/Feature/DonationTest.php- passed (16 passed)php artisan test --compact tests/Feature/AccountSubscriptionTest.php tests/Feature/BillingFoundationTest.php tests/Feature/DonationTest.php- passed earlier during closeout (41 passed)vendor/bin/pint --dirty --format agent- passednpm run build- passedImportant notes / remaining work
App\Features\AccountSubscriptionsto use stored Pennant values/admin tooling.Live enablement checklist
Before turning this on in production:
2026_06_05_120000_add_local_billing_history_fields_to_subscriptions_table.php2026_06_06_013630_create_features_table.phpSTRIPE_KEYSTRIPE_SECRETSTRIPE_WEBHOOK_SECRETCASHIER_CURRENCYCASHIER_CURRENCY_LOCALESTRIPE_ACCOUNT_SUBSCRIPTION_*_PRICE_IDvaluesSTRIPE_LEGENDARY_SUPPORTER_PRICE_IDcheckout.session.completedcheckout.session.expiredpayment_intent.payment_failedcustomer.subscription.createdcustomer.subscription.updatedcustomer.subscription.deletedACCOUNT_SUBSCRIPTIONS_ENABLED=true.php artisan optimize:clear, then rebuild cache as appropriate for deploy).Once the production/dashboard pieces are confirmed and the feature flag is enabled, the remaining issue checkboxes related to external config and production readiness can be marked complete.