Chuyển đến nội dung chính
Đăng ký cho phép bạn bán quyền truy cập liên tục với việc gia hạn tự động. Sử dụng các chu kỳ thanh toán linh hoạt, thử nghiệm miễn phí, thay đổi kế hoạch và bổ sung để điều chỉnh giá cho từng khách hàng.

Đăng Ký Là Gì?

Đăng ký là các sản phẩm định kỳ mà khách hàng mua theo lịch trình. Chúng lý tưởng cho:
  • Giấy phép SaaS: Ứng dụng, API hoặc quyền truy cập nền tảng
  • Thành viên: Cộng đồng, chương trình hoặc câu lạc bộ
  • Nội dung kỹ thuật số: Khóa học, phương tiện hoặc nội dung cao cấp
  • Kế hoạch hỗ trợ: SLA, gói thành công hoặc bảo trì

Lợi Ích Chính

  • Doanh thu dự đoán: Thanh toán định kỳ với việc gia hạn tự động
  • Chu kỳ linh hoạt: Hàng tháng, hàng năm, khoảng thời gian tùy chỉnh và thử nghiệm
  • Tính linh hoạt của kế hoạch: Phân bổ cho nâng cấp và hạ cấp
  • Bổ sung và chỗ ngồi: Gắn các nâng cấp tùy chọn, có thể định lượng
  • Thanh toán liền mạch: Thanh toán được lưu trữ và cổng thông tin khách hàng
  • Ưu tiên cho nhà phát triển: API rõ ràng cho việc tạo, thay đổi và theo dõi sử dụng

Tạo Đăng Ký

Tạo các sản phẩm đăng ký trong bảng điều khiển Dodo Payments của bạn, sau đó bán chúng thông qua thanh toán hoặc API của bạn. Việc tách biệt các sản phẩm khỏi các đăng ký hoạt động cho phép bạn phiên bản giá, gắn bổ sung và theo dõi hiệu suất một cách độc lập.

Tạo sản phẩm đăng ký

Cấu hình các trường trong bảng điều khiển để xác định cách sản phẩm đăng ký của bạn được bán, gia hạn và thanh toán. Các phần dưới đây tương ứng trực tiếp với những gì bạn thấy trong biểu mẫu tạo.

Chi tiết sản phẩm

  • Tên sản phẩm (bắt buộc): Tên hiển thị được hiển thị trong thanh toán, cổng thông tin khách hàng và hóa đơn.
  • Mô tả sản phẩm (bắt buộc): Một tuyên bố giá trị rõ ràng xuất hiện trong thanh toán và hóa đơn.
  • Hình ảnh sản phẩm (bắt buộc): PNG/JPG/WebP tối đa 3 MB. Được sử dụng trên thanh toán và hóa đơn.
  • Thương hiệu: Liên kết sản phẩm với một thương hiệu cụ thể để tạo chủ đề và email.
  • Danh mục thuế (bắt buộc): Chọn danh mục (ví dụ: SaaS) để xác định quy tắc thuế.
Chọn danh mục thuế chính xác nhất để đảm bảo thu thuế đúng theo khu vực.

Giá cả

  • Loại giá: Chọn Đăng ký (hướng dẫn này). Các lựa chọn thay thế là Thanh toán một lần và Thanh toán dựa trên mức sử dụng.
  • Giá (bắt buộc): Giá định kỳ cơ bản với đơn vị tiền tệ.
  • Giảm giá áp dụng (%): Giảm giá phần trăm tùy chọn áp dụng cho giá cơ bản; được phản ánh trong thanh toán và hóa đơn.
  • Lặp lại thanh toán mỗi (bắt buộc): Khoảng thời gian cho việc gia hạn, ví dụ: mỗi 1 tháng. Chọn nhịp (tháng hoặc năm) và số lượng.
  • Thời gian đăng ký (bắt buộc): Tổng thời gian mà đăng ký vẫn hoạt động (ví dụ: 10 năm). Sau khi thời gian này kết thúc, việc gia hạn sẽ dừng lại trừ khi được gia hạn.
  • Số ngày thử nghiệm (bắt buộc): Đặt độ dài thử nghiệm theo ngày. Sử dụng 0 để vô hiệu hóa thử nghiệm. Khoản phí đầu tiên sẽ xảy ra tự động khi thử nghiệm kết thúc.
  • Chọn bổ sung: Gắn tối đa 3 bổ sung mà khách hàng có thể mua cùng với kế hoạch cơ bản.
Thay đổi giá trên một sản phẩm đang hoạt động sẽ ảnh hưởng đến các giao dịch mua mới. Các đăng ký hiện có sẽ tuân theo cài đặt thay đổi kế hoạch và phân bổ của bạn.
Bổ sung là lý tưởng cho các tiện ích có thể định lượng như chỗ ngồi hoặc lưu trữ. Bạn có thể kiểm soát số lượng cho phép và hành vi phân bổ khi khách hàng thay đổi chúng.

Cài đặt nâng cao

  • Giá bao gồm thuế: Hiển thị giá bao gồm thuế áp dụng. Tính toán thuế cuối cùng vẫn thay đổi theo vị trí của khách hàng.
  • Tạo khóa giấy phép: Cấp một khóa duy nhất cho mỗi khách hàng sau khi mua. Xem hướng dẫn Khóa Giấy Phép.
  • Giao hàng sản phẩm kỹ thuật số: Giao tệp hoặc nội dung tự động sau khi mua. Tìm hiểu thêm trong Giao hàng sản phẩm kỹ thuật số.
  • Siêu dữ liệu: Gắn các cặp khóa–giá trị tùy chỉnh cho việc gán nhãn nội bộ hoặc tích hợp khách hàng. Xem Siêu dữ liệu.
Sử dụng siêu dữ liệu để lưu trữ các định danh từ hệ thống của bạn (ví dụ: accountId) để bạn có thể đối chiếu các sự kiện và hóa đơn sau này.

Thử Nghiệm Đăng Ký

Thử nghiệm cho phép khách hàng truy cập các đăng ký mà không cần thanh toán ngay lập tức. Khoản phí đầu tiên sẽ xảy ra tự động khi thử nghiệm kết thúc.

Cấu Hình Thử Nghiệm

Đặt Số ngày thử nghiệm trong phần giá sản phẩm (sử dụng 0 để vô hiệu hóa). Bạn có thể ghi đè điều này khi tạo các đăng ký:
// Via subscription creation
const subscription = await client.subscriptions.create({
  customer_id: 'cus_123',
  product_id: 'prod_monthly',
  trial_period_days: 14  // Overrides product's trial period
});

// Via checkout session
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_monthly', quantity: 1 }],
  subscription_data: { trial_period_days: 14 }
});
Giá trị trial_period_days phải nằm trong khoảng từ 0 đến 10,000 ngày.

Phát Hiện Trạng Thái Thử Nghiệm

Hiện tại, không có trường trực tiếp nào để phát hiện trạng thái thử nghiệm. Dưới đây là một giải pháp thay thế yêu cầu truy vấn thanh toán, điều này không hiệu quả. Chúng tôi đang làm việc trên một giải pháp hiệu quả hơn.
Để xác định xem một đăng ký có đang trong thời gian thử nghiệm hay không, hãy lấy danh sách các khoản thanh toán cho đăng ký đó. Nếu có chính xác một khoản thanh toán với số tiền 0, thì đăng ký đang trong thời gian thử nghiệm:
const subscription = await client.subscriptions.retrieve('sub_123');
const payments = await client.payments.list({
  subscription_id: subscription.subscription_id
});

// Check if subscription is in trial
const isInTrial = payments.items.length === 1 && 
                  payments.items[0].total_amount === 0;

Cập Nhật Thời Gian Thử Nghiệm

Mở rộng thời gian thử nghiệm bằng cách cập nhật next_billing_date:
await client.subscriptions.update('sub_123', {
  next_billing_date: '2025-02-15T00:00:00Z'  // New trial end date
});
Bạn không thể đặt next_billing_date vào một thời gian trong quá khứ. Ngày phải ở trong tương lai.

Thay Đổi Kế Hoạch Đăng Ký

Thay đổi kế hoạch cho phép bạn nâng cấp hoặc hạ cấp các đăng ký, điều chỉnh số lượng hoặc chuyển sang các sản phẩm khác. Mỗi thay đổi sẽ kích hoạt một khoản phí ngay lập tức dựa trên chế độ phân bổ mà bạn chọn.

Chế Độ Phân Bổ

Chọn cách khách hàng được tính phí khi thay đổi kế hoạch:

prorated_immediately

Tính phí số tiền phân bổ dựa trên thời gian còn lại trong chu kỳ thanh toán hiện tại. Tốt nhất cho việc tính phí công bằng mà tính đến thời gian chưa sử dụng.
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'prorated_immediately'
});

difference_immediately

Tính phí chênh lệch giá ngay lập tức (nâng cấp) hoặc thêm tín dụng cho các lần gia hạn trong tương lai (hạ cấp). Tốt nhất cho các tình huống nâng cấp/hạ cấp đơn giản.
// Upgrade: charges $50 (difference between $30 and $80)
// Downgrade: credits remaining value, auto-applied to renewals
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'difference_immediately'
});
Tín dụng từ việc hạ cấp sử dụng difference_immediately là phạm vi đăng ký và tự động áp dụng cho các lần gia hạn trong tương lai. Chúng khác với Tín dụng Khách Hàng.

full_immediately

Tính phí toàn bộ số tiền kế hoạch mới ngay lập tức, bỏ qua thời gian còn lại. Tốt nhất cho việc đặt lại chu kỳ thanh toán.
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_monthly',
  quantity: 1,
  proration_billing_mode: 'full_immediately'
});

Thay Đổi Kế Hoạch Với Bổ Sung

Sửa đổi các bổ sung khi thay đổi kế hoạch. Các bổ sung được bao gồm trong các phép tính phân bổ:
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'difference_immediately',
  addons: [{ addon_id: 'addon_extra_seats', quantity: 2 }]  // Add add-ons
  // addons: []  // Empty array removes all existing add-ons
});
Thay đổi kế hoạch sẽ kích hoạt các khoản phí ngay lập tức. Các khoản phí không thành công có thể chuyển đăng ký sang trạng thái on_hold. Theo dõi các thay đổi qua các sự kiện webhook subscription.plan_changed.

Xem Trước Thay Đổi Kế Hoạch

Trước khi cam kết thay đổi kế hoạch, hãy xem trước khoản phí chính xác và đăng ký kết quả:
const preview = await client.subscriptions.previewChangePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'prorated_immediately'
});

// Show customer the charge before confirming
console.log('You will be charged:', preview.immediate_charge.summary);

Xem Trước Thay Đổi Kế Hoạch API

Xem trước các thay đổi kế hoạch trước khi cam kết với chúng.

Trạng Thái Đăng Ký

Các đăng ký có thể ở trong các trạng thái khác nhau trong suốt vòng đời của chúng:
  • active: Đăng ký đang hoạt động và sẽ tự động gia hạn
  • on_hold: Đăng ký bị tạm dừng do thanh toán không thành công. Cần cập nhật phương thức thanh toán để kích hoạt lại
  • cancelled: Đăng ký đã bị hủy và sẽ không gia hạn
  • expired: Đăng ký đã đến ngày kết thúc
  • pending: Đăng ký đang được tạo hoặc xử lý

Trạng Thái Tạm Dừng

Một đăng ký vào trạng thái on_hold khi:
  • Một khoản thanh toán gia hạn không thành công (thiếu tiền, thẻ hết hạn, v.v.)
  • Một khoản phí thay đổi kế hoạch không thành công
  • Việc ủy quyền phương thức thanh toán không thành công
Khi một đăng ký ở trạng thái on_hold, nó sẽ không tự động gia hạn. Bạn phải 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 Từ Trạng Thái Tạm Dừng

Để kích hoạt lại một đăng ký từ trạng thái on_hold, hãy cập nhật phương thức thanh toán. Điều này tự động:
  1. Tạo một khoản phí cho các khoản nợ còn lại
  2. Tạo một hóa đơn
  3. Xử lý thanh toán bằng phương thức thanh toán mới
  4. Kích hoạt lại đăng ký sang trạng thái active khi thanh toán thành công
// Reactivate subscription from on_hold
const response = await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'new',
  return_url: 'https://example.com/return'
});

// For on_hold subscriptions, a charge is automatically created
if (response.payment_id) {
  console.log('Charge created:', response.payment_id);
  // Redirect customer to response.payment_link to complete payment
  // Monitor webhooks for payment.succeeded and subscription.active
}
Sau khi cập nhật thành công phương thức thanh toán cho một đăng ký on_hold, bạn sẽ nhận được các sự kiện webhook payment.succeeded tiếp theo là subscription.active.

Quản Lý API

Sử dụng POST /subscriptions để tạo đăng ký một cách lập trình từ các sản phẩm, với các thử nghiệm và bổ sung tùy chọn.

Tài liệu API

Xem API tạo đăng ký.
Sử dụng PATCH /subscriptions/{id} để cập nhật số lượng, hủy vào cuối kỳ hoặc sửa đổi siêu dữ liệu.

Tài liệu API

Tìm hiểu cách cập nhật chi tiết đăng ký.
Thay đổi sản phẩm đang hoạt động và số lượng với các điều khiển phân bổ.

Tài liệu API

Xem xét các tùy chọn thay đổi kế hoạch.
Đối với các đăng ký theo yêu cầu, tính phí các khoản cụ thể theo yêu cầu.

Tài liệu API

Tính phí một đăng ký theo yêu cầu.
Sử dụng GET /subscriptions để liệt kê tất cả các đăng ký và GET /subscriptions/{id} để truy xuất một cái.

Tài liệu API

Duyệt qua các API danh sách và truy xuất.
Lấy lịch sử sử dụng đã ghi cho các mô hình giá theo mức sử dụng hoặc kết hợp.

Tài liệu API

Xem API lịch sử sử dụng.
Cập nhật phương thức thanh toán cho một đăng ký. Đối với các đăng ký đang hoạt động, điều này cập nhật phương thức thanh toán cho các lần gia hạn trong tương lai. Đối với các đăng ký ở trạng thái on_hold, điều này kích hoạt lại đăng ký bằng cách tạo một khoản phí cho các khoản nợ còn lại.

Tài liệu API

Tìm hiểu cách cập nhật phương thức thanh toán và kích hoạt lại các đăng ký.

Các Trường Hợp Sử Dụng Thông Thường

  • SaaS và API: Quyền truy cập theo cấp độ với các bổ sung cho chỗ ngồi hoặc mức sử dụng
  • Nội dung và phương tiện: Quyền truy cập hàng tháng với các thử nghiệm giới thiệu
  • Kế hoạch hỗ trợ B2B: Hợp đồng hàng năm với các bổ sung hỗ trợ cao cấp
  • Công cụ và plugin: Khóa giấy phép và các phiên bản có phiên bản

Ví Dụ Tích Hợp

Phiên Thanh Toán (đăng ký)

Khi tạo các phiên thanh toán, bao gồm sản phẩm đăng ký của bạn và các bổ sung tùy chọn:
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_subscription',
      quantity: 1
    }
  ]
});

Thay đổi kế hoạch với phân bổ

Nâng cấp hoặc hạ cấp một đăng ký và kiểm soát hành vi phân bổ:
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_new',
  quantity: 1,
  proration_billing_mode: 'difference_immediately'
});

Hủy vào cuối kỳ

Lên lịch hủy mà không chấm dứt ngay lập tức quyền truy cập:
await client.subscriptions.update('sub_123', {
  cancel_at_period_end: true
});

Đăng ký theo yêu cầu

Tạo một đăng ký theo yêu cầu và tính phí sau khi cần:
const onDemand = await client.subscriptions.create({
  customer_id: 'cus_123',
  product_id: 'prod_on_demand',
  on_demand: true
});

await client.subscriptions.createCharge(onDemand.id, {
  amount: 4900,
  currency: 'USD',
  description: 'Extra usage for September'
});

Cập nhật phương thức thanh toán cho đăng ký đang hoạt động

Cập nhật phương thức thanh toán cho một đăng ký đang hoạt động:
// Update with new payment method
const response = await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'new',
  return_url: 'https://example.com/return'
});

// Or use existing payment method
await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'existing',
  payment_method_id: 'pm_abc123'
});

Kích hoạt lại đăng ký từ trạng thái tạm dừng

Kích hoạt lại một đăng ký đã bị tạm dừng do thanh toán không thành công:
// Update payment method - automatically creates charge for remaining dues
const response = await client.subscriptions.updatePaymentMethod('sub_123', {
  type: 'new',
  return_url: 'https://example.com/return'
});

if (response.payment_id) {
  // Charge created for remaining dues
  // Redirect customer to response.payment_link
  // Monitor webhooks: payment.succeeded → subscription.active
}

Đăng Ký Với Các Mệnh Lệnh Tuân Thủ RBI

Các đăng ký UPI và thẻ Ấn Độ hoạt động theo quy định của RBI (Ngân hàng Dự trữ Ấn Độ) với các yêu cầu mệnh lệnh cụ thể:

Giới Hạn Mệnh Lệnh

Loại và số tiền mệnh lệnh phụ thuộc vào khoản phí định kỳ của đăng ký của bạn:
  • Các khoản phí dưới ₹15,000: Chúng tôi tạo một mệnh lệnh theo yêu cầu cho ₹15,000 INR. Số tiền đăng ký được tính phí định kỳ theo tần suất đăng ký của bạn, lên đến giới hạn mệnh lệnh.
  • Các khoản phí ₹15,000 trở lên: Chúng tôi tạo một mệnh lệnh đăng ký (hoặc mệnh lệnh theo yêu cầu) cho số tiền đăng ký chính xác.

Cân Nhắc Nâng Cấp và Hạ Cấp

Quan trọng: Khi nâng cấp hoặc hạ cấp các đăng ký, hãy cân nhắc kỹ lưỡng các giới hạn mệnh lệnh:
  • Nếu một nâng cấp/hạ cấp dẫn đến một số tiền phí vượt quá ₹15,000 và vượt quá giới hạn thanh toán theo yêu cầu hiện tại, khoản phí giao dịch có thể không thành công.
  • Trong những trường hợp như vậy, khách hàng có thể cần cập nhật phương thức thanh toán của họ hoặc thay đổi đăng ký một lần nữa để thiết lập một mệnh lệnh mới với giới hạn chính xác.

Ủy Quyền Cho Các Khoản Phí Giá Trị Cao

Đối với các khoản phí đăng ký từ ₹15,000 trở lên:
  • Khách hàng sẽ được ngân hàng của họ yêu cầu ủy quyền cho giao dịch.
  • Nếu khách hàng không ủy quyền cho giao dịch, giao dịch sẽ không thành công và đăng ký sẽ bị tạm dừng.

Độ Trễ Xử Lý 48 Giờ

Thời gian xử lý: Các khoản phí định kỳ trên thẻ Ấn Độ và các đăng ký UPI tuân theo một mẫu xử lý độc đáo:
  • Các khoản phí được khởi tạo vào ngày đã lên lịch theo tần suất đăng ký của bạn.
  • Việc khấu trừ thực tế từ tài khoản của khách hàng chỉ xảy ra sau 48 giờ kể từ khi khởi tạo thanh toán.
  • Cửa sổ 48 giờ này có thể kéo dài thêm 2-3 giờ tùy thuộc vào phản hồi API của ngân hàng.

Cửa Sổ Hủy Mệnh Lệnh

Trong cửa sổ xử lý 48 giờ:
  • Khách hàng có thể hủy mệnh lệnh qua ứng dụng ngân hàng của họ.
  • Nếu một khách hàng hủy mệnh lệnh trong khoảng thời gian này, đăng ký sẽ vẫn hoạt động (đây là một trường hợp đặc biệt cụ thể cho các đăng ký thẻ Ấn Độ và UPI AutoPay).
  • Tuy nhiên, việc khấu trừ thực tế có thể không thành công, và trong trường hợp đó, chúng tôi sẽ đặt đăng ký vào trạng thái tạm dừng.
Xử Lý Trường Hợp Đặc Biệt: Nếu bạn cung cấp lợi ích, tín dụng hoặc sử dụng đăng ký cho khách hàng ngay lập tức khi khởi tạo khoản phí, bạn cần xử lý cửa sổ 48 giờ này một cách thích hợp trong ứng dụng của bạn. Cân nhắc:
  • Hoãn kích hoạt lợi ích cho đến khi xác nhận thanh toán
  • Thực hiện các khoảng thời gian ân hạn hoặc quyền truy cập tạm thời
  • Theo dõi trạng thái đăng ký cho các trường hợp hủy mệnh lệnh
  • Xử lý các trạng thái tạm dừng đăng ký trong logic ứng dụng của bạn
Theo dõi các webhook đăng ký để theo dõi các thay đổi trạng thái thanh toán và xử lý các trường hợp đặc biệt khi các mệnh lệnh bị hủy trong khoảng thời gian 48 giờ.

Thực Hành Tốt Nhất

  • Bắt đầu với các cấp rõ ràng: 2–3 kế hoạch với sự khác biệt rõ ràng
  • Giao tiếp giá cả: Hiển thị tổng, phân bổ và lần gia hạn tiếp theo
  • Sử dụng thử nghiệm một cách hợp lý: Chuyển đổi với việc hướng dẫn, không chỉ thời gian
  • Tận dụng các bổ sung: Giữ các kế hoạch cơ bản đơn giản và bán thêm các tiện ích
  • Kiểm tra các thay đổi: Xác thực các thay đổi kế hoạch và phân bổ trong chế độ thử nghiệm
Các đăng ký là nền tảng linh hoạt cho doanh thu định kỳ. Bắt đầu đơn giản, kiểm tra kỹ lưỡng và lặp lại dựa trên việc áp dụng, tỷ lệ rời bỏ và các chỉ số mở rộng.