Chuyển đến nội dung chính

Documentation Index

Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt

Use this file to discover all available pages before exploring further.

Mã giấy phép thuộc loại quyền được cấp phép License Key. Tạo một quyền cấp phép License Key một lần với giới hạn kích hoạt, thời hạn hết hạn và hướng dẫn bạn muốn, gắn nó vào bất kỳ sản phẩm nào, và Dodo Payments sẽ tạo và phân phối một mã mỗi lần mua hoặc mỗi chỗ trong đăng ký, tự động.

Mã Giấy Phép là gì?

License keys are unique tokens that authorize access to your product. They’re ideal for:
  • Software licensing: Desktop apps, plugins, and CLIs
  • Per-seat controls: Limit activations per user or device
  • Digital goods: Gate downloads, updates, or premium features
Trong Dodo Payments, mã giấy phép được quản lý thông qua hệ thống Entitlements, có nghĩa là vòng đời của mỗi mã (tạo, hết hạn, thu hồi, cấp lại) được điều khiển bởi cùng các sự kiện thanh toán và đăng ký như các sản phẩm khác của bạn.

Tạo một Quyền cấp phép License Key

1

Open Entitlements

Đi đến Entitlements trong bảng điều khiển Dodo Payments của bạn và nhấp + để tạo một quyền mới.
2

Choose License Key

Chọn License Key làm tích hợp. Cấu hình cách mà mỗi mã được cấp phát hành xử lý:
  • Giới hạn Kích hoạt: Số lượng kích hoạt đồng thời tối đa cho mỗi mã (ví dụ, 1 cho ứng dụng một người dùng, 5 cho giấy phép nhóm, để trống cho không giới hạn).
  • Thời Gian: Thời gian mã duy trì hiệu lực sau khi phát hành (ví dụ, 30 ngày, 1 năm). Đối với mã được cấp phát hành thông qua đăng ký, để trống; mã vẫn có hiệu lực miễn là đăng ký còn hoạt động.
  • Hướng Dẫn Kích Hoạt: Các hướng dẫn dành cho khách hàng được gửi kèm với mã qua email. Ví dụ: Paste the key in Settings → License hoặc Run: mycli activate <key>.
License Key entitlement form with activation limit, duration, and instructions
3

Save the entitlement

Lưu. Quyền cấp phát hành giờ có sẵn để gắn vào bất kỳ sản phẩm nào.

Gắn vào Sản Phẩm

Mở một sản phẩm, mở rộng Cài Đặt Nâng Cao → Entitlements & Credits, và chọn quyền cấp phép License Key của bạn. Một sản phẩm đơn có thể cấp một mã giấy phép cùng với các quyền khác (truy cập Discord, tải tệp, truy cập kho GitHub, v.v.) trong cùng một lần mua.
Product entitlements panel with License Key selected

Cách Mã Được Phát Hành

Việc phát hành mã theo chuẩn vòng đời cấp phát:
Sự KiệnHành Vi
payment.succeeded (một lần)Tạo một mã cho mỗi quantity đã mua. Thời hạn mã tôn trọng thời gian của quyền cấp phát hành.
subscription.activeTạo một mã cho mỗi chỗ trong đăng ký quantity. Mã không có thời hạn; hiệu lực được gắn với tình trạng đăng ký.
subscription.renewedKhông hành động. Các mã đã có vẫn tồn tại.
subscription.on_holdVô hiệu hóa mã. Chúng sẽ được kích hoạt lại khi đăng ký thoát khỏi chế độ tạm dừng.
subscription.cancelled / expiredVô hiệu hóa permanent mã.
subscription.plan_changedVô hiệu hóa mã cũ; phát hành mã mới cho kế hoạch mới.
refund.succeeded (một lần)Vô hiệu hóa mã.
Thu hồi thủ công qua API/bảng điều khiểnVô hiệu hóa mã với revocation_reason: manual. Các mã này không tự cấp phát lại khi đăng ký được gia hạn.
Mã giấy phép bị vô hiệu hóa trực tiếpThu hồi quyền cấp phát với revocation_reason: license_key_disabled. Kích hoạt lại mã sẽ tự động kích hoạt việc cấp phát lại.

Hành vi với Số lượng

  • Sản phẩm đăng ký cấp một mã cho mỗi chỗ (subscriptions.quantity).
  • Sản phẩm một lần cấp một mã cho mỗi dòng sản phẩm trong giỏ hàng (product_cart.quantity).
  • Cấp phát thủ công qua API chỉ cấp đúng một mã.

Kích hoạt, Xác thực, Hủy kích hoạt

Các điểm cuối API kích hoạt/xác thực/hủy kích hoạt là công khai và không yêu cầu mã API. Sử dụng chúng trực tiếp từ phần mềm máy tính để bàn, giao diện dòng lệnh, hoặc khách hàng dựa trên trình duyệt để xác thực mã khi chạy.
Các Điểm Cuối Công Khai: Các điểm cuối kích hoạt, hủy kích hoạt, và xác thực mã giấy phép là công khai và không yêu cầu mã API. Gọi chúng trực tiếp từ ứng dụng khách của bạn mà không cần lộ thông tin API của bạn.

Kích hoạt giấy phép

import DodoPayments from 'dodopayments';

// No API key needed for public license endpoints
const client = new DodoPayments();

const response = await client.licenses.activate({
  license_key: 'PRO-AAAA-BBBB-CCCC-DDDD',
  name: 'Device Name',
});

console.log(response.id);

Xác thực giấy phép

const response = await client.licenses.validate({
  license_key: 'PRO-AAAA-BBBB-CCCC-DDDD',
});

console.log(response.valid);

Hủy kích hoạt một phiên bản kích hoạt

await client.licenses.deactivate({
  license_key: 'PRO-AAAA-BBBB-CCCC-DDDD',
  license_key_instance_id: 'instance_abc123',
});

Quản lý Mã

Mở quyền cấp phát License Key từ bảng điều khiển của bạn để xem mọi quyền được cấp phát (một hàng cho mỗi mã khách hàng) với ngày giao, số lượng kích hoạt, và một hành động thu hồi. Chi tiết mỗi quyền cấp phát xuất hiện mã giấy phép nền, thời hạn, số kích hoạt đã sử dụng, và giới hạn kích hoạt. Bạn cũng có thể liệt kê các quyền cấp phát một cách lập trình:
const grants = await client.entitlements.grants.list('ent_license_key_id', {
  status: 'delivered',
});

for (const grant of grants.items) {
  console.log(grant.license_key.key, grant.license_key.activations_used);
}

Nhập Mã Giấy Phép Hiện Có qua API

Đã có mã giấy phép trong hệ thống khác? Sử dụng API Tạo Mã Giấy Phép để nhập chúng vào Dodo Payments. Điều này cho phép bạn chuyển đổi mã hiện có mà không làm gián đoạn khách hàng của bạn — họ tiếp tục kích hoạt, xác thực, và hủy kích hoạt theo cùng chuỗi mã mà không cần cấp phát lại.
Mã giấy phép được tạo hoặc cập nhật thông qua API không kích hoạt thông báo email cho khách hàng. Nếu bạn cần thông báo cho khách hàng về một mã được nhập, hãy xử lý điều đó riêng trong ứng dụng của bạn.
const licenseKey = await client.licenseKeys.create({
  customer_id: 'cus_abc123',
  product_id: 'prod_456',
  key: 'YOUR-EXISTING-LICENSE-KEY',
  activations_limit: 5,
  expires_at: '2026-12-31T23:59:59Z',
});

Khác biệt của mã đã nhập từ mã tự động tạo

TrườngMã tự động tạoMã đã nhập
source"auto""import"
payment_idĐặt theo thanh toán gốcnull (không có giao dịch Dodo Payments)
subscription_idĐặt nếu mã được cấp phát thông qua một đăng kýnull trừ khi được liên kết rõ ràng
Thông báo email khách hàngGửi khi phát hànhKhông gửi — xử lý riêng
Sử dụng trường source trên phản hồi GET /license_keys để phân biệt hàng tồn kho được di chuyển từ các mã cấp phát tự nhiên khi hòa giải hoặc kiểm toán.
Đang chuyển từ Polar.sh hoặc Lemon Squeezy? CLI dodo-migrate tự động hóa việc nhập hàng loạt các sản phẩm, khách hàng, giảm giá, và mã giấy phép chỉ với một lệnh và tự động ánh xạ các ID ngoại vi tới ID Dodo.

Mã Giấy Phép trong URL Trả Về

Khi một khách hàng hoàn thành mua một sản phẩm có quyền cấp phép License Key, mã được tạo sẽ tự động được đính kèm vào return_url của bạn dưới dạng tham số truy vấn. Điều này cho phép bạn hiển thị mã ngay lập tức trên trang thành công của bạn mà không cần gọi thêm API.
https://yoursite.com/return?payment_id=pay_xxx&status=succeeded&license_key=LK-001&email=customer%40example.com
Nếu giao dịch mua phát hành nhiều mã (số lượng > 1), chúng được phân tách bằng dấu phẩy:
https://yoursite.com/return?payment_id=pay_xxx&status=succeeded&license_key=LK-001,LK-002&email=customer%40example.com
Đối với các đăng ký, subscription_id được sử dụng thay vì payment_id:
https://yoursite.com/return?subscription_id=sub_xxx&status=active&license_key=LK-001&email=customer%40example.com
Phân tích tham số license_key trên trang trả về của bạn để hiển thị mã ngay lập tức, cải thiện trải nghiệm sau khi mua.

Quản Lý API

Kích hoạt, hủy kích hoạt, và xác thực là công khai; không yêu cầu mã API.

Activate License

Tạo hoặc ghi nhận một phiên kích hoạt cho một mã giấy phép.

Deactivate License

Thu hồi một kích hoạt trước để giải phóng dung lượng.

Validate License

Kiểm tra tính xác thực, trạng thái, và hạn chế trước khi cấp quyền truy cập.
Tạo, liệt kê, truy xuất và cập nhật các bản ghi mã giấy phép riêng lẻ. Sử dụng những điều này để nhập các mã hiện có hoặc lấy chi tiết sử dụng.

Create License Key

Tạo một mã giấy phép mới hoặc nhập một mã hiện có.

List License Keys

Duyệt tất cả các mã với chi tiết trạng thái và sử dụng.

Get License Key

Truy xuất một mã cụ thể và siêu dữ liệu của nó.

Update License Key

Chỉnh sửa thời hạn, giới hạn kích hoạt, hoặc bật/tắt một mã.
Quản lý quyền cấp phép License Key: giới hạn kích hoạt, thời gian và hướng dẫn của nó.

Create Entitlement

Tạo một quyền cấp phép License Key.

Update Entitlement

Cập nhật cấu hình của quyền cấp phép.

List Grants

Liệt kê các mã phát hành cho một quyền cấp phép.

Revoke Grant

Thu hồi thủ công mã của khách hàng.

Webhooks

Việc giao và thu hồi mã giấy phép kích hoạt bốn sự kiện webhook entitlement_grant.*. Payload của quyền cấp phát chứa một đối tượng license_key được điền đầy đủ với mã, thời hạn, số lượng kích hoạt đã sử dụng, và giới hạn. Các sự kiện license_key.* cũ (license_key.created) tiếp tục kích hoạt cho vòng đời ghi lại mã giấy phép cơ bản; hãy xem trang payload webhook Mã Giấy Phép License Key webhook payload page.
Đối với tích hợp mới, hãy nghe entitlement_grant.delivered thay vì license_key.created. Sự kiện quyền cấp phát cho bạn biết việc giao hàng đã hoàn tất trên tất cả các tích hợp của sản phẩm, không chỉ mỗi mã giấy phép.

Mã Giấy Phép Cũ

Các sản phẩm được tạo với flag license_key_enabled cũ đã được tự động chuyển đổi sang quyền cấp phép License Key. Việc chuyển đổi là minh bạch: các mã của khách hàng hiện hữu vẫn hoạt động không đổi, các điểm cuối công cộng /licenses/activate, /licenses/validate, /licenses/deactivate tiếp tục hoạt động, và các điểm cuối API /license_keys/* tiếp tục đọc và ghi vào cùng kho mã.Phần bảng điều khiển License Keys độc lập vẫn có sẵn dưới dạng danh sách phẳng của mọi mã đã phát hành, hữu ích cho kiểm toán và tìm kiếm. Cấu hình mới (thay đổi giới hạn kích hoạt, thời hạn, hoặc hướng dẫn) nên được thực hiện bằng cách chỉnh sửa quyền cấp phép License Key đã chuyển đổi dưới Entitlements.

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

  • Giữ rõ ràng các giới hạn kích hoạt: Chọn các mặc định hợp lý (1 cho ứng dụng một người dùng, 3–5 cho giấy phép nhóm) và tài liệu hóa chúng.
  • Cung cấp hướng dẫn kích hoạt chính xác: Khách hàng sẽ dán chúng từ email của họ, vì vậy các đường dẫn và lệnh chính xác sẽ tiết kiệm các yêu cầu hỗ trợ.
  • Xác thực mã phía máy chủ: Đối với các sản phẩm kết nối mạng, hãy xác thực qua /licenses/validate thay vì lưu trữ tạm thời kích hoạt cục bộ.
  • Sử dụng webhooks để thu hồi: Nghe entitlement_grant.revoked để vô hiệu hóa các tính năng trong ứng dụng ngay lập tức khi khách hàng hủy hoặc hoàn tiền.
  • Kiểm tra với các đăng ký và mục tiêu đơn lẻ: Hành vi của mã giấy phép có sự khác biệt tinh tế giữa hai loại, vì vậy hãy thử nghiệm cả hai trước khi hoạt động.
Last modified on May 14, 2026