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 API de PHP de Dodo Payments está actualmente en beta. ¡Estamos emocionados de que lo pruebes! Por favor, comparte cualquier sugerencia, informe de errores o solicitud de características mediante presentando un problema.
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.