Use this file to discover all available pages before exploring further.
SDK PHP menyediakan cara yang kuat dan fleksibel untuk mengintegrasikan Dodo Payments ke dalam aplikasi PHP Anda. Dibangun mengikuti standar PHP modern dengan autoloading PSR-4, ini menawarkan cakupan pengujian yang luas dan dokumentasi yang mendetail.
Perpustakaan API PHP Dodo Payments saat ini dalam beta. Kami sangat antusias
Anda untuk mencobanya! Silakan bagikan saran, laporan bug, atau permintaan fitur
dengan mengajukan sebuah
issue.
SDK menggunakan parameter bernama untuk menentukan argumen opsional. Anda dapat
menginisialisasi objek nilai menggunakan konstruktor statis with:
<?phpuse Dodopayments\Customers\AttachExistingCustomer;// Recommended: Use static 'with' constructor with named parameters$customer = AttachExistingCustomer::with(customerID: "customer_id");
Builder juga tersedia sebagai pola alternatif:
<?phpuse Dodopayments\Customers\AttachExistingCustomer;// Alternative: Use builder pattern$customer = (new AttachExistingCustomer)->withCustomerID("customer_id");
Kesalahan tertentu secara otomatis dicoba ulang 2 kali secara default dengan backoff eksponensial yang singkat. Kesalahan berikut memicu percobaan ulang otomatis:
Kesalahan koneksi (masalah konektivitas jaringan)
408 Permintaan Timeout
409 Konflik
429 Batas Laju
500+ Kesalahan Internal
Timeout
Konfigurasikan perilaku ulang secara global atau per permintaan:
<?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),);
use Dodopayments\Customers\AttachExistingCustomer;use Dodopayments\Payments\BillingAddress;// Create a subscription$subscription = $client->subscriptions->create( billing: BillingAddress::with( country: 'US', city: 'San Francisco', state: 'CA', street: '1 Market St', zipcode: '94105', ), customer: AttachExistingCustomer::with(customerID: 'cus_123'), productID: 'pdt_456', quantity: 1,);// Charge an on-demand subscription// productPrice is in the lowest currency denomination (e.g., 2500 = $25.00 USD)$charge = $client->subscriptions->charge( $subscription->subscription_id, productPrice: 2500,);
billing memerlukan setidaknya kode ISO country dua huruf. Berikan AttachExistingCustomer::with(customerID: '...') untuk melampirkan pelanggan yang sudah ada, atau NewCustomer::with(email: '...', name: '...') untuk membuatnya. productPrice adalah dalam denominasi mata uang terendah.
$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);}
Ketika pustaka tidak dapat terhubung ke API atau menerima kode status non-sukses (4xx atau 5xx), subclass dari APIException akan dilemparkan:
<?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();}
Selalu bungkus panggilan API dalam blok try-catch untuk menangani potensi kesalahan
dengan baik dan memberikan umpan balik yang berarti kepada pengguna.