Tài liệu API Thay đổi Kế hoạch
Xem trước Thay đổi Kế hoạch API
Hướng dẫn Tích hợp Đăng ký
Nâng cấp hoặc hạ cấp đăng ký là gì?
Thay đổi kế hoạch cho phép bạn di chuyển một khách hàng giữa các cấp độ hoặc số lượng đăng ký. Sử dụng nó để:- Căn chỉnh giá cả với mức sử dụng hoặc tính năng
- Chuyển từ hàng tháng sang hàng năm (hoặc ngược lại)
- Điều chỉnh số lượng cho các sản phẩm dựa trên ghế
Khi nào sử dụng thay đổi kế hoạch
- Nâng cấp khi khách hàng cần nhiều tính năng, mức sử dụng hoặc ghế hơn
- Hạ cấp khi mức sử dụng giảm
- Di chuyển người dùng sang sản phẩm hoặc giá mới mà không hủy đăng ký của họ
Điều kiện tiên quyết
Trước khi thực hiện thay đổi kế hoạch đăng ký, hãy đảm bảo bạn có:- Một tài khoản thương nhân Dodo Payments với các sản phẩm đăng ký đang hoạt động
- Thông tin xác thực API (khóa API và khóa bí mật webhook) từ bảng điều khiển
- Một đăng ký đang hoạt động hiện có để sửa đổi
- Điểm cuối webhook được cấu hình để xử lý các sự kiện đăng ký
Hướng dẫn Triển khai Từng Bước
Theo dõi hướng dẫn toàn diện này để thực hiện các thay đổi kế hoạch đăng ký trong ứng dụng của bạn:Hiểu yêu cầu thay đổi kế hoạch
- Các sản phẩm đăng ký nào có thể thay đổi sang các sản phẩm nào khác
- Chế độ proration nào phù hợp với mô hình kinh doanh của bạn
- Cách xử lý các thay đổi kế hoạch không thành công một cách nhẹ nhàng
- Các sự kiện webhook nào cần theo dõi để quản lý trạng thái
Chọn Chiến lược Proration của Bạn
- prorated_immediately
- difference_immediately
- full_immediately
- Tính toán số tiền proration chính xác dựa trên thời gian chu kỳ còn lại
- Tính phí một khoản tiền proration dựa trên thời gian không sử dụng còn lại trong chu kỳ
- Cung cấp hóa đơn minh bạch cho khách hàng
Thực hiện API Thay đổi Kế hoạch
prorated_immediately, full_immediately, hoặc difference_immediately.Xử lý Sự kiện Webhook
subscription.active: Thay đổi kế hoạch thành công, đăng ký đã được cập nhậtsubscription.plan_changed: Kế hoạch đăng ký đã thay đổi (nâng cấp/hạ cấp/cập nhật addon)subscription.on_hold: Thay đổi phí kế hoạch không thành công, đăng ký đã bị tạm dừngpayment.succeeded: Tính phí ngay lập tức cho thay đổi kế hoạch đã thành côngpayment.failed: Tính phí ngay lập tức không thành công
Cập nhật Trạng thái Ứng dụng của Bạn
- Cấp phát/rút lại tính năng dựa trên kế hoạch mới
- Cập nhật bảng điều khiển của khách hàng với chi tiết kế hoạch mới
- Gửi email xác nhận về các thay đổi kế hoạch
- Ghi lại các thay đổi thanh toán cho mục đích kiểm toán
Kiểm tra và Giám sát
- Kiểm tra tất cả các chế độ proration với các tình huống khác nhau
- Xác minh rằng việc xử lý webhook hoạt động chính xác
- Giám sát tỷ lệ thành công của thay đổi kế hoạch
- Thiết lập cảnh báo cho các thay đổi kế hoạch không thành công
Xem trước Thay đổi Kế hoạch
Trước khi cam kết thay đổi kế hoạch, hãy sử dụng API Xem trước để cho khách hàng thấy chính xác số tiền họ sẽ bị tính phí:- Node.js SDK
- Python SDK
API Thay đổi Kế hoạch
Sử dụng API Thay đổi Kế hoạch để sửa đổi sản phẩm, số lượng và hành vi proration cho một đăng ký đang hoạt động.Ví dụ khởi động nhanh
- Node.js SDK
- Python SDK
- Go SDK
- HTTP
invoice_id và payment_id chỉ được trả về khi một khoản phí ngay lập tức và/hoặc hóa đơn được tạo trong quá trình thay đổi kế hoạch. Luôn dựa vào các sự kiện webhook (ví dụ: payment.succeeded, subscription.plan_changed) để xác nhận kết quả.Quản lý Addons
Khi thay đổi kế hoạch đăng ký, bạn cũng có thể sửa đổi các addon:Chế độ Proration
Chọn cách tính phí cho khách hàng khi thay đổi kế hoạch:prorated_immediately
- Tính phí cho sự khác biệt một phần trong chu kỳ hiện tại
- Nếu trong thời gian dùng thử, tính phí ngay lập tức và chuyển sang kế hoạch mới ngay bây giờ
- Hạ cấp: có thể tạo tín dụng proration áp dụng cho các lần gia hạn trong tương lai
full_immediately
- Tính phí toàn bộ số tiền của kế hoạch mới ngay lập tức
- Bỏ qua thời gian còn lại từ kế hoạch cũ
difference_immediately là có phạm vi đăng ký và khác với Tín dụng Khách hàng. Chúng tự động áp dụng cho các lần gia hạn trong tương lai của cùng một đăng ký và không thể chuyển nhượng giữa các đăng ký.difference_immediately
- Nâng cấp: tính phí ngay lập tức sự khác biệt giữa các kế hoạch cũ và mới
- Hạ cấp: thêm giá trị còn lại như tín dụng nội bộ cho đăng ký và tự động áp dụng khi gia hạn
Các tình huống ví dụ
Nâng cấp: Cơ bản ($30) → Chuyên nghiệp ($80) với difference_immediately
Nâng cấp: Cơ bản ($30) → Chuyên nghiệp ($80) với difference_immediately
Hạ cấp: Plus ($50) → Khởi đầu ($20) với difference_immediately
Hạ cấp: Plus ($50) → Khởi đầu ($20) với difference_immediately
Nâng cấp giữa chu kỳ với prorated_immediately
Nâng cấp giữa chu kỳ với prorated_immediately
Đặt lại thanh toán với full_immediately
Đặt lại thanh toán với full_immediately
Xử lý webhooks
Theo dõi trạng thái đăng ký thông qua webhooks để xác nhận các thay đổi kế hoạch và thanh toán.Các loại sự kiện cần xử lý
subscription.active: đăng ký đã được kích hoạtsubscription.plan_changed: kế hoạch đăng ký đã thay đổi (nâng cấp/hạ cấp/các thay đổi addon)subscription.on_hold: phí không thành công, đăng ký đã bị tạm dừngsubscription.renewed: gia hạn đã thành côngpayment.succeeded: thanh toán cho thay đổi kế hoạch hoặc gia hạn đã thành côngpayment.failed: thanh toán không thành công
Xác minh chữ ký và xử lý ý định
- Next.js Route Handler
- Express.js
Các Thực hành Tốt Nhất
Thực hiện các khuyến nghị này để thay đổi kế hoạch đăng ký một cách đáng tin cậy:Chiến lược Thay đổi Kế hoạch
- Kiểm tra kỹ lưỡng: Luôn kiểm tra các thay đổi kế hoạch trong chế độ thử nghiệm trước khi sản xuất
- Chọn proration cẩn thận: Chọn chế độ proration phù hợp với mô hình kinh doanh của bạn
- Xử lý các lỗi một cách nhẹ nhàng: Thực hiện xử lý lỗi đúng cách và logic thử lại
- Giám sát tỷ lệ thành công: Theo dõi tỷ lệ thành công/thất bại của các thay đổi kế hoạch và điều tra các vấn đề
Triển khai Webhook
- Xác minh chữ ký: Luôn xác thực chữ ký webhook để đảm bảo tính xác thực
- Thực hiện idempotency: Xử lý các sự kiện webhook trùng lặp một cách nhẹ nhàng
- Xử lý không đồng bộ: Đừng chặn phản hồi webhook với các thao tác nặng nề
- Ghi lại mọi thứ: Duy trì nhật ký chi tiết để phục vụ cho việc gỡ lỗi và kiểm toán
Trải nghiệm Người dùng
- Giao tiếp rõ ràng: Thông báo cho khách hàng về các thay đổi thanh toán và thời gian
- Cung cấp xác nhận: Gửi email xác nhận cho các thay đổi kế hoạch thành công
- Xử lý các trường hợp đặc biệt: Cân nhắc các giai đoạn dùng thử, proration và các khoản thanh toán không thành công
- Cập nhật UI ngay lập tức: Phản ánh các thay đổi kế hoạch trong giao diện ứng dụng của bạn
Các Vấn đề Thường Gặp và Giải Pháp
Giải quyết các vấn đề điển hình gặp phải trong quá trình thay đổi kế hoạch đăng ký:Phí đã được tạo nhưng đăng ký không được cập nhật
Phí đã được tạo nhưng đăng ký không được cập nhật
- Xử lý webhook không thành công hoặc bị trì hoãn
- Trạng thái ứng dụng không được cập nhật sau khi nhận webhook
- Vấn đề giao dịch cơ sở dữ liệu trong quá trình cập nhật trạng thái
- Thực hiện xử lý webhook mạnh mẽ với logic thử lại
- Sử dụng các thao tác idempotent cho các cập nhật trạng thái
- Thêm giám sát để phát hiện và cảnh báo về các sự kiện webhook bị bỏ lỡ
- Xác minh rằng điểm cuối webhook có thể truy cập và phản hồi chính xác
Tín dụng không được áp dụng sau khi hạ cấp
Tín dụng không được áp dụng sau khi hạ cấp
- Kỳ vọng về chế độ proration: hạ cấp tín dụng sự khác biệt giá của toàn bộ kế hoạch với
difference_immediately, trong khiprorated_immediatelytạo ra một tín dụng proration dựa trên thời gian còn lại trong chu kỳ - Tín dụng là cụ thể cho đăng ký và không thể chuyển nhượng giữa các đăng ký
- Số dư tín dụng không hiển thị trong bảng điều khiển của khách hàng
- Sử dụng
difference_immediatelycho các hạ cấp khi bạn muốn có tín dụng tự động - Giải thích cho khách hàng rằng tín dụng áp dụng cho các lần gia hạn trong tương lai của cùng một đăng ký
- Triển khai cổng thông tin khách hàng để hiển thị số dư tín dụng
- Kiểm tra xem hóa đơn xem trước tiếp theo có tín dụng đã áp dụng hay không
Xác minh chữ ký webhook không thành công
Xác minh chữ ký webhook không thành công
- Khóa bí mật webhook không chính xác
- Nội dung yêu cầu thô đã được sửa đổi trước khi xác minh chữ ký
- Thuật toán xác minh chữ ký sai
- Xác minh rằng bạn đang sử dụng
DODO_WEBHOOK_SECRETchính xác từ bảng điều khiển - Đọc nội dung yêu cầu thô trước bất kỳ middleware phân tích JSON nào
- Sử dụng thư viện xác minh webhook tiêu chuẩn cho nền tảng của bạn
- Thử nghiệm xác minh chữ ký webhook trong môi trường phát triển
Thay đổi kế hoạch không thành công với lỗi 422
Thay đổi kế hoạch không thành công với lỗi 422
- ID đăng ký hoặc ID sản phẩm không hợp lệ
- Đăng ký không ở trạng thái hoạt động
- Thiếu các tham số bắt buộc
- Sản phẩm không có sẵn cho các thay đổi kế hoạch
- Xác minh rằng đăng ký tồn tại và đang hoạt động
- Kiểm tra ID sản phẩm có hợp lệ và có sẵn không
- Đảm bảo tất cả các tham số bắt buộc được cung cấp
- Xem lại tài liệu API để biết yêu cầu tham số
Khoản phí ngay lập tức không thành công trong quá trình thay đổi kế hoạch
Khoản phí ngay lập tức không thành công trong quá trình thay đổi kế hoạch
- Không đủ tiền trong phương thức thanh toán của khách hàng
- Phương thức thanh toán đã hết hạn hoặc không hợp lệ
- Ngân hàng từ chối giao dịch
- Phát hiện gian lận đã chặn khoản phí
- Xử lý các sự kiện webhook
payment.failedmột cách thích hợp - Thông báo cho khách hàng cập nhật phương thức thanh toán
- Thực hiện logic thử lại cho các lỗi tạm thời
- Cân nhắc cho phép thay đổi kế hoạch với các khoản phí ngay lập tức không thành công
Đăng ký bị tạm dừng sau khi thay đổi kế hoạch
Đăng ký bị tạm dừng sau khi thay đổi kế hoạch
on_holdĐiều gì xảy ra:
Khi một khoản phí thay đổi kế hoạch không thành công, đăng ký sẽ tự động được đặt vào trạng thái on_hold. Đăng ký sẽ không tự động gia hạn cho đến khi phương thức thanh toán được cập nhật.Giải pháp: Cập nhật phương thức thanh toán để kích hoạt lại đăng kýĐể kích hoạt lại một đăng ký từ trạng thái on_hold sau khi thay đổi kế hoạch không thành công:- Cập nhật phương thức thanh toán bằng cách sử dụng API Cập nhật Phương thức Thanh toán
- Tạo khoản phí tự động: API tự động tạo một khoản phí cho các khoản nợ còn lại
- Tạo hóa đơn: Một hóa đơn được tạo cho khoản phí
- Xử lý thanh toán: Thanh toán được xử lý bằng phương thức thanh toán mới
- Kích hoạt lại: Sau khi thanh toán thành công, đăng ký được kích hoạt lại sang trạng thái
active
subscription.on_hold: Đăng ký đã bị tạm dừng (nhận được khi khoản phí thay đổi kế hoạch không thành công)payment.succeeded: Thanh toán cho các khoản nợ còn lại đã thành công (sau khi cập nhật phương thức thanh toán)subscription.active: Đăng ký đã được kích hoạt lại sau khi thanh toán thành công
- Thông báo ngay cho khách hàng khi khoản phí thay đổi kế hoạch không thành công
- Cung cấp hướng dẫn rõ ràng về cách cập nhật phương thức thanh toán của họ
- Giám sát các sự kiện webhook để theo dõi trạng thái kích hoạt lại
- Cân nhắc triển khai logic thử lại tự động cho các lỗi thanh toán tạm thời
Tài liệu API Cập nhật Phương thức Thanh toán
Kiểm tra Việc Triển khai của Bạn
Theo dõi các bước này để kiểm tra kỹ lưỡng việc triển khai thay đổi kế hoạch đăng ký của bạn:Thiết lập môi trường thử nghiệm
- Sử dụng khóa API thử nghiệm và các sản phẩm thử nghiệm
- Tạo các đăng ký thử nghiệm với các loại kế hoạch khác nhau
- Cấu hình điểm cuối webhook thử nghiệm
- Thiết lập giám sát và ghi lại
Kiểm tra các chế độ proration khác nhau
- Kiểm tra
prorated_immediatelyvới các vị trí chu kỳ thanh toán khác nhau - Kiểm tra
difference_immediatelycho các nâng cấp và hạ cấp - Kiểm tra
full_immediatelyđể đặt lại các chu kỳ thanh toán - Xác minh rằng các phép tính tín dụng là chính xác
Kiểm tra xử lý webhook
- Xác minh rằng tất cả các sự kiện webhook liên quan đều được nhận
- Kiểm tra xác minh chữ ký webhook
- Xử lý các sự kiện webhook trùng lặp một cách nhẹ nhàng
- Kiểm tra các kịch bản thất bại trong xử lý webhook
Kiểm tra các kịch bản lỗi
- Kiểm tra với các ID đăng ký không hợp lệ
- Kiểm tra với các phương thức thanh toán đã hết hạn
- Kiểm tra các lỗi mạng và thời gian chờ
- Kiểm tra với các khoản tiền không đủ
Giám sát trong sản xuất
- Thiết lập cảnh báo cho các thay đổi kế hoạch không thành công
- Giám sát thời gian xử lý webhook
- Theo dõi tỷ lệ thành công của các thay đổi kế hoạch
- Xem xét các vé hỗ trợ khách hàng cho các vấn đề thay đổi kế hoạch
Xử lý Lỗi
Xử lý các lỗi API phổ biến một cách nhẹ nhàng trong việc triển khai của bạn:Mã Trạng thái HTTP
200 OK
200 OK
400 Bad Request
400 Bad Request
401 Unauthorized
401 Unauthorized
404 Not Found
404 Not Found
422 Unprocessable Entity
422 Unprocessable Entity
500 Internal Server Error
500 Internal Server Error
Định dạng Phản hồi Lỗi
Các bước tiếp theo
- Xem lại API Thay đổi Kế hoạch
- Khám phá Tín dụng Khách hàng
- Triển khai cảnh báo cho
subscription.on_hold - Kiểm tra Hướng dẫn Tích hợp Webhook