Skip to main content
El SDK de PHP permite que las aplicaciones PHP 8.1+ accedan a la API REST de Dodo Payments. Los métodos aceptan parámetros con nombre, las respuestas son objetos tipados y Composer carga el SDK mediante autoloading PSR-4.

Instalación

Instala el SDK con Composer:
El SDK requiere PHP 8.1.0 o posterior y Composer. Envía solicitudes mediante un cliente HTTP PSR-18 de tu proyecto, como Guzzle, que encuentra con php-http/discovery.

Inicio rápido

Crea un cliente y, después, crea una sesión de checkout:
Si omites bearerToken, el cliente lee la variable de entorno DODO_PAYMENTS_API_KEY. Si omites baseUrl, el cliente lee DODO_PAYMENTS_BASE_URL y se conecta al modo live (https://live.dodopayments.com) cuando esa variable tampoco está configurada. Una API key del modo de prueba solo funciona con la URL del modo de prueba, https://test.dodopayments.com.
Conserva las API keys en variables de entorno o en un gestor de secretos. Nunca las expongas en tu base de código ni las confirmes en el control de versiones.

Funciones principales

PSR-4 Compliant

Composer carga el namespace Dodopayments mediante autoloading PSR-4.

Modern PHP

Diseñado para PHP 8.1 o posterior, con parámetros tipados y tipos estrictos.

Extensive Testing

El repositorio del SDK incluye un conjunto de pruebas para los servicios de la API.

Exception Handling

Una clase de excepción para cada estado de error HTTP, además de excepciones de tiempo de espera y conexión.

Objetos de valor

Los métodos aceptan parámetros con nombre, y los parámetros que tienen un valor predeterminado deben pasarse por nombre. Para crear un objeto de valor, usa su constructor estático with con parámetros con nombre:
Cada objeto de valor también tiene un builder:
Los métodos también aceptan arrays simples con las mismas claves camelCase, como ["productID" => "pdt_123", "quantity" => 1]. Las propiedades de respuesta también usan nombres camelCase, por ejemplo, $session->checkoutURL.

Configuración

El constructor Client acepta bearerToken, webhookKey, baseUrl y requestOptions. Cuando los omites, lee DODO_PAYMENTS_API_KEY, DODO_PAYMENTS_WEBHOOK_KEY (tu secreto de firma de webhook) y DODO_PAYMENTS_BASE_URL del entorno. Para verificar un webhook, pasa el cuerpo sin procesar de la solicitud y los headers a $client->webhooks->unwrap($body, headers: $headers). Comprueba la firma con tu clave de webhook, devuelve el evento analizado y lanza WebhookException si la comprobación falla. Si omites headers, unwrap no verifica la firma. $client->webhooks->unsafeUnwrap($body) analiza el cuerpo sin verificarlo, así que úsalo solo para pruebas. Consulta Webhooks.

Configuración de reintentos

De forma predeterminada, el SDK reintenta algunos errores dos veces, con un breve backoff exponencial. Estos errores activan un reintento:
  • Errores de conexión (problemas de conectividad de red)
  • 408 Request Timeout
  • 409 Conflict
  • 429 Rate Limit
  • 500+ Internal errors
  • Tiempos de espera
Configura maxRetries en requestOptions, en el cliente o en una única solicitud:
Las solicitudes agotan el tiempo de espera después de 60 segundos de forma predeterminada. Para cambiar el límite, establece timeout, en segundos, en el mismo array requestOptions.

Operaciones comunes

Los ejemplos de esta sección usan $client de Inicio rápido.

Crear una sesión de checkout

Crea una sesión de checkout y, después, redirige al cliente a checkoutURL:
Cada URL de checkout funciona una vez y caduca después de 24 horas. Consulta Checkout Sessions para ver todas las opciones de sesión.

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 y, después, cárgala si es una suscripción on-demand.
POST /subscriptions (el método subscriptions->create del SDK) está obsoleto. Sigue funcionando para integraciones existentes, pero las integraciones nuevas deben crear suscripciones mediante una Checkout Session.
billing solo requiere country, un código de país ISO de dos letras. Pasa AttachExistingCustomer::with(customerID: '...') para asociar un cliente existente o NewCustomer::with(email: '...', name: '...') para crear uno. Ambas clases se encuentran en el namespace Dodopayments\Payments. charge se usa para suscripciones on-demand, y productPrice se expresa en la unidad monetaria más pequeña.

Paginación

Los métodos de lista devuelven un objeto de página. getItems() devuelve los elementos de la página actual, y pagingEachItem() devuelve todos los elementos desde la página actual, solicitando más páginas según sea necesario:
Para avanzar una página a la vez, llama a hasNextPage() y getNextPage().

Gestión de errores

Cuando el SDK no puede conectarse a la API o la API devuelve un estado 4xx o 5xx, el SDK lanza una subclase de Dodopayments\Core\Exceptions\APIException:

Tipos de error

La clase de excepción depende de la causa. Todas las clases se encuentran en el namespace Dodopayments\Core\Exceptions:
Captura estas excepciones alrededor de las llamadas a la API para que tu aplicación pueda mostrar un mensaje claro o volver a intentarlo más tarde. En el caso de un error que permita reintentos, el SDK lanza la excepción solo después de que fallen sus reintentos automáticos.

Uso avanzado

Endpoints no documentados

Para llamar a un endpoint que no tiene un método del SDK, usa $client->request. Aplica la misma autenticación y los mismos reintentos que los métodos del SDK:

Parámetros no documentados

Para enviar parámetros que el SDK no define, pásalos en requestOptions:
Un parámetro extra* que tenga el mismo nombre que un parámetro documentado lo reemplaza.

Integración con frameworks

Laravel

Envuelve el cliente en una clase de servicio. Este ejemplo establece la URL de la API a partir del entorno configurado:
Añade la configuración a config/services.php:

Symfony

Crea un servicio que reciba la API key mediante su constructor:
Registra el servicio en config/services.yaml:

Recursos

GitHub Repository

Código fuente, versiones y lista completa de métodos.

API Reference

Cada endpoint, parámetro y respuesta.

Discord Community

Haz preguntas y habla con otros desarrolladores.

Report Issues

Informa de errores o solicita funciones.

Soporte

Para obtener ayuda con el SDK de PHP:

Contribuciones

Para contribuir, lee las directrices de contribución.
Última modificación el 26 de septiembre de 2026