Integra Dodo Payments en tus aplicaciones PHP con un SDK moderno y compatible con PSR-4
El SDK de PHP proporciona una forma robusta y flexible de integrar Dodo Payments en tus aplicaciones PHP. Construido siguiendo los estándares modernos de PHP con autoloading PSR-4, ofrece una amplia cobertura de pruebas y documentación detallada.
La biblioteca de API de PHP de Dodo Payments está actualmente en beta. ¡Estamos emocionados de
que experimentes con ella! Por favor, comparte cualquier sugerencia, informe de errores o
solicitud de características presentando un
problema.
<?phpuse Dodopayments\Client;$client = new Client( bearerToken: getenv('DODO_PAYMENTS_API_KEY') ?: 'My Bearer Token', // use 'https://test.dodopayments.com' for test mode baseUrl: 'https://live.dodopayments.com');$checkoutSessionResponse = $client->checkoutSessions->create( productCart: [["productID" => "product_id", "quantity" => 1]]);var_dump($checkoutSessionResponse->session_id);
Almacena tus claves API de forma segura utilizando variables de entorno. Nunca las expongas en
tu base de código ni las comites en el control de versiones.
El SDK utiliza parámetros nombrados para especificar argumentos opcionales. Puedes inicializar objetos de valor utilizando el constructor estático with:
Copiar
<?phpuse Dodopayments\Customers\AttachExistingCustomer;// Recommended: Use static 'with' constructor with named parameters$customer = AttachExistingCustomer::with(customerID: "customer_id");
Los constructores también están disponibles como un patrón alternativo:
Copiar
<?phpuse Dodopayments\Customers\AttachExistingCustomer;// Alternative: Use builder pattern$customer = (new AttachExistingCustomer)->withCustomerID("customer_id");
Ciertos errores se reintentan automáticamente 2 veces por defecto con un breve retroceso exponencial. Los siguientes errores desencadenan reintentos automáticos:
Errores de conexión (problemas de conectividad de red)
408 Tiempo de espera de solicitud
409 Conflicto
429 Límite de tasa
Errores internos 500+
Tiempos de espera
Configura el comportamiento de reintentos globalmente o por solicitud:
Copiar
<?phpuse Dodopayments\Client;use Dodopayments\RequestOptions;// Configure default for all requests (disable retries)$client = new Client(maxRetries: 0);// Or, configure per-request$result = $client->checkoutSessions->create( productCart: [["productID" => "product_id", "quantity" => 1]], requestOptions: RequestOptions::with(maxRetries: 5),);
$page = $client->payments->list();var_dump($page);// Fetch items from the current pageforeach ($page->getItems() as $item) { var_dump($item->brand_id);}// Auto-paginate: fetch items from all pagesforeach ($page->pagingEachItem() as $item) { var_dump($item->brand_id);}
Cuando la biblioteca no puede conectarse a la API o recibe un código de estado no exitoso (4xx o 5xx), se lanza una subclase de APIException:
Copiar
<?phpuse Dodopayments\Core\Exceptions\APIConnectionException;use Dodopayments\Core\Exceptions\RateLimitException;use Dodopayments\Core\Exceptions\APIStatusException;try { $checkoutSessionResponse = $client->checkoutSessions->create( productCart: [["productID" => "product_id", "quantity" => 1]] );} catch (APIConnectionException $e) { echo "The server could not be reached", PHP_EOL; var_dump($e->getPrevious());} catch (RateLimitException $_) { echo "A 429 status code was received; we should back off a bit.", PHP_EOL;} catch (APIStatusException $e) { echo "Another non-200-range status code was received", PHP_EOL; echo $e->getMessage();}
Siempre envuelve las llamadas a la API en bloques try-catch para manejar posibles errores
de manera elegante y proporcionar retroalimentación significativa a los usuarios.