Task, request dan response berupa typed class, dan client akan melakukan retry terhadap request yang gagal untuk Anda.
Installation
Install the package from NuGet:SDK memerlukan .NET Standard 2.0 atau yang lebih baru, dan juga menyediakan build .NET 8. SDK ini bekerja dengan ASP.NET Core, aplikasi console, dan jenis project .NET lainnya. Contoh di halaman ini menggunakan sintaks C# 12, seperti collection expressions.
Quick Start
Buat client, lalu buat checkout session:BearerToken, client akan membaca environment variable DODO_PAYMENTS_API_KEY. Jika Anda tidak menetapkan BaseUrl atau DODO_PAYMENTS_BASE_URL, client akan terhubung ke live mode. Untuk menggunakan test mode, lihat Environments. API key test mode hanya berfungsi dalam test mode.
Fitur Inti
Async/Await
Setiap metode API mengembalikan
Task dan menerima CancellationToken opsional.Strong Typing
Request dan response class bertipe, dengan anotasi nullable reference type.
Smart Retries
Dua retry secara default, dengan exponential backoff, untuk connection error dan status code yang dapat di-retry.
Error Handling
Exception class untuk setiap HTTP error status yang umum, dengan status code dan response body.
Konfigurasi
Environment Variables
Simpan API key dalam environment variable:.env
new() akan membaca pengaturannya dari environment:
Jika
BearerToken maupun DODO_PAYMENTS_API_KEY tidak ditetapkan, client akan melempar DodoPaymentsInvalidDataException. WebhookKey menyimpan webhook signing secret Anda, tetapi C# SDK tidak memiliki metode untuk memverifikasi webhook signature. Untuk memverifikasinya, ikuti Webhooks.
Konfigurasi Manual
Tetapkan property pada client untuk mengganti environment variable:Environments
Secara default, client terhubung ke live mode (https://live.dodopayments.com). Untuk menggunakan test mode (https://test.dodopayments.com), tetapkan BaseUrl ke EnvironmentUrl.TestMode:
Retry
SDK melakukan retry terhadap connection error dan response dengan status 408, 409, 429, atau 500 ke atas. Secara default, SDK melakukan retry dua kali dengan exponential backoff. TetapkanMaxRetries untuk mengubah jumlah retry, atau tetapkan ke 0 untuk menonaktifkan retry:
Timeout
Setiap percobaan request mengalami timeout setelah 1 menit secara default. Timeout tidak mencakup retry. TetapkanTimeout untuk mengubahnya:
Override Per-Request
Untuk mengubah pengaturan pada satu pemanggilan, panggilWithOptions pada client atau service. Fungsi ini mengembalikan salinan yang telah dimodifikasi dan menggunakan connection pool yang sama, sedangkan client asli tidak berubah:
Operasi Umum
Contoh di bagian ini menggunakanclient dari Quick Start.
Membuat Checkout Session
Buat checkout session, lalu redirect customer keCheckoutUrl yang dikembalikan:
Mengelola Customer
Buat customer dengan alamat email dan nama, lalu ambil kembali berdasarkan ID:Customers.Retrieve juga menerima ID sebagai string, misalnya client.Customers.Retrieve("cus_123").
Menangani Subscription
Buat subscription, lalu charge subscription tersebut jika merupakan subscription on-demand.Billing hanya memerlukan Country, yaitu kode negara ISO dua huruf. Customer menerima AttachExistingCustomer untuk melampirkan customer yang sudah ada atau NewCustomer untuk membuat customer baru. Charge digunakan untuk subscription on-demand, dan ProductPrice menggunakan unit terkecil mata uang.Penanganan Error
Saat API mengembalikan error status, SDK melempar subclass dariDodoPaymentsApiException, yang memiliki property StatusCode dan ResponseBody. Exception class bergantung pada status code. Semua exception 4xx mewarisi DodoPayments4xxException.
Status 4xx tanpa class khusus, seperti 409, akan melempar
DodoPayments4xxException. DodoPaymentsUnexpectedStatusCodeException mencakup status di luar rentang 4xx dan 5xx.
SDK juga melempar exception berikut:
DodoPaymentsIOException: Error I/O atau network.DodoPaymentsInvalidDataException: SDK tidak dapat menafsirkan response data, misalnya karena property yang diperlukan tidak ada.DodoPaymentsException: Base class dari setiap exception SDK.
Pagination
Metode list mengembalikan satu halaman hasil. Anda dapat melakukan iterasi pada setiap item atau berpindah halaman secara manual.Auto-Pagination
Paginate mengembalikan IAsyncEnumerable yang mengambil halaman berikutnya saat diperlukan:
Pagination Manual
Untuk bekerja dengan satu halaman setiap kali, bacaItems, lalu panggil HasNext() dan Next():
PaymentListParams dari namespace DodoPayments.Client.Models.Payments, misalnya client.Payments.List(new PaymentListParams { PageSize = 50 }).
Integrasi ASP.NET Core
Daftarkan satu client sebagai singleton dalam container dependency injection, lalu baca API key dari konfigurasi:Program.cs
appsettings.json:
appsettings.json
Resource
NuGet Package
Versi package dan perintah instalasi.
GitHub Repository
Source code, rilis, dan contoh.
API Reference
Setiap endpoint, parameter, dan response.
Discord Community
Ajukan pertanyaan dan berdiskusi dengan developer lain.
Dukungan
Untuk mendapatkan bantuan terkait C# SDK:- Discord: Bergabunglah dengan community server untuk mendapatkan bantuan secara real-time.
- Email: Hubungi support@dodopayments.com.
- GitHub: Buka issue di repository.