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
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ụ,
1cho ứng dụng một người dùng,5cho 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 → LicensehoặcRun: mycli activate <key>.

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.
Selecting the License Key entitlement in the product entitlements panel.
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: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ã.
Chế độ thực hiện
Mỗi quyền cấp License Key có mộtfulfillment_mode để kiểm soát ai cung cấp mã:
auto(mặc định): Dodo Payments tự động tạo và gửi khóa qua email khi thanh toán hoặc đăng ký gói. Đây là hành vi được mô tả ở trên và áp dụng khifulfillment_modebị bỏ qua.manual: Giao dịch mua tạo một grantPendingkhông có khóa, và bạn tự cung cấp từng giá trị khóa. Xem Manual Fulfillment bên dưới.
Thực hiện thủ công
Theo mặc định, Dodo Payments tạo và gửi khóa giấy phép qua email ngay khi khách hàng thanh toán. Với manual fulfillment, bạn tự cung cấp khóa: giao dịch mua tạo một grantPending không có khóa, thông báo cho bạn và chờ bạn gửi giá trị khóa. Hãy sử dụng tính năng này khi khóa đến từ hệ thống của bạn, nhà cung cấp bên thứ ba hoặc một kho mã được in sẵn có số lượng hữu hạn.
Tìm kiếm hướng dẫn từng bước để xây dựng? Xem Hướng dẫn tích hợp thực hiện thủ công mã License để có hướng dẫn chi tiết từ việc tạo sản phẩm đến cung cấp mã.
Khi nào sử dụng
Thực hiện tự động là lựa chọn mặc định đúng cho hầu hết các giấy phép phần mềm. Chọn thực hiện thủ công khi Dodo Payments không thể phát hành mã:- Mang theo mã của bạn: Mã được tạo bởi ứng dụng của bạn, một sản phẩm desktop, hoặc máy chủ cấp phép của bạn.
- Nhà cung cấp bên thứ ba: Bạn bán lại các mã được cấp bởi nhà cung cấp thượng nguồn (một mã game, thông tin xác thực API, nền tảng đối tác).
- Tồn kho hữu hạn: Bạn cung cấp mã từ một nhóm đã phân bổ trước và muốn chỉ định chúng từng cái một.
- Đánh giá con người: Bạn muốn xem xét một giao dịch mua trước khi phát hành quyền truy cập.
Kích hoạt thực hiện thủ công
Đặtfulfillment_mode: "manual" trên cấu hình tích hợp quyền cấp License Key:
fulfillment_mode tương thích ngược. Các quyền cấp được tạo ra trước khi thiết lập này tồn tại không có fulfillment_mode và tiếp tục hoạt động như auto. Chuyển sang manual chỉ ảnh hưởng đến các quyền cấp được tạo sau thay đổi này; các mã đã được phát hành sẽ không bị ảnh hưởng.Tìm quyền cấp chờ thực hiện
Khi khách hàng mua một sản phẩm ở chế độ thủ công, grant được tạo ở trạng tháiPending mà không có khóa và một webhook entitlement_grant.created được kích hoạt với integration_type: "license_key" và status: "Pending". Bạn có thể phản hồi webhook đó hoặc truy vấn endpoint List Customer Grants với các bộ lọc integration_type và status:
Cung cấp mã
Gửi khóa bằng endpoint Fulfill License Key Grant. Grant chuyển sangDelivered và khách hàng sẽ tự động nhận được khóa — trong cùng email mà họ sẽ nhận khi sử dụng cơ chế auto fulfillment.
cURL
activations_limit và expires_at là tùy chọn và mặc định theo cấu hình quyền cấp khi bị bỏ qua. Mỗi quyền cấp chỉ được thực hiện một lần; thử lại một quyền cấp đã được thực hiện sẽ trả về 409 thay vì cấp phát mã thứ hai.
Bạn không cần phải gửi email mã tự mình — việc cung cấp xảy ra tự động khi quyền cấp được thực hiện. Điều này khác với nhập các mã qua
POST /license_keys, mà cố ý không thông báo cho khách hàng.Kích hoạt, Xác nhận, Hủy kích hoạt
Các điểm cuối kích hoạt/xác nhận/hủy kích hoạt API 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 desktop, CLIs hoặc khách hàng dựa trên trình duyệt để xác minh các mã trong thời gian chạy.Đ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 nhận license 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 của bạn mà không làm lộ thông tin xác thực API của bạn.
Kích hoạt một license
Xác nhận một license
Hủy kích hoạt một phiên bản kích hoạt
Quản lý Mã
Mở quyền cấp License Key từ bảng điều khiển của bạn để xem mọi quyền cấp (một hàng mỗi mã khách hàng) với ngày giao hàng, số lượng kích hoạt, và hành động thu hồi. Mỗi chi tiết quyền cấp sẽ xuất hiện mã license cơ bản, hạn sử dụng, số lần 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ê quyền cấp theo cách lập trình:Nhập Mã License Hiện Tại qua API
Đã có mã license trong hệ thống khác? Sử dụng API Tạo Mã License để nhập chúng vào Dodo Payments. Điều này cho phép bạn di chuyển các 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 nhận, và hủy kích hoạt các chuỗi mã như cũ mà không cần cấp lại.Sự Khác Biệt của Mã theo Nguồn
Sử dụng trường
source trên các bản ghi license-key để phân biệt inventory được migrate và các key được fulfillment thủ công với các key được cấp tự nhiên khi đối soát hoặc audit. Đọc trường này từ object license_key trên các grant được trả về bởi List Grants; endpoint GET /license_keys cũ đã deprecated.
Mã License trong URL Trả về
Khi một khách hàng hoàn tất quá trình mua cho một sản phẩm với quyền cấp License Key, mã được tạo ra tự động sẽ được thêm vàoreturn_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 mình mà không cần thực hiện thêm yêu cầu API.
subscription_id được sử dụng thay vì payment_id:
Quản lý API
Lifecycle Operations (Public Endpoints)
Lifecycle Operations (Public Endpoints)
Kích hoạt, hủy kích hoạt, và xác nhận là công khai; không yêu cầu mã API.
Activate License
Tạo hoặc ghi lại một phiên bản kích hoạt cho một mã license.
Deactivate License
Thu hồi một lần 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à giới hạn trước khi cấp quyền truy cập.
License Key Management
License Key Management
Tạo, liệt kê, truy xuất, và cập nhật các bản ghi mã license riêng lẻ. Sử dụng chúng để nhập các mã hiện tại hoặc lấy thông tin sử dụng.
Create License Key
Tạo một license key mới hoặc import một key hiện có.
List License Keys
Duyệt tất cả key cùng thông tin về trạng thái và mức sử dụng.
Get License Key
Truy xuất một key cụ thể và metadata của key đó.
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 key.
Entitlement Management
Entitlement Management
Quản lý chính entitlement License Key: giới hạn kích hoạt, thời hạn và hướng dẫn.
Create Entitlement
Tạo entitlement License Key.
Update Entitlement
Cập nhật cấu hình của entitlement.
List Grants
Liệt kê các key được cấp cho một entitlement.
Revoke Grant
Thu hồi thủ công key của customer.
Webhooks
Việc phân phối và thu hồi license-key sẽ kích hoạt bốnentitlement_grant.* sự kiện webhook. Payload của grant bao gồm object license_key đã được điền đầy đủ với key, thời hạn, số lượt kích hoạt đã sử dụng và giới hạn.
Các sự kiện license_key.* cũ (license_key.created) vẫn tiếp tục được kích hoạt cho vòng đời của bản ghi license-key nền tảng; xem trang payload webhook của License Key.
License Keys cũ
Các product được tạo với flag
license_key_enabled cũ đã được tự động migrate sang entitlement License Key. Việc migrate diễn ra minh bạch: key của các customer hiện tại vẫn tiếp tục hoạt động mà không thay đổi, các endpoint công khai /licenses/activate, /licenses/validate, /licenses/deactivate vẫn tiếp tục hoạt động, và các endpoint API /license_keys/* vẫn tiếp tục đọc và ghi vào cùng một key store.Mục License Keys độc lập trong dashboard vẫn khả dụng dưới dạng danh sách phẳng gồm mọi key đã cấp, hữu ích cho việc audit và tìm kiếm. Các 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 entitlement License Key đã migrate trong Entitlements.Best Practices
- Giữ giới hạn kích hoạt rõ ràng: Chọn các giá trị mặc định hợp lý (1 cho ứng dụng một người dùng, 3–5 cho license dành cho nhóm) và ghi lại chúng.
- Cung cấp hướng dẫn kích hoạt chính xác: Customer sẽ dán các hướng dẫn này từ email của họ, vì vậy path và command chính xác sẽ giúp giảm số lượng ticket hỗ trợ.
- Validate key ở phía server: Đối với các product được kết nối mạng, hãy validate qua
/licenses/validatethay vì cache activation cục bộ. - Sử dụng webhook để thu hồi: Lắng nghe
entitlement_grant.revokedđể vô hiệu hóa ngay các tính năng trong app khi customer hủy hoặc được refund. - Test với subscription và giao dịch một lần: Hành vi của license key có khác biệt nhỏ giữa hai loại này, vì vậy hãy test cả hai trước khi go live.