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
Keyword arguments untuk parameter, tipe
TypedDict untuk objek bersarang, dan model Pydantic untuk response.Async/Await
AsyncDodoPayments untuk asyncio, dengan aiohttp sebagai backend HTTP opsional.Type Hints
Type hints pada setiap method, untuk autocomplete editor dan pemeriksaan tipe dengan mypy.
Auto-Pagination
Method list mengembalikan iterator yang mengambil halaman berikutnya saat Anda melakukan loop.
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
Source code, rilis, dan daftar method lengkap.
API Reference
Setiap endpoint, parameter, dan response.
Discord Community
Ajukan pertanyaan dan berdiskusi dengan developer lain.
Report Issues
Laporkan bug atau ajukan fitur.
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.