Use this file to discover all available pages before exploring further.
O SDK TypeScript fornece acesso conveniente ao lado do servidor à API REST de pagamentos Dodo para aplicações TypeScript e JavaScript. Ele apresenta definições de tipo abrangentes, tratamento de erros, tentativas, timeouts e auto-paginação para um processamento de pagamentos sem interrupções.
Inicialize o cliente com sua chave de API e comece a processar pagamentos:
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);
Sempre armazene suas chaves de API com segurança usando variáveis de ambiente. Nunca as comprometa no controle de versão ou as exponha em código do lado do cliente.
// 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 requer, no mínimo, o código de país ISO de duas letras. customer é uma união de { customer_id } (para anexar um cliente existente) ou { email, name? } (para criar um novo). product_price é expressa na menor denominação de moeda.
Os eventos devem ter valores event_id únicos para idempotência. IDs duplicados dentro da mesma solicitação são rejeitados e solicitações subsequentes com IDs existentes são ignoradas.
Busque informações detalhadas sobre eventos de uso:
// 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, },});
Controle a verbosidade do log usando variáveis de ambiente ou opções de cliente:
// Via client optionconst client = new DodoPayments({ logLevel: 'debug', // Show all log messages});
# Via environment variableexport DODO_PAYMENTS_LOG=debug
Níveis de log disponíveis:
'debug' - Mostra mensagens de debug, informações, avisos e erros
'info' - Mostra mensagens de informação, avisos e erros
'warn' - Mostra avisos e erros (padrão)
'error' - Mostra apenas erros
'off' - Desativa todos os logs
No nível de debug, todas as solicitações e respostas HTTP são registradas, incluindo cabeçalhos e corpos. Alguns cabeçalhos de autenticação são redigidos, mas dados sensíveis nos corpos ainda podem estar visíveis.