Use this file to discover all available pages before exploring further.
Il SDK TypeScript fornisce un accesso conveniente al server all’API REST di Dodo Payments per applicazioni TypeScript e JavaScript. Presenta definizioni di tipo complete, gestione degli errori, ritentativi, timeout e auto-paginazione per un’elaborazione dei pagamenti senza soluzione di continuità.
Inizializza il client con la tua chiave API e inizia a elaborare i pagamenti:
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);
Conserva sempre le chiavi API in modo sicuro utilizzando variabili d’ambiente. Non committarle mai nel controllo di versione né esporle nel codice client-side.
// 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 richiede almeno il codice paese ISO di due lettere. customer è un’unione di { customer_id } (per allegare un cliente esistente) o { email, name? } (per crearne uno nuovo). product_price è espresso nella denominazione valutaria più bassa.
Gli eventi devono avere valori di event_id unici per l’idempotenza. Gli ID duplicati all’interno della stessa richiesta vengono rifiutati e le richieste successive con ID esistenti vengono ignorate.
Recupera informazioni dettagliate sugli eventi di utilizzo:
// 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, },});
Controlla la verbosità dei log utilizzando variabili di ambiente o opzioni del client:
// Via client optionconst client = new DodoPayments({ logLevel: 'debug', // Show all log messages});
# Via environment variableexport DODO_PAYMENTS_LOG=debug
Livelli di log disponibili:
'debug' - Mostra messaggi di debug, info, avvisi ed errori
'info' - Mostra messaggi info, avvisi ed errori
'warn' - Mostra avvisi ed errori (predefinito)
'error' - Mostra solo errori
'off' - Disabilita tutti i log
Al livello di debug, tutte le richieste e risposte HTTP vengono registrate, inclusi intestazioni e corpi. Alcune intestazioni di autenticazione vengono redatte, ma i dati sensibili nei corpi possono essere ancora visibili.
I metodi di lista nell’API DodoPayments sono paginati. Puoi utilizzare la sintassi for await … of per iterare attraverso gli oggetti su tutte le pagine:
async function fetchAllPayments() { const allPayments = []; // Automatically fetches more pages as needed. for await (const paymentListResponse of client.payments.list()) { allPayments.push(paymentListResponse); } return allPayments;}
In alternativa, puoi richiedere una singola pagina alla volta:
let page = await client.payments.list();for (const paymentListResponse of page.items) { console.log(paymentListResponse);}// Convenience methods are provided for manually paginating:while (page.hasNextPage()) { page = await page.getNextPage(); // ...}