Chuyển đến nội dung chính
SDK C# cung cấp quyền truy cập thuận tiện vào Dodo Payments REST API từ các ứng dụng viết bằng C#. Nó có API dựa trên async Task với kiểu dữ liệu mạnh, tự động thử lại và xử lý lỗi toàn diện.

Cài đặt

Cài đặt gói từ NuGet:
SDK yêu cầu .NET 8.0 trở lên. Nó hoạt động với ASP.NET Core, các ứng dụng Console và các loại dự án .NET khác.

Bắt đầu nhanh

Khởi tạo client và tạo phiên thanh toán:
Luôn lưu trữ khóa API của bạn một cách an toàn bằng biến môi trường, user secrets hoặc Azure Key Vault. Không bao giờ viết cứng chúng vào mã nguồn hoặc cam kết chúng lên hệ thống điều khiển phiên bản.

Tính năng chính

Async/Await

API bất đồng bộ dựa trên Task đầy đủ cho các thao tác không chặn

Strong Typing

Đảm bảo kiểu dữ liệu toàn diện với nullable reference types

Smart Retries

Tự động thử lại với độ trễ tăng dần cho các lỗi tạm thời

Error Handling

Hệ thống ngoại lệ tích hợp cho việc quản lý lỗi chính xác

Cấu hình

Biến môi trường

.env

Cấu hình Thủ công

Môi trường

Chuyển đổi giữa chế độ thực và chế độ kiểm tra:

Thử Lại

SDK tự động thử lại 2 lần theo mặc định với độ trễ tăng dần. Nó thử lại trên các lỗi kết nối và mã trạng thái 408, 409, 429 và 5xx.

Thời gian chờ

Các yêu cầu sẽ hết thời gian chờ sau 1 phút theo mặc định.

Ghi đè theo Yêu cầu

Tạm thời thay đổi cấu hình cho một yêu cầu duy nhất bằng cách sử dụng WithOptions:

Các Hoạt động Thông thường

Tạo Phiên Thanh Toán

Quản lý Khách hàng

Xử lý Đăng ký

Billing yêu cầu tối thiểu mã ISO hai chữ cái Country. Sử dụng AttachExistingCustomer để đính kèm khách hàng hiện có, hoặc NewCustomer để tạo một khách hàng mới. ProductPrice là trong mệnh giá tiền tệ thấp nhất.

Xử lý lỗi

SDK ném ra các ngoại lệ cụ thể dựa trên mã trạng thái HTTP. Tất cả các lỗi 4xx đều kế thừa từ DodoPayments4xxException. Các loại ngoại lệ khác:
  • DodoPaymentsIOException: lỗi mạng I/O
  • DodoPaymentsInvalidDataException: Thất bại trong xử lý dữ liệu đã phân tích
  • DodoPaymentsException: Lớp cơ sở cho tất cả các ngoại lệ

Phân trang

Phân trang tự động

Lặp qua tất cả các kết quả trên tất cả các trang bằng phương thức Paginate, phương thức này trả về IAsyncEnumerable:

Phân trang thủ công

Tích hợp ASP.NET Core

Đăng ký khách hàng trong container DI của bạn:
Program.cs
appsettings.json
Trong quá trình phát triển, sử dụng user secrets thay vì lưu trữ khóa trong appsettings.json:

Tài nguyên

NuGet Package

Xem gói trên NuGet Gallery

GitHub Repository

Xem mã nguồn và đóng góp

API Reference

Tài liệu API hoàn chỉnh

Discord Community

Nhận trợ giúp và kết nối với các nhà phát triển

Hỗ trợ

Cần trợ giúp với C# SDK?
Lần sửa đổi cuối 28 tháng 5, 2026