Optional cho các trường có thể bị thiếu, Stream để lặp qua các kết quả và CompletableFuture cho các lệnh gọi bất đồng bộ.
Cài đặt
Maven
Thêm phần phụ thuộc vàopom.xml:
pom.xml
Gradle
Thêm dependency vàobuild.gradle.kts của bạn:
build.gradle.kts
SDK yêu cầu Java 8 trở lên, vì vậy cũng chạy được trên Java 11, 17 và 21.
Bắt đầu nhanh
Tạo một client, sau đó tạo một phiên checkout:fromEnv() kết nối với live mode trừ khi DODO_PAYMENTS_BASE_URL hoặc dodopayments.baseUrl chỉ định khác. Để sử dụng test mode, hãy xem Test Mode. API key của test mode chỉ hoạt động trong test mode.
Tính năng cốt lõi
Type Safety
Các class request và response có kiểu để kiểm tra tại thời điểm biên dịch.
Shared Client
Tạo một client và tái sử dụng client đó cho các request: client quản lý connection pool và thread pool. Các object request và response là bất biến.
Builder Pattern
Mỗi class request đều có một builder, và
toBuilder() tạo một bản sao đã chỉnh sửa.Async Support
client.async() trả về một client có các method trả về CompletableFuture.Cấu hình
Biến môi trường
fromEnv() đọc các biến môi trường này hoặc system properties tương ứng. System properties được ưu tiên:
.env
DODO_PAYMENTS_API_KEY hoặc dodopayments.apiKey. Webhook signing secret được lấy từ DODO_PAYMENTS_WEBHOOK_KEY hoặc dodopayments.webhookKey, còn base URL được lấy từ DODO_PAYMENTS_BASE_URL hoặc dodopayments.baseUrl. Hãy tạo một client và tái sử dụng client đó, vì mỗi client có connection pool và thread pool riêng.
Để xác minh một webhook, truyền raw request body và headers vào client.webhooks().unwrap(UnwrapWebhookParams.builder().body(rawBody).headers(headers).build()), trong đó headers là một com.dodopayments.api.core.http.Headers. Method này kiểm tra chữ ký bằng webhook key của bạn và trả về event đã được phân tích, hoặc ném ra DodoPaymentsWebhookException. Nếu không có headers, unwrap sẽ không xác minh chữ ký. client.webhooks().unsafeUnwrap(rawBody) phân tích body mà không xác minh, vì vậy chỉ sử dụng method này để testing. Xem Webhooks.
Cấu hình thủ công
Thiết lập từng tùy chọn trên builder:RequestOptions.builder().timeout(Duration.ofSeconds(30)).build() làm đối số thứ hai của method. responseValidation(true) kiểm tra trước rằng toàn bộ response khớp với các kiểu dự kiến. Nếu không có tùy chọn này, SDK chỉ ném DodoPaymentsInvalidDataException khi bạn đọc một property có kiểu không mong đợi.
Test Mode
Để sử dụng test mode (https://test.dodopayments.com), hãy gọi testMode() trên builder:
Các thao tác phổ biến
Các ví dụ trong phần này sử dụngclient từ Quick Start.
Tạo phiên Checkout
Tạo một phiên checkout, sau đó chuyển hướng khách hàng đến checkout URL được trả về:checkoutUrl() trả về một Optional<String>. Mỗi checkout URL chỉ sử dụng được một lần và hết hạn sau 24 giờ. Để xem mọi tùy chọn của phiên, hãy xem Checkout Sessions.
Quản lý khách hàng
Tạo một khách hàng với email, tên và metadata, sau đó truy xuất khách hàng bằng ID:Xử lý gói đăng ký
Tạo một gói đăng ký với payment link, sau đó charge gói này nếu đó là gói đăng ký on-demand.productPrice được tính theo đơn vị tiền tệ nhỏ nhất, chẳng hạn như cents đối với USD hoặc paise đối với INR. Để charge $25.00, hãy truyền 2500.Tính phí dựa trên mức sử dụng
Cấu hình meter
Tạo một meter để đếm các event, sau đó liệt kê các meter của bạn.autoPager() lặp qua mọi meter và tìm nạp thêm các trang khi cần:
Nạp event sử dụng
Gửi một event sử dụng cho khách hàng. Các giá trị metadata của event là các objectJsonValue:
eventId là idempotency key, vì vậy hãy cung cấp một giá trị duy nhất cho mỗi event. Một timestamp cách thời điểm hiện tại hơn 1 giờ về trước hoặc hơn 5 phút trong tương lai sẽ bị từ chối.
Nạp event theo lô
Gửi tối đa 1.000 event trong một request. Ví dụ này sử dụng các import từ ví dụ trước:Xử lý lỗi
SDK ném ra các unchecked exception. Khi có error status, SDK ném ra một subclass củaDodoPaymentsServiceException, trong đó có statusCode(), headers() và body(). Hãy catch các class cụ thể mà bạn muốn xử lý trước base class:
UnexpectedStatusCodeException. Lỗi mạng sẽ ném DodoPaymentsIoException, còn các response mà SDK không thể diễn giải sẽ ném DodoPaymentsInvalidDataException. Tất cả các class này đều mở rộng DodoPaymentsException.
Các thao tác bất đồng bộ
Gọiasync() trên client để lấy một client bất đồng bộ. Các method của client này trả về một CompletableFuture:
DodoPaymentsOkHttpClientAsync.fromEnv().
Tích hợp Spring Boot
Class cấu hình
Đăng ký một client dưới dạng bean và chọn environment từ một property:Service layer
Inject client vào một service:Tài nguyên
GitHub Repository
Source code, các bản phát hành và danh sách method đầy đủ.
API Reference
Mọi endpoint, parameter và response.
Discord Community
Đặt câu hỏi và trao đổi với các developer khác.
Report Issues
Báo cáo bug hoặc yêu cầu tính năng.
Hỗ trợ
Để được hỗ trợ về Java SDK:- Discord: Tham gia community server để được hỗ trợ theo thời gian thực.
- Email: Liên hệ support@dodopayments.com.
- GitHub: Mở issue trên repository.