Use this file to discover all available pages before exploring further.
The TypeScript SDK provides convenient server-side access to the Dodo Payments REST API for TypeScript and JavaScript applications. It features comprehensive type definitions, error handling, retries, timeouts, and auto-pagination for seamless payment processing.
Initialize the client with your API key and start processing payments:
import DodoPayments from 'dodopayments';const client = new DodoPayments({ bearerToken: process.env['DODO_PAYMENTS_API_KEY'], // This is the default and can be omitted environment: 'test_mode', // defaults to 'live_mode'});const checkoutSessionResponse = await client.checkoutSessions.create({ product_cart: [{ product_id: 'product_id', quantity: 1 }],});console.log(checkoutSessionResponse.session_id);
Always store your API keys securely using environment variables. Never commit them to version control or expose them in client-side code.
// Create a subscriptionconst subscription = await client.subscriptions.create({ billing: { country: 'US', city: 'San Francisco', state: 'CA', street: '1 Market St', zipcode: '94105', }, customer: { customer_id: 'cus_123', // or pass { email, name } to create a new customer }, product_id: 'pdt_456', quantity: 1,});// Charge an on-demand subscription// product_price is in the lowest currency denomination (e.g., 2500 = $25.00 USD)const chargeResponse = await client.subscriptions.charge(subscription.subscription_id, { product_price: 2500,});// Retrieve subscription usage history (for metered subscriptions)const usageHistory = await client.subscriptions.retrieveUsageHistory(subscription.subscription_id, { start_date: '2024-01-01T00:00:00Z', end_date: '2024-03-31T23:59:59Z',});
billing yêu cầu tối thiểu mã quốc gia ISO hai chữ cái. customer là một liên minh của { customer_id } (để đính kèm khách hàng hiện có) hoặc { email, name? } (để tạo mới). product_price được biểu thị bằng đơn vị tiền tệ thấp nhất.
Sự kiện phải có giá trị event_id độc nhất để đảm bảo idempotency. ID trùng lặp trong cùng yêu cầu bị từ chối và yêu cầu tiếp theo với ID hiện có sẽ bị bỏ qua.
Truy xuất thông tin chi tiết về các sự kiện sử dụng:
// Get a specific eventconst event = await client.usageEvents.retrieve('api_call_12345');// List events with filteringconst events = await client.usageEvents.list({ customer_id: 'cus_abc123', event_name: 'api_request', start: '2024-01-14T10:30:00Z', end: '2024-01-15T10:30:00Z'});
import DodoPayments from 'dodopayments';import * as undici from 'undici';const proxyAgent = new undici.ProxyAgent('http://localhost:8888');const client = new DodoPayments({ fetchOptions: { dispatcher: proxyAgent, },});
Kiểm soát độ chi tiết của bản ghi sử dụng biến môi trường hoặc tùy chọn của client:
// Via client optionconst client = new DodoPayments({ logLevel: 'debug', // Show all log messages});
# Via environment variableexport DODO_PAYMENTS_LOG=debug
Các mức độ bản ghi có sẵn:
'debug' - Hiển thị thông điệp gỡ lỗi, thông tin, cảnh báo và lỗi
'info' - Hiển thị thông điệp thông tin, cảnh báo và lỗi
'warn' - Hiển thị cảnh báo và lỗi (mặc định)
'error' - Chỉ hiển thị lỗi
'off' - Tắt hoàn toàn ghi nhật ký
Ở mức gỡ lỗi, tất cả các yêu cầu và phản hồi HTTP đều được ghi lại, bao gồm tiêu đề và nội dung. Một số tiêu đề xác thực bị ẩn, nhưng dữ liệu nhạy cảm trong nội dung có thể vẫn hiển thị.