Skip to main content
Rust SDK memberikan akses bertipe kepada aplikasi async Rust ke REST API Dodo Payments. SDK ini dibangun di atas Tokio dan reqwest, menggunakan struct request dan response bertipe, melakukan streaming hasil berpaginasi, serta mencoba kembali request yang gagal.

Instalasi

Tambahkan SDK ke proyek Anda dengan Cargo:
Atau tambahkan secara manual ke Cargo.toml Anda:
SDK memerlukan Rust 1.75 atau yang lebih baru.

Pengantar Cepat

Client::from_env() membaca API key Anda dari environment variable DODO_PAYMENTS_API_KEY. Buat client, lalu buat checkout session:
Jika DODO_PAYMENTS_API_KEY tidak disetel, Client::from_env() mengembalikan Error::Config. Client terhubung ke live mode kecuali Anda memilih environment lain, seperti yang ditunjukkan dalam Environments. API key test mode hanya berfungsi dalam test mode.
Simpan API key dalam environment variable atau secrets manager. Jangan pernah menuliskannya secara hardcode di source code Anda.

Fitur Inti

Async First

Dibangun di atas Tokio dan reqwest, dengan async/await untuk setiap request.

Strong Typing

Struct request dan response bertipe untuk pemeriksaan saat compile time.

Auto-Pagination

Lakukan streaming setiap item di seluruh halaman, atau pindah satu halaman setiap kali.

Configurable

Tetapkan environment, base URL, timeout, dan jumlah retry untuk setiap client.

Konfigurasi

Environment Variables

Client::from_env() membaca API key Anda dari DODO_PAYMENTS_API_KEY. SDK menggunakan URL live mode kecuali Anda menetapkan DODO_PAYMENTS_BASE_URL:
Rust SDK tidak membaca DODO_PAYMENTS_WEBHOOK_KEY dan tidak memiliki method untuk memverifikasi webhook signatures. Untuk memverifikasinya, ikuti Webhooks. Anda juga dapat mengonfigurasi client secara eksplisit. Client::new mengembalikan Result, jadi lakukan unwrap dengan ? di dalam function yang mengembalikan dodopayments::Result:

Environments

SDK memiliki dua environment: Base URL default adalah https://live.dodopayments.com. Untuk memilih environment lain, gunakan enum Environment alih-alih URL hard-coded:
Untuk tetap membaca API key dari DODO_PAYMENTS_API_KEY dengan from_env() tetapi menargetkan environment lain, override environment pada config:

Timeouts

Timeout request default adalah 30 detik. Override timeout tersebut untuk sebuah client dengan with_timeout:
Client mencoba kembali connection errors dan response dengan status 408, 409, 429, atau 500 ke atas. Secara default, client melakukan retry dua kali dengan exponential backoff, dan menunggu header Retry-After ketika API mengirimkannya. Untuk mengubah jumlah retry, panggil with_max_retries pada ClientConfig, misalnya .with_max_retries(0) untuk menonaktifkan retry.

Operasi Umum

Contoh dalam bagian ini menggunakan client dari Quick Start.

Membuat Checkout Session

Buat checkout session dengan return URL:
Arahkan customer ke session.checkout_url. Setiap checkout URL hanya dapat digunakan sekali dan kedaluwarsa setelah 24 jam. Untuk setiap opsi session, lihat Checkout Sessions.

Mengelola Customers

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

Menangani Subscriptions

Buat subscription untuk customer yang sudah ada.
POST /subscriptions (method subscriptions().create() milik SDK) sudah deprecated. Method ini masih berfungsi untuk integrasi yang sudah ada, tetapi integrasi baru sebaiknya membuat subscriptions melalui Checkout Session.
billing hanya memerlukan country, yaitu varian enum CountryCode seperti CountryCode::Us. customer adalah enum CustomerRequest: teruskan AttachExistingCustomer untuk customer yang sudah ada atau NewCustomer untuk membuat customer baru. Untuk menagih on-demand subscription, panggil client.subscriptions().charge().subscription_id(...) dengan body SubscriptionsChargeParams. Field amount seperti product_price menggunakan unit mata uang terkecil (misalnya, 2500 adalah $25.00).

Billing Berbasis Penggunaan

Memasukkan Usage Events

Kirim usage events untuk customer:
event_id adalah idempotency key, jadi berikan nilai unik untuk setiap event. Jika timestamp adalah None, event menggunakan waktu saat ini.

Mencantumkan Usage Events

Cantumkan events yang difilter berdasarkan customer dan nama event. Filter dimasukkan ke dalam object query JSON:

Pagination

List endpoints mengembalikan typed page yang field items-nya berisi halaman hasil saat ini. Untuk melakukan streaming setiap item di seluruh halaman, panggil into_stream:
Untuk berpindah satu halaman setiap kali, panggil get_next_page. Method ini mengembalikan None setelah halaman terakhir:

Penanganan Error

Setiap method mengembalikan dodopayments::Result<T>. Failure merupakan varian dari enum dodopayments::Error: Api untuk error status dari API, Http untuk transport errors, Json untuk serialization errors, Config untuk configuration errors, serta MissingPathParam atau MissingBody untuk request yang tidak lengkap. Gunakan match pada nilai tersebut untuk menangani API errors secara terpisah dari transport errors:

Endpoints yang Tidak Terdokumentasi

Untuk memanggil endpoint yang tidak memiliki typed method, gunakan builder low-level request. Builder ini menerapkan authentication dan base URL. Untuk memberi nama reqwest::Method, tambahkan reqwest 0.12 ke dependencies Anda:

Resources

GitHub Repository

Source code, releases, dan daftar method lengkap.

Crates.io

Crate yang dipublikasikan beserta versinya.

API Reference

Setiap endpoint, parameter, dan response.

Discord Community

Ajukan pertanyaan dan berdiskusi dengan developer lain.

Dukungan

Untuk mendapatkan bantuan terkait Rust SDK:

Berkontribusi

Untuk berkontribusi, baca contributing guidelines.
Terakhir diubah pada 26 September 2026