Instalación
Agrega el SDK a tu proyecto con Cargo:Cargo.toml:
El SDK requiere Rust 1.75 o posterior.
Inicio Rápido
Client::from_env() lee tu API key de la variable de entorno DODO_PAYMENTS_API_KEY. Crea un cliente y, después, crea una sesión de checkout:
DODO_PAYMENTS_API_KEY no está configurada, Client::from_env() devuelve un Error::Config. El cliente se conecta al live mode a menos que elijas otro entorno, como se muestra en Entornos. Una API key de test mode solo funciona en test mode.
Funciones principales
Async First
Creado con Tokio y reqwest, con
async/await para cada solicitud.Strong Typing
Structs tipados de solicitud y respuesta para realizar comprobaciones en tiempo de compilación.
Auto-Pagination
Transmite cada elemento de todas las páginas o avanza una página a la vez.
Configurable
Configura el entorno, la URL base, el tiempo de espera y el número de reintentos para cada cliente.
Configuración
Variables de entorno
Client::from_env() lee tu API key de DODO_PAYMENTS_API_KEY. Usa la URL de live mode a menos que configures DODO_PAYMENTS_BASE_URL:
DODO_PAYMENTS_WEBHOOK_KEY y no tiene ningún método que verifique las firmas de los webhooks. Para verificarlas, sigue Webhooks.
También puedes configurar el cliente explícitamente. Client::new devuelve un Result, así que debes desenvolverlo con ? dentro de una función que devuelva dodopayments::Result:
Entornos
El SDK tiene dos entornos:
La URL base predeterminada es
https://live.dodopayments.com. Para seleccionar otro entorno, usa el enum Environment en lugar de una URL codificada directamente:
DODO_PAYMENTS_API_KEY con from_env(), pero apuntar a otro entorno, reemplaza el entorno en la configuración:
Tiempos de espera
El tiempo de espera predeterminado de las solicitudes es de 30 segundos. Reemplázalo para un cliente conwith_timeout:
Retry-After cuando la API envía uno. Para cambiar el número de reintentos, llama a with_max_retries en ClientConfig; por ejemplo, .with_max_retries(0) para desactivar los reintentos.
Operaciones comunes
Los ejemplos de esta sección usanclient de Inicio rápido.
Crear una sesión de checkout
Crea una sesión de checkout con una URL de retorno:session.checkout_url. Cada URL de checkout funciona una sola vez y caduca después de 24 horas. Para consultar todas las opciones de la sesión, visita Sesiones de checkout.
Gestionar clientes
Crea un cliente con una dirección de email y un nombre, y después recupéralo por su ID:Gestionar suscripciones
Crea una suscripción para un cliente existente.billing solo requiere country, una variante del enum CountryCode como CountryCode::Us. customer es un enum CustomerRequest: pasa AttachExistingCustomer para un cliente existente o NewCustomer para crear uno. Para cobrar una suscripción on-demand, llama a client.subscriptions().charge().subscription_id(...) con un cuerpo SubscriptionsChargeParams. Los campos de importe, como product_price, están expresados en la unidad monetaria más pequeña; por ejemplo, 2500 equivale a $25.00.Facturación basada en el uso
Ingerir eventos de uso
Envía eventos de uso para un cliente:event_id es la clave de idempotencia, así que asigna un valor único a cada evento. Si timestamp es None, el evento usa la hora actual.
Enumerar eventos de uso
Enumera los eventos filtrados por cliente y nombre del evento. Los filtros se incluyen en un objeto de consulta JSON:Paginación
Los endpoints de listado devuelven una página tipada cuyo campoitems contiene la página actual de resultados. Para transmitir cada elemento de todas las páginas, llama a into_stream:
get_next_page. Devuelve None después de la última página:
Gestión de errores
Cada método devuelve undodopayments::Result<T>. Los errores son variantes del enum dodopayments::Error: Api para un estado de error de la API, Http para errores de transporte, Json para errores de serialización, Config para errores de configuración y MissingPathParam o MissingBody para solicitudes incompletas. Usa una coincidencia sobre él para gestionar los errores de la API por separado de los errores de transporte:
Endpoints no documentados
Para llamar a un endpoint que no tenga un método tipado, usa el builder de bajo nivelrequest. Este aplica la autenticación y la URL base. Para nombrar reqwest::Method, añade reqwest 0.12 a tus dependencias:
Recursos
GitHub Repository
Código fuente, versiones y la lista completa de métodos.
Crates.io
El crate publicado y sus versiones.
API Reference
Cada endpoint, parámetro y respuesta.
Discord Community
Haz preguntas y conversa con otros desarrolladores.
Soporte
Para obtener ayuda con el Rust SDK:- Discord: Únete al servidor de la comunidad para recibir ayuda en tiempo real.
- Email: Contacta con support@dodopayments.com.
- GitHub: Abre un issue en el repositorio.