Take payment at registration. Default rail is credit card via Stripe; studio admin can set a student to e-transfer (recorded, marked paid manually) or comp (no charge). Single bookings charged once; weekly/group charged full-term upfront. Numbered receipt emailed automatically on payment.
Spec:docs/features/payments.md
Scope
Stripe creds as WP options on a Studio Settings page (manage_billing): publishable/secret key, mode, currency
Per-student method via user meta us_payment_method (card/etransfer/comp), default card
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Take payment at registration. Default rail is credit card via Stripe; studio admin can set a student to e-transfer (recorded, marked paid manually) or comp (no charge). Single bookings charged once; weekly/group charged full-term upfront. Numbered receipt emailed automatically on payment.
Spec:
docs/features/payments.mdScope
manage_billing): publishable/secret key, mode, currencyus_payment_method(card/etransfer/comp), defaultcard{prefix}us_payments(amount, currency, method, status, stripe_payment_intent_id, receipt_number, receipt_sent_at, paid_at, polymorphic registration ref)src/Payment/:Payment,PaymentRepository,StripeGateway,ReceiptMailer,StudioSettings,PaymentEndpointPOST /payments/intent(book_lesson),POST /payments/webhook(Stripe signature verified),PATCH /payments/{id}(manage_billing)paid: confirm linked registration, assign receipt number, email receiptAcceptance
tests/Unit/Payment/passingClosing as complete. Implemented and merged across PR #25 (foundation: e-transfer/comp, config, receipts) and PR #28 (live Stripe card charges + webhook).
thatguygriff referenced this issue2026-07-18 21:17:47 +00:00