init
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
# Creem.io Checkouts
|
||||
|
||||
## Checkout Options
|
||||
|
||||
1. **Programmatic Sessions** - Full API control
|
||||
2. **Checkout Links** - No-code, shareable URLs
|
||||
3. **Storefronts** - Hosted product pages
|
||||
|
||||
## Create Checkout Session
|
||||
|
||||
```javascript
|
||||
const session = await creem.checkout.sessions.create({
|
||||
product_id: 'prod_xxx',
|
||||
success_url: 'https://example.com/success?session_id={CHECKOUT_SESSION_ID}',
|
||||
cancel_url: 'https://example.com/cancel',
|
||||
|
||||
// Optional parameters
|
||||
customer_email: 'user@example.com',
|
||||
customer_id: 'cus_xxx', // Existing customer
|
||||
quantity: 1, // For seat-based products
|
||||
discount_code: 'LAUNCH20', // Pre-apply discount
|
||||
metadata: {
|
||||
order_id: '123',
|
||||
referral_code: 'abc'
|
||||
},
|
||||
|
||||
// Custom fields
|
||||
custom_fields: [
|
||||
{ key: 'company', label: 'Company Name', required: true }
|
||||
]
|
||||
});
|
||||
|
||||
// Redirect user to checkout
|
||||
redirect(session.url);
|
||||
```
|
||||
|
||||
## Checkout Customization
|
||||
|
||||
Configure in dashboard or via API:
|
||||
|
||||
- **Branding**: Logo, colors, themes
|
||||
- **Email Receipts**: Custom templates
|
||||
- **Localization**: Auto-detect or force language (42 supported)
|
||||
- **Custom Fields**: Collect additional data
|
||||
|
||||
## Retrieve Session
|
||||
|
||||
```javascript
|
||||
// GET /v1/checkout/sessions/:id
|
||||
const session = await creem.checkout.sessions.retrieve('cs_xxx');
|
||||
// Returns: { id, status, customer_id, product_id, amount, metadata, ... }
|
||||
```
|
||||
|
||||
## Success URL Parameters
|
||||
|
||||
Creem replaces `{CHECKOUT_SESSION_ID}` in success URL:
|
||||
|
||||
```javascript
|
||||
// Frontend: parse session ID from URL
|
||||
const urlParams = new URLSearchParams(window.location.search);
|
||||
const sessionId = urlParams.get('session_id');
|
||||
|
||||
// Backend: verify and fulfill
|
||||
const session = await creem.checkout.sessions.retrieve(sessionId);
|
||||
if (session.status === 'complete') {
|
||||
await fulfillOrder(session);
|
||||
}
|
||||
```
|
||||
|
||||
## No-Code Checkout Links
|
||||
|
||||
Create in dashboard - shareable URLs for any product. Good for:
|
||||
- Social media links
|
||||
- Email campaigns
|
||||
- Quick sales without integration
|
||||
|
||||
## Storefronts
|
||||
|
||||
Hosted product pages - display multiple products without custom website:
|
||||
|
||||
1. Configure storefront in dashboard
|
||||
2. Add products to display
|
||||
3. Share storefront URL
|
||||
4. Customers browse and checkout
|
||||
|
||||
## Cart Abandonment Recovery
|
||||
|
||||
Enable in dashboard - automatic emails sent when checkout abandoned:
|
||||
- Configurable delay before sending
|
||||
- Customizable email content
|
||||
- Include discount code incentive
|
||||
|
||||
## Embedding (Coming)
|
||||
|
||||
For embedded checkout in your site, see SDK adapters:
|
||||
- Next.js Adapter
|
||||
- React components
|
||||
|
||||
See `references/creem/sdk.md` for implementation details.
|
||||
Reference in New Issue
Block a user