Add subcription feature 10
This commit is contained in:
@@ -10,6 +10,48 @@
|
||||
7. [Common Issues & Solutions](#common-issues--solutions)
|
||||
8. [Production Checklist](#production-checklist)
|
||||
|
||||
|
||||
Flow Without 3DS Required
|
||||
|
||||
Step 1: POST /start-registration
|
||||
├── Create Stripe Customer
|
||||
├── Create SetupIntent with confirm=True
|
||||
│ └── Stripe checks: "Does this card need 3DS?" → NO
|
||||
│ └── SetupIntent status = 'succeeded' immediately
|
||||
├── Store state: {customer_id, setup_intent_id, etc.}
|
||||
└── Return: {requires_action: false, setup_intent_id}
|
||||
|
||||
Step 2: Frontend sees requires_action=false
|
||||
└── Immediately calls /complete-registration (no 3DS popup)
|
||||
|
||||
Step 3: POST /complete-registration
|
||||
├── Verify SetupIntent status = 'succeeded' ✓ (already succeeded)
|
||||
├── Create Subscription with verified payment method
|
||||
├── Create User, Tenant, etc.
|
||||
└── Return: {user, tokens, subscription}
|
||||
Flow With 3DS Required
|
||||
|
||||
Step 1: POST /start-registration
|
||||
├── Create Stripe Customer
|
||||
├── Create SetupIntent with confirm=True
|
||||
│ └── Stripe checks: "Does this card need 3DS?" → YES
|
||||
│ └── SetupIntent status = 'requires_action'
|
||||
├── Store state: {customer_id, setup_intent_id, etc.}
|
||||
└── Return: {requires_action: true, client_secret}
|
||||
|
||||
Step 2: Frontend sees requires_action=true
|
||||
├── Shows 3DS popup: stripe.confirmCardSetup(client_secret)
|
||||
├── User completes 3DS verification
|
||||
└── Calls /complete-registration
|
||||
|
||||
Step 3: POST /complete-registration
|
||||
├── Verify SetupIntent status = 'succeeded' ✓ (after 3DS)
|
||||
├── Create Subscription with verified payment method
|
||||
├── Create User, Tenant, etc.
|
||||
└── Return: {user, tokens, subscription}
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Reference in New Issue
Block a user