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 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.
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.
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 statiswith dengan named parameter:
["productID" => "pdt_123", "quantity" => 1]. Properti respons juga menggunakan nama camelCase, misalnya $session->checkoutURL.
Konfigurasi
ConstructorClient 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
maxRetries di requestOptions, pada client atau satu request:
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 kecheckoutURL yang dikembalikan:
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.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:
hasNextPage() dan getNextPage().
Penanganan Error
Jika SDK tidak dapat terhubung ke API, atau API mengembalikan status 4xx atau 5xx, SDK melempar subclass dariDodopayments\Core\Exceptions\APIException:
Jenis Error
Exception class bergantung pada penyebabnya. Semua class berada di namespaceDodopayments\Core\Exceptions:
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 direquestOptions:
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:config/services.php:
Symfony
Buat service yang menerima API key melalui constructornya: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:- Discord: Bergabunglah ke community server untuk mendapatkan bantuan secara real-time.
- Email: Hubungi support@dodopayments.com.
- GitHub: Buka issue di repository.