@dodopayments/ingestion-blueprints como trackAPICall(), que envía un evento por llamada, y createBatch(), que pone en cola los eventos cuando hay grandes volúmenes de solicitudes.
Casos de uso
El API Gateway Blueprint es adecuado para estos escenarios:API-as-a-Service
Haz un seguimiento de las llamadas por cliente en una plataforma de API y cobra según el número de llamadas.
Rate Limiting
Registra el volumen de llamadas de cada cliente para informar sobre los límites de velocidad basados en el uso. El blueprint registra el uso, pero no aplica los límites.
Performance Monitoring
Registra los tiempos de respuesta y los códigos de estado con cada evento, de modo que las tasas de error aparezcan junto a los datos de facturación.
Multi-Tenant SaaS
Factura a los clientes por su consumo de la API en diferentes endpoints.
Cada evento necesita el ID de cliente de Dodo Payments del cliente al que facturas, que comienza por
cus_. Guárdalo con el registro del usuario cuando crees el cliente y pásalo como customerId.Inicio rápido
Para hacer un seguimiento de las llamadas a la API, instala el paquete, crea un medidor y envía un evento por cada llamada.1
Install the SDK
Instala el paquete Dodo Payments Ingestion Blueprints:
2
Get Your API Keys
Crea una clave de API de Dodo Payments en Developer → API Keys dentro del panel de Dodo Payments y guárdala en la variable de entorno
DODO_PAYMENTS_API_KEY. Usa una clave de modo de prueba mientras desarrollas. Una clave de modo de prueba solo funciona con test_mode.3
Create a Meter
En el panel de Dodo Payments, ve a Products → Meters y haz clic en Create Meter. Configura estos campos:
- Meter Name: un nombre descriptivo, como
API Calls. - Event Name:
api_callo el nombre que elijas. Debe coincidir exactamente coneventNameen tu código (distingue entre mayúsculas y minúsculas). - Aggregation Type: Count, para facturar según el número de llamadas.
- Measurement Unit: la unidad que se muestra en las facturas, como
calls.
endpoint, method o status_code.4
Track API Calls
Crea una instancia de
Ingestion con tu clave de API y el nombre del evento, y luego elige un patrón: un evento por llamada, un lote para grandes volúmenes o middleware de Express.js que haga un seguimiento de cada solicitud. En el middleware, req.user procede de tu middleware de autenticación y su id debe ser un ID de cliente de Dodo Payments. Las solicitudes sin un usuario autenticado se envían con el ID de cliente anonymous, que no coincide con ningún cliente.Configuración
Configuración de ingestión
Pasa estas opciones anew Ingestion():
string
requerido
Tu clave de API de Dodo Payments del panel.
string
Modo de entorno:
test_mode o live_mode. El valor predeterminado es test_mode. En cambio, los SDK de Dodo Payments usan live_mode de forma predeterminada, así que establece live_mode explícitamente en producción.string
requerido
Nombre del evento que coincide con Event Name de tu medidor (distingue entre mayúsculas y minúsculas). Todos los eventos que envíe esta instancia lo utilizarán.
Opciones para hacer un seguimiento de llamadas a la API
Pasa estas opciones atrackAPICall() y batch.add():
string
requerido
El ID de cliente de Dodo Payments al que facturar la llamada, por ejemplo,
cus_123.object
Metadatos opcionales sobre la llamada a la API, como el endpoint, el método, el código de estado y el tiempo de respuesta. Cada valor debe ser una cadena, un número o un booleano. La API rechaza objetos anidados, arrays y valores
null.Configuración de lotes
createBatch(ingestion, options) pone los eventos en cola en memoria y devuelve un objeto con tres métodos: add() pone un evento en cola, flush() envía los eventos en cola y cleanup() los envía y detiene el temporizador. Un vaciado envía una solicitud de ingestión por evento, en paralelo.
number
Número de eventos en cola que activa un vaciado inmediato. Valor predeterminado:
100.number
Milisegundos que se deben esperar después del
add() más reciente antes de vaciar el lote. Cada add() reinicia el temporizador. Valor predeterminado: 5000 (5 segundos).Prácticas recomendadas
Un lote mantiene los eventos en memoria hasta que se vacía y no reintenta los eventos cuyo envío falla. Un vaciado automático registra el error conconsole.error. Una llamada a flush() o cleanup() lo lanza.