Add payments foundation (e-transfer/comp, Stripe config, receipts, e-transfer email) #25
Reference in New Issue
Block a user
Delete Branch "feature/payments"
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?
Implements the payments foundation (#7).
Pieces
us_payments(amount DECIMAL dollars, method, status, receipt number, stripe intent id, etransfer_email).src/Payment/:Payment,PaymentRepository,StudioSettings,BillingMethodResolver,ReceiptMailer,PaymentService,PaymentController(confirmation queue),PaymentEndpoint(PATCH /payments/{id}).setPaymentId; comp confirms the lesson.manage_billing); per-student billing method on the student detail.E-transfer destination email
Resolved at booking time (offering override → studio default) and frozen onto the payment, so each record keeps where the student was directed. Correctable per booking:
us_etransfer_email).Deferred to a follow-up
The live Stripe card charge — PaymentIntent + Stripe.js Elements + webhook +
stripe/stripe-php(and Jest for the Stripe JS). Until then acardpayment is createdpendingand confirmed like an e-transfer.Tests
tests/Unit/Payment/(VO, repository, resolver, service incl. e-transfer freezing, mailer).composer test(148 tests),composer cs, PHPStan level 6, and no-debug all pass.Refs #7
🤖 Generated with Claude Code
Add payments foundation (e-transfer/comp, Stripe config, receipts)to Add payments foundation (e-transfer/comp, Stripe config, receipts, e-transfer email)