Skip to main content
C# SDK memberikan akses bertipe kepada aplikasi .NET ke REST API Dodo Payments. Setiap metode API bersifat asynchronous dan mengembalikan 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:
Jika Anda tidak menetapkan 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.
Simpan API key dalam environment variable, user secrets, atau Azure Key Vault. Jangan pernah menuliskannya secara hardcode dalam source code atau melakukan commit ke version control.

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
Client yang dibuat dengan new() akan membaca pengaturannya dari environment:
Client membaca environment variable berikut jika Anda tidak menetapkan property yang sesuai: 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. Tetapkan MaxRetries 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. Tetapkan Timeout untuk mengubahnya:

Override Per-Request

Untuk mengubah pengaturan pada satu pemanggilan, panggil WithOptions 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 menggunakan client dari Quick Start.

Membuat Checkout Session

Buat checkout session, lalu redirect customer ke CheckoutUrl yang dikembalikan:
Setiap checkout URL hanya dapat digunakan sekali dan kedaluwarsa setelah 24 jam. Untuk setiap opsi session, lihat Checkout Sessions.

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.
POST /subscriptions (metode Subscriptions.Create milik SDK) deprecated. Metode ini masih berfungsi untuk integrasi yang sudah ada, tetapi integrasi baru sebaiknya membuat subscription melalui Checkout Session.
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 dari DodoPaymentsApiException, 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, baca Items, lalu panggil HasNext() dan Next():
Untuk menetapkan ukuran halaman, teruskan 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
Tambahkan key ke konfigurasi Anda, misalnya dalam appsettings.json:
appsettings.json
Dalam development, simpan key menggunakan user secrets, bukan dalam 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:
Terakhir diubah pada 26 September 2026