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: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.
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áticowith con parámetros con nombre:
["productID" => "pdt_123", "quantity" => 1]. Las propiedades de respuesta también usan nombres camelCase, por ejemplo, $session->checkoutURL.
Configuración
El constructorClient 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
maxRetries en requestOptions, en el cliente o en una única solicitud:
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 acheckoutURL:
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.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:
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 deDodopayments\Core\Exceptions\APIException:
Tipos de error
La clase de excepción depende de la causa. Todas las clases se encuentran en el namespaceDodopayments\Core\Exceptions:
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 enrequestOptions:
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:config/services.php:
Symfony
Crea un servicio que reciba la API key mediante su constructor: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:- 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.