@dodopayments/express 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +59 -23
- package/dist/checkout/checkout.d.ts +1 -1
- package/dist/index.cjs +382 -57
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +382 -57
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -26,9 +26,9 @@ import { checkoutHandler } from "@dodopayments/express";
|
|
|
26
26
|
app.get(
|
|
27
27
|
"/api/checkout",
|
|
28
28
|
checkoutHandler({
|
|
29
|
-
bearerToken: process.env.DODO_PAYMENTS_API_KEY
|
|
30
|
-
returnUrl: process.env.
|
|
31
|
-
environment:
|
|
29
|
+
bearerToken: process.env.DODO_PAYMENTS_API_KEY,
|
|
30
|
+
returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
|
|
31
|
+
environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
|
|
32
32
|
type: "static",
|
|
33
33
|
}),
|
|
34
34
|
);
|
|
@@ -36,12 +36,22 @@ app.get(
|
|
|
36
36
|
app.post(
|
|
37
37
|
"/api/checkout",
|
|
38
38
|
checkoutHandler({
|
|
39
|
-
bearerToken: process.env.DODO_PAYMENTS_API_KEY
|
|
40
|
-
returnUrl: process.env.
|
|
41
|
-
environment:
|
|
39
|
+
bearerToken: process.env.DODO_PAYMENTS_API_KEY,
|
|
40
|
+
returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
|
|
41
|
+
environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
|
|
42
42
|
type: "dynamic",
|
|
43
43
|
}),
|
|
44
44
|
);
|
|
45
|
+
|
|
46
|
+
app.post(
|
|
47
|
+
"/api/checkout",
|
|
48
|
+
checkoutHandler({
|
|
49
|
+
bearerToken: process.env.DODO_PAYMENTS_API_KEY,
|
|
50
|
+
returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
|
|
51
|
+
environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
|
|
52
|
+
type: "session",
|
|
53
|
+
}),
|
|
54
|
+
);
|
|
45
55
|
```
|
|
46
56
|
|
|
47
57
|
---
|
|
@@ -121,28 +131,36 @@ Here's how you should structure your response:
|
|
|
121
131
|
|
|
122
132
|
**If Checkout Route Handler is selected:**
|
|
123
133
|
|
|
124
|
-
**Purpose**: This handler
|
|
134
|
+
**Purpose**: This handler manages different types of checkout flows. All checkout types (static, dynamic, and sessions) return JSON responses with checkout URLs for programmatic handling.
|
|
125
135
|
|
|
126
136
|
**Integration**:
|
|
127
|
-
Create
|
|
137
|
+
Create routes in your Express app for static (GET), dynamic (POST), and checkout sessions (POST).
|
|
128
138
|
|
|
129
139
|
|
|
130
140
|
import { checkoutHandler } from '@dodopayments/express';
|
|
131
141
|
|
|
132
142
|
app.get('/api/checkout', checkoutHandler({
|
|
133
|
-
bearerToken: process.env.DODO_PAYMENTS_API_KEY
|
|
134
|
-
returnUrl: process.env.
|
|
135
|
-
environment:
|
|
143
|
+
bearerToken: process.env.DODO_PAYMENTS_API_KEY,
|
|
144
|
+
returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
|
|
145
|
+
environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
|
|
136
146
|
type: "static"
|
|
137
147
|
}));
|
|
138
148
|
|
|
139
149
|
app.post('/api/checkout', checkoutHandler({
|
|
140
|
-
bearerToken: process.env.DODO_PAYMENTS_API_KEY
|
|
141
|
-
returnUrl: process.env.
|
|
142
|
-
environment:
|
|
150
|
+
bearerToken: process.env.DODO_PAYMENTS_API_KEY,
|
|
151
|
+
returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
|
|
152
|
+
environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
|
|
143
153
|
type: "dynamic"
|
|
144
154
|
}));
|
|
145
155
|
|
|
156
|
+
// For checkout sessions
|
|
157
|
+
app.post('/api/checkout', checkoutHandler({
|
|
158
|
+
bearerToken: process.env.DODO_PAYMENTS_API_KEY,
|
|
159
|
+
returnUrl: process.env.DODO_PAYMENTS_RETURN_URL,
|
|
160
|
+
environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
|
|
161
|
+
type: "session"
|
|
162
|
+
}));
|
|
163
|
+
|
|
146
164
|
Config Options:
|
|
147
165
|
|
|
148
166
|
bearerToken: Your Dodo Payments API key (recommended to be stored in DODO_PAYMENTS_API_KEY env variable).
|
|
@@ -151,7 +169,7 @@ Config Options:
|
|
|
151
169
|
|
|
152
170
|
environment: "test_mode" or "live_mode"
|
|
153
171
|
|
|
154
|
-
type: "static" (GET) or "
|
|
172
|
+
type: "static" (GET), "dynamic" (POST), or "session" (POST)
|
|
155
173
|
|
|
156
174
|
GET (static checkout) expects query parameters:
|
|
157
175
|
|
|
@@ -159,12 +177,29 @@ GET (static checkout) expects query parameters:
|
|
|
159
177
|
|
|
160
178
|
quantity, customer fields (fullName, email, etc.), and metadata (metadata_*) are optional.
|
|
161
179
|
|
|
180
|
+
Returns: {"checkout_url": "https://checkout.dodopayments.com/..."}
|
|
181
|
+
|
|
162
182
|
POST (dynamic checkout) expects a JSON body with payment details (one-time or subscription). Reference the docs for the full POST schema:
|
|
163
183
|
|
|
164
184
|
One-time payments: https://docs.dodopayments.com/api-reference/payments/post-payments
|
|
165
185
|
|
|
166
186
|
Subscriptions: https://docs.dodopayments.com/api-reference/subscriptions/post-subscriptions
|
|
167
187
|
|
|
188
|
+
Returns: {"checkout_url": "https://checkout.dodopayments.com/..."}
|
|
189
|
+
|
|
190
|
+
POST (checkout sessions) - (Recommended) A more customizable checkout experience:
|
|
191
|
+
|
|
192
|
+
Expects a JSON body with product_cart array and customer details.
|
|
193
|
+
|
|
194
|
+
One-time payments: https://docs.dodopayments.com/api-reference/payments/post-payments
|
|
195
|
+
|
|
196
|
+
Subscriptions: https://docs.dodopayments.com/api-reference/subscriptions/post-subscriptions
|
|
197
|
+
|
|
198
|
+
Required fields for checkout sessions:
|
|
199
|
+
product_cart (array): Array of products with product_id and quantity
|
|
200
|
+
|
|
201
|
+
Returns: {"checkout_url": "https://checkout.dodopayments.com/session/..."}
|
|
202
|
+
|
|
168
203
|
If Customer Portal Route Handler is selected:
|
|
169
204
|
|
|
170
205
|
Purpose: This route allows customers to manage their subscriptions via the Dodo Payments portal.
|
|
@@ -174,8 +209,8 @@ Integration:
|
|
|
174
209
|
import { CustomerPortal } from "@dodopayments/express";
|
|
175
210
|
|
|
176
211
|
app.get('/api/customer-portal', CustomerPortal({
|
|
177
|
-
bearerToken: process.env.DODO_PAYMENTS_API_KEY
|
|
178
|
-
environment:
|
|
212
|
+
bearerToken: process.env.DODO_PAYMENTS_API_KEY,
|
|
213
|
+
environment: process.env.DODO_PAYMENTS_ENVIRONMENT,
|
|
179
214
|
}));
|
|
180
215
|
|
|
181
216
|
Query Parameters:
|
|
@@ -195,7 +230,7 @@ Integration:
|
|
|
195
230
|
import { Webhooks } from "@dodopayments/express";
|
|
196
231
|
|
|
197
232
|
app.post('/api/webhook', Webhooks({
|
|
198
|
-
webhookKey: process.env.
|
|
233
|
+
webhookKey: process.env.DODO_PAYMENTS_WEBHOOK_KEY,
|
|
199
234
|
onPayload: async (payload) => {
|
|
200
235
|
// Handle generic payload
|
|
201
236
|
},
|
|
@@ -232,7 +267,7 @@ You may pass in any of the following handlers:
|
|
|
232
267
|
|
|
233
268
|
onDisputeOpened, onDisputeExpired, onDisputeAccepted, onDisputeCancelled, onDisputeChallenged, onDisputeWon, onDisputeLost
|
|
234
269
|
|
|
235
|
-
onSubscriptionActive, onSubscriptionOnHold, onSubscriptionRenewed,
|
|
270
|
+
onSubscriptionActive, onSubscriptionOnHold, onSubscriptionRenewed, onSubscriptionPlanChanged, onSubscriptionCancelled, onSubscriptionFailed, onSubscriptionExpired
|
|
236
271
|
|
|
237
272
|
onLicenseKeyCreated
|
|
238
273
|
|
|
@@ -241,13 +276,14 @@ Environment Variable Setup:
|
|
|
241
276
|
Make sure to define these environment variables in your project:
|
|
242
277
|
|
|
243
278
|
DODO_PAYMENTS_API_KEY=your-api-key
|
|
244
|
-
|
|
245
|
-
|
|
279
|
+
DODO_PAYMENTS_WEBHOOK_KEY=your-webhook-secret
|
|
280
|
+
DODO_PAYMENTS_ENVIRONMENT="test_mode" or "live_mode"
|
|
281
|
+
DODO_PAYMENTS_RETURN_URL=your-return-url
|
|
246
282
|
|
|
247
283
|
Use these inside your code as:
|
|
248
284
|
|
|
249
|
-
process.env.DODO_PAYMENTS_API_KEY
|
|
250
|
-
process.env.DODO_PAYMENTS_WEBHOOK_SECRET
|
|
285
|
+
process.env.DODO_PAYMENTS_API_KEY
|
|
286
|
+
process.env.DODO_PAYMENTS_WEBHOOK_SECRET
|
|
251
287
|
|
|
252
288
|
Security Note: Do NOT commit secrets to version control. Use .env files locally and secrets managers in deployment environments (e.g., AWS, Vercel, Heroku, etc.).
|
|
253
289
|
```
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Request, Response } from "express";
|
|
2
2
|
import { CheckoutHandlerConfig } from "@dodopayments/core/checkout";
|
|
3
|
-
export declare function checkoutHandler(config: CheckoutHandlerConfig): (req: Request, res: Response) => Response<any, Record<string, any>> | Promise<
|
|
3
|
+
export declare function checkoutHandler(config: CheckoutHandlerConfig): (req: Request, res: Response) => Response<any, Record<string, any>> | Promise<Response<any, Record<string, any>>>;
|