Task, las solicitudes y respuestas son clases tipadas, y el cliente reintenta las solicitudes fallidas por ti.
Instalación
Instala el paquete desde NuGet:El SDK requiere .NET Standard 2.0 o posterior, y también incluye una compilación para .NET 8. Funciona con ASP.NET Core, aplicaciones de consola y otros tipos de proyectos .NET. Los ejemplos de esta página usan la sintaxis de C# 12, como las expresiones de colección.
Inicio Rápido
Crea un cliente y, después, crea una sesión de checkout:BearerToken, el cliente lee la variable de entorno DODO_PAYMENTS_API_KEY. Si no estableces BaseUrl ni DODO_PAYMENTS_BASE_URL, el cliente se conecta al modo live. Para usar el modo test, consulta Entornos. Una clave de API del modo test solo funciona en el modo test.
Funciones principales
Async/Await
Cada método de la API devuelve un
Task y acepta un CancellationToken opcional.Strong Typing
Clases tipadas para solicitudes y respuestas, con anotaciones de tipos de referencia anulables.
Smart Retries
Dos reintentos de forma predeterminada, con retroceso exponencial, para errores de conexión y códigos de estado que permiten reintentos.
Error Handling
Una clase de excepción para cada error HTTP habitual, con el código de estado y el cuerpo de la respuesta.
Configuración
Variables de entorno
Guarda tu clave de API en una variable de entorno:.env
new() lee su configuración del entorno:
Si no se establece
BearerToken ni DODO_PAYMENTS_API_KEY, el cliente lanza DodoPaymentsInvalidDataException. WebhookKey contiene tu secreto de firma de webhook, pero el SDK de C# no tiene ningún método que verifique las firmas de webhook. Para verificarlas, sigue la guía de Webhooks.
Configuración manual
Establece propiedades en el cliente para sobrescribir las variables de entorno:Entornos
De forma predeterminada, el cliente se conecta al modo live (https://live.dodopayments.com). Para usar el modo test (https://test.dodopayments.com), establece BaseUrl en EnvironmentUrl.TestMode:
Reintentos
El SDK reintenta los errores de conexión y las respuestas con los estados 408, 409, 429 o 500 y superiores. De forma predeterminada, realiza dos reintentos con retroceso exponencial. EstableceMaxRetries para cambiar el número de reintentos o establécelo en 0 para desactivar los reintentos:
Tiempos de espera
Cada intento de solicitud agota el tiempo de espera después de 1 minuto de forma predeterminada. El tiempo de espera no incluye los reintentos. EstableceTimeout para cambiarlo:
Sobrescrituras por solicitud
Para cambiar la configuración de una sola llamada, llama aWithOptions en el cliente o en un servicio. Devuelve una copia modificada que comparte el mismo grupo de conexiones, y el cliente original no cambia:
Operaciones habituales
Los ejemplos de esta sección usan elclient de Inicio rápido.
Crear una sesión de checkout
Crea una sesión de checkout y, después, redirige al cliente alCheckoutUrl devuelto:
Gestionar clientes
Crea un cliente con una dirección de correo electrónico y un nombre y, después, recupéralo por su ID:Customers.Retrieve también acepta el ID como cadena, por ejemplo client.Customers.Retrieve("cus_123").
Gestionar suscripciones
Crea una suscripción y, después, cárgala si es una suscripción bajo demanda.Billing solo requiere Country, un código de país ISO de dos letras. Customer acepta un AttachExistingCustomer para asociar un cliente existente o un NewCustomer para crear uno. Charge es para suscripciones bajo demanda, y ProductPrice está expresado en la unidad monetaria más pequeña.Gestión de errores
Cuando la API devuelve un estado de error, el SDK lanza una subclase deDodoPaymentsApiException, que tiene las propiedades StatusCode y ResponseBody. La clase de excepción depende del código de estado. Todas las excepciones 4xx heredan de DodoPayments4xxException.
Un estado 4xx sin una clase propia, como 409, lanza
DodoPayments4xxException. DodoPaymentsUnexpectedStatusCodeException cubre los estados fuera de los rangos 4xx y 5xx.
El SDK también lanza estas excepciones:
DodoPaymentsIOException: Un error de E/S o de red.DodoPaymentsInvalidDataException: El SDK no pudo interpretar los datos de respuesta, por ejemplo, porque falta una propiedad obligatoria.DodoPaymentsException: La clase base de todas las excepciones del SDK.
Paginación
Los métodos de listado devuelven una página de resultados. Puedes iterar sobre cada elemento o avanzar por las páginas manualmente.Paginación automática
Paginate devuelve un IAsyncEnumerable que obtiene la página siguiente cuando la necesita:
Paginación manual
Para trabajar con una página a la vez, leeItems y, después, llama a HasNext() y Next():
PaymentListParams del espacio de nombres DodoPayments.Client.Models.Payments, por ejemplo client.Payments.List(new PaymentListParams { PageSize = 50 }).
Integración con ASP.NET Core
Registra un cliente como singleton en el contenedor de inyección de dependencias y lee la clave de API desde la configuración:Program.cs
appsettings.json:
appsettings.json
Recursos
NuGet Package
Versiones del paquete y comandos de instalación.
GitHub Repository
Código fuente, versiones y ejemplos.
API Reference
Cada endpoint, parámetro y respuesta.
Discord Community
Haz preguntas y conversa con otros desarrolladores.
Soporte
Para obtener ayuda con el SDK de C#:- Discord: Únete al servidor de la comunidad para recibir ayuda en tiempo real.
- Correo electrónico: Contacta con support@dodopayments.com.
- GitHub: Abre un issue en el repositorio.