Skip to main content
PHP SDK memberi aplikasi PHP 8.1+ akses ke REST API Dodo Payments. Method menggunakan named parameter, respons berupa objek bertipe, dan Composer memuat SDK dengan autoloading PSR-4.
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.
Instal SDK dengan Composer:
SDK memerlukan PHP 8.1.0 atau yang lebih baru dan Composer. SDK mengirim request melalui HTTP client PSR-18 di project Anda, seperti Guzzle, yang ditemukan melalui php-http/discovery.
SDK ini membutuhkan PHP 8.1.0 atau lebih tinggi dan Composer untuk manajemen dependensi.
Buat client, lalu buat checkout session:
Jika Anda tidak menyertakan bearerToken, client membaca environment variable DODO_PAYMENTS_API_KEY. Jika Anda tidak menyertakan baseUrl, client membaca DODO_PAYMENTS_BASE_URL, dan terhubung ke live mode (https://live.dodopayments.com) jika nilai tersebut juga tidak ditetapkan. API key test mode hanya berfungsi dengan URL test mode, https://test.dodopayments.com.
Simpan API key di environment variable atau secrets manager. Jangan pernah mengeksposnya di codebase atau melakukan commit ke version control.

Fitur Inti

PSR-4 Compliant

Composer memuat namespace Dodopayments dengan autoloading PSR-4.

Modern PHP

Dibuat untuk PHP 8.1 atau yang lebih baru, dengan parameter bertipe dan strict types.

Extensive Testing

Repository SDK menyertakan test suite untuk API service.

Exception Handling

Satu exception class untuk setiap HTTP error status, serta exception timeout dan connection.

Value Object

Method menggunakan named parameter, dan parameter yang memiliki nilai default harus diteruskan dengan nama. Untuk membuat value object, gunakan constructor statis with dengan named parameter:
Setiap value object juga memiliki builder:
Method juga menerima array biasa dengan key camelCase yang sama, seperti ["productID" => "pdt_123", "quantity" => 1]. Properti respons juga menggunakan nama camelCase, misalnya $session->checkoutURL.

Konfigurasi

Constructor Client menerima bearerToken, webhookKey, baseUrl, dan requestOptions. Jika Anda tidak menyertakannya, constructor membaca DODO_PAYMENTS_API_KEY, DODO_PAYMENTS_WEBHOOK_KEY (webhook signing secret Anda), dan DODO_PAYMENTS_BASE_URL dari environment. Untuk memverifikasi webhook, teruskan raw request body dan header ke $client->webhooks->unwrap($body, headers: $headers). Method ini memeriksa signature menggunakan webhook key Anda, mengembalikan event yang telah diparse, dan melempar WebhookException jika pemeriksaan gagal. Jika Anda tidak menyertakan headers, unwrap tidak memverifikasi signature. $client->webhooks->unsafeUnwrap($body) mengurai body tanpa memverifikasinya, jadi gunakan hanya untuk testing. Lihat Webhooks.

Konfigurasi Retry

Secara default, SDK mencoba ulang beberapa error sebanyak dua kali, dengan exponential backoff singkat. Error berikut memicu retry:
  • Connection error (masalah konektivitas jaringan)
  • 408 Request Timeout
  • 409 Conflict
  • 429 Rate Limit
  • 500+ Internal error
  • Timeout
Atur maxRetries di requestOptions, pada client atau satu request:
Secara default, request mengalami timeout setelah 60 detik. Untuk mengubah batas ini, atur timeout, dalam detik, di array requestOptions yang sama.

Operasi Umum

Contoh di bagian ini menggunakan $client dari Quick Start.

Membuat Checkout Session

Buat checkout session, lalu arahkan customer ke checkoutURL yang dikembalikan:
Setiap checkout URL dapat digunakan sekali dan kedaluwarsa setelah 24 jam. Untuk setiap opsi session, lihat Checkout Sessions.

Mengelola Customer

Buat customer dengan alamat email dan nama, lalu ambil kembali berdasarkan ID:

Menangani Subscription

Buat subscription, lalu charge subscription tersebut jika merupakan on-demand subscription.
POST /subscriptions (method subscriptions->create milik SDK) deprecated. Method ini masih berfungsi untuk integrasi yang sudah ada, tetapi integrasi baru sebaiknya membuat subscription melalui Checkout Session.
billing hanya memerlukan country, yaitu kode negara ISO dua huruf. Teruskan AttachExistingCustomer::with(customerID: '...') untuk melampirkan customer yang sudah ada, atau NewCustomer::with(email: '...', name: '...') untuk membuat customer. Kedua class tersebut berada di namespace Dodopayments\Payments. charge digunakan untuk on-demand subscription, dan productPrice dinyatakan dalam unit terkecil mata uang.

Pagination

Method list mengembalikan page object. getItems() mengembalikan item pada halaman saat ini, sedangkan pagingEachItem() mengembalikan setiap item mulai dari halaman saat ini dan meminta halaman tambahan sesuai kebutuhan:
Untuk berpindah satu halaman setiap kali, panggil hasNextPage() dan getNextPage().

Penanganan Error

Jika SDK tidak dapat terhubung ke API, atau API mengembalikan status 4xx atau 5xx, SDK melempar subclass dari Dodopayments\Core\Exceptions\APIException:

Jenis Error

Exception class bergantung pada penyebabnya. Semua class berada di namespace Dodopayments\Core\Exceptions:
Tangkap exception ini di sekitar pemanggilan API agar aplikasi Anda dapat menampilkan pesan yang jelas atau mencoba lagi nanti. Untuk error yang dapat di-retry, SDK hanya melempar exception setelah automatic retry gagal.

Penggunaan Lanjutan

Endpoint yang Tidak Terdokumentasi

Untuk memanggil endpoint yang tidak memiliki method SDK, gunakan $client->request. Method ini menerapkan autentikasi dan retry yang sama seperti method SDK:

Parameter yang Tidak Terdokumentasi

Untuk mengirim parameter yang tidak didefinisikan SDK, teruskan parameter tersebut di requestOptions:
Parameter extra* yang memiliki nama sama dengan parameter terdokumentasi akan menggantikannya.

Integrasi Framework

Laravel

Bungkus client dalam service class. Contoh ini menetapkan API URL dari environment yang dikonfigurasi:
Tambahkan pengaturan ke config/services.php:

Symfony

Buat service yang menerima API key melalui constructornya:
Daftarkan service di config/services.yaml:

Resource

GitHub Repository

Source code, release, dan daftar method lengkap.

API Reference

Setiap endpoint, parameter, dan respons.

Discord Community

Ajukan pertanyaan dan berbicara dengan developer lain.

Report Issues

Laporkan bug atau ajukan feature.

Dukungan

Untuk bantuan terkait PHP SDK:

Berkontribusi

Untuk berkontribusi, baca panduan kontribusi.
Terakhir diubah pada 26 September 2026