DodoPayments, dan klien asinkron, AsyncDodoPayments, yang keduanya dibangun di atas httpx. Parameter request bersarang berupa typed dictionaries, sedangkan response berupa model Pydantic.
Instalasi
Instal SDK dengan pip:aiohttp:
client.webhooks.unwrap(), instal juga extra webhooks: pip install "dodopayments[webhooks]".
SDK memerlukan Python 3.9 atau yang lebih baru. Gunakan rilis Python stabil terbaru untuk mendapatkan pembaruan keamanan.
Mulai Cepat
Klien Sinkron
Buat klien, lalu buat sesi checkout:bearer_token, klien akan membaca environment variable DODO_PAYMENTS_API_KEY. Jika Anda tidak menyertakan environment, klien terhubung ke live mode. API key test mode hanya berfungsi dengan environment="test_mode".
Klien Asinkron
AsyncDodoPayments memiliki method yang sama dengan DodoPayments. Gunakan await pada setiap pemanggilan:
Fitur Inti
Pythonic Interface
Async/Await
Type Hints
Auto-Pagination
Konfigurasi
Environment Variable
Simpan API key Anda dalam environment variable:.env
Jika
DODO_PAYMENTS_BASE_URL ditetapkan dan Anda juga meneruskan environment, constructor akan menghasilkan error “Ambiguous URL”. Untuk menggunakan environment dalam kondisi tersebut, teruskan base_url=None.
Untuk memverifikasi webhook, teruskan request body mentah dan header ke client.webhooks.unwrap(payload, headers=headers). Method ini memeriksa signature dengan webhook key Anda dan mengembalikan event yang telah di-parse. client.webhooks.unsafe_unwrap(payload) mengurai body tanpa memverifikasinya, jadi gunakan hanya untuk pengujian. Lihat Webhooks.
Timeout
Request akan timeout setelah 1 menit secara default, dengan connection timeout 5 detik. Teruskantimeout dalam detik, atau httpx.Timeout untuk batas read, write, dan connect yang terpisah:
APITimeoutError. Request yang timeout akan dicoba ulang, sehingga pemanggilan dapat memerlukan waktu lebih lama daripada timeout sebelum gagal.
Percobaan Ulang
Tetapkanmax_retries pada klien, atau pada satu request dengan with_options():
dodopayments.APIError:
Status exception mewarisi
dodopayments.APIStatusError, yang memiliki atribut status_code dan response. APITimeoutError adalah subclass dari APIConnectionError.
Operasi Umum
Contoh dalam bagian ini menggunakanclient dari Mulai Cepat.
Membuat Sesi Checkout
Buat sesi checkout, lalu arahkan customer kecheckout_url yang dikembalikan:
checkout_url hanya dapat digunakan sekali dan kedaluwarsa setelah 24 jam. Untuk setiap opsi sesi, lihat Checkout Sessions.
Mengelola Customer
Buat customer dengan alamat email dan nama, lalu ambil berdasarkan ID:Menangani Subscription
Buat subscription, kenakan biaya pada subscription on-demand, dan baca riwayat penggunaan subscription.billing hanya memerlukan country, yaitu kode negara ISO dua huruf. customer menerima {"customer_id": ...} untuk melampirkan customer yang sudah ada atau {"email": ..., "name": ...} untuk membuat customer. charge digunakan untuk subscription on-demand, sedangkan product_price menggunakan unit mata uang terkecil. retrieve_usage_history mengembalikan list berpaginasi yang dapat Anda iterasi seperti ditunjukkan dalam Pagination.Penagihan Berbasis Penggunaan
Memasukkan Usage Event
Kirim usage event untuk customer:event_id adalah idempotency key, jadi berikan nilai unik untuk setiap event. Jika event_id yang sama muncul dua kali dalam satu request, seluruh request akan ditolak. Jika event_id sudah pernah dimasukkan, event baru akan diabaikan. Satu request menerima hingga 1.000 event. timestamp secara default menggunakan waktu saat ini dan ditolak jika lebih dari 1 jam di masa lalu atau lebih dari 5 menit di masa depan.Mencantumkan dan Mengambil Event
Ambil satu event berdasarkanevent_id, atau cantumkan event yang difilter berdasarkan customer dan nama event:
usage_events.list juga menerima filter meter_id, start, dan end.
Pagination
Auto-Pagination
Method list mengembalikan iterator yang mengambil halaman berikutnya saat Anda melakukan loop:Pagination Asinkron
Dengan klien asinkron, lakukan loop menggunakanasync for:
Pagination Manual
Untuk bekerja dengan satu halaman pada satu waktu, bacaitems dan panggil has_next_page() serta get_next_page(). next_page_info() mengembalikan parameter untuk request berikutnya:
Konfigurasi HTTP Client
Untuk menambahkan proxy, transport khusus, atau pengaturanhttpx lainnya, teruskan http_client milik Anda. DefaultHttpxClient mempertahankan batas koneksi, timeout, dan pengaturan redirect default SDK:
client.with_options(http_client=...).
Async dengan AIOHTTP
Secara default, klien asinkron mengirim request denganhttpx. Untuk concurrency yang lebih baik, instal extra aiohttp dan teruskan DefaultAioHttpClient() sebagai http_client:
Logging
SDK melakukan logging dengan modulelogging dari standard library. Untuk mengaktifkan logging, tetapkan DODO_PAYMENTS_LOG ke info:
debug:
Integrasi Framework
Contoh berikut membuat sesi checkout dari web endpoint dan mengembalikan URL-nya.FastAPI
Endpoint ini menggunakan klien asinkron:Django
View ini menggunakan klien sinkron:Resource
GitHub Repository
API Reference
Discord Community
Report Issues
Dukungan
Untuk mendapatkan bantuan terkait Python SDK:- Discord: Bergabunglah dengan community server untuk mendapatkan bantuan secara real-time.
- Email: Hubungi support@dodopayments.com.
- GitHub: Buka issue di repository.