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
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.
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>.

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.
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ện | Hà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.active | Tạ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.renewed | Không hành động. Các mã đã có vẫn tồn tại. |
subscription.on_hold | Vô 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 / expired | Vô hiệu hóa permanent mã. |
subscription.plan_changed | Vô 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ển | Vô 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ếp | Thu 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ã.
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 qua email mã khi thanh toán hoặc đăng ký. Đây là hành vi đã mô tả trước đó và áp dụng khifulfillment_modebị bỏ qua.manual: Việc mua tạo ra một quyền cấppendingkhông có mã, và bạn tự cung cấp từng giá trị mã. Xem Thực hiện thủ công dưới đây.
Thực hiện thủ công
Theo mặc định, Dodo Payments tạo và gửi qua email một mã license ngay khi khách hàng thanh toán. Với thực hiện thủ công bạn tự cung cấp mã: việc mua tạo ra một quyền cấppending không có mã, thông báo cho bạn, và chờ bạn gửi giá trị mã. Sử dụng điều này khi mã đến từ hệ thống của bạn, nhà cung cấp bên thứ ba, hoặc một nhóm mã đã in sẵ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 một khách hàng mua sản phẩm ở chế độ thủ công, quyền cấp được tạo ở trạng tháipending không có mã 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 ứng với webhook đó, hoặc kiểm tra endpoint List Grants với các bộ lọc integration_type và status:
Cung cấp mã
Gửi mã với endpoint Fulfill License Key Grant. Quyền cấp di chuyển sangdelivered và khách hàng sẽ tự động nhận được mã — cùng email mà họ sẽ nhận được trong chế độ thực hiện tự động.
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
| Trường | Mã tự động tạo | Mã thực hiện thủ công | Mã nhập khẩu |
|---|---|---|---|
source | "auto" | "manual" | "import" |
| Nguồn gốc | Được tạo bởi Dodo Payments khi thanh toán | Cung cấp bởi bạn chống lại một quyền cấp đang chờ | Được tạo/di chuyển qua POST /license_keys |
payment_id | Đặt vào thanh toán gốc | Giải quyết từ quyền cấp hoặc đăng ký của nó | null (không có giao dịch của Dodo Payments) |
subscription_id | Đặt nếu phát hành qua đăng ký | Đặt nếu quyền cấp đến từ một đăng ký | null trừ khi được liên kết rõ ràng |
| Thông báo email khách hàng | Gửi khi phát hành | Gửi khi thực hiện | Không gửi — xử lý riêng |
source trên các phản hồi GET /license_keys để phân biệt di chuyển tồn kho và mã thực hiện thủ công từ các mã cấp phát tự nhiên khi đối chiếu hoặc kiểm toán.
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 mã license mới hoặc nhập một mã hiện tại.
List License Keys
Duyệt tất cả mã với các 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
Điều chỉnh hạn sử dụng, giới hạn kích hoạt, hoặc bật/tắt mã.
Entitlement Management
Entitlement Management
Quản lý quyền cấp License Key: giới hạn kích hoạt của nó, thời gian và hướng dẫn.
Create Entitlement
Tạo một quyền cấp License Key.
Update Entitlement
Cập nhật cấu hình của quyền cấp.
List Grants
Liệt kê các mã đã phát hành cho một quyền cấp.
Revoke Grant
Thu hồi mã của khách hàng một cách thủ công.
Webhooks
Việc cấp mã và thu hồi mã kích hoạt bốn sự kiện webhookentitlement_grant.*. Payload quyền cấp bao gồm một đối tượng license_key với mã, hạn sử dụng, số lần 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 chép mã license cơ bản; xem trang payload webhook License Key.
Mã License Cũ
Các sản phẩm được tạo với cờ
license_key_enabled cũ đã được tự động di chuyển sang quyền cấp License Key. Việc di chuyển là trong suốt: các mã khách hàng hiện tại tiếp tục hoạt động không thay đổi, các điểm cuối công khai /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 Mã License độc lập trong bảng điều khiển 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 gian, 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 License Key đã di chuyển trong Quyền cấp.Thực hành Tốt nhất
- 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 đơn 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 dán những hướng dẫn này 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 nhận mã phía máy chủ: Đối với các sản phẩm kết nối mạng, xác nhận qua
/licenses/validatethay vì lưu trữ dữ liệu kích hoạt cục bộ. - Sử dụng webhooks để thu hồi: Lắng 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 đăng ký và một lần: Hành vi mã license khác biệt nhẹ giữa hai hình thức, vì vậy hãy kiểm tra cả hai trước khi đưa vào thực tế.