Giao thức CLV1 đã công khaiĐọc đặc tả
Mục lục thư viện

Thư viện tài liệuBản quyền

Tạo và quản lý license

License là chiếc key mà khách hàng nhập vào phần mềm của bạn để mở khoá bản quyền. Hướng dẫn này đi qua toàn bộ vòng đời của một key: tạo theo lô, theo dõi trạng thái, tra cứu, xem chi tiết và xử lý các tình huống như gia hạn, tạm khoá, thu hồi hay đổi máy.

10 phút đọc

Trước khi bắt đầu

  • Mọi thao tác nằm ở Phát hành & bản quyền › License của từng ứng dụng.
  • Mọi vai trò trong workspace (Chủ sở hữu, Quản trị, Thành viên) đều được tạo và quản lý license. Nếu ứng dụng bật Bắt buộc MFA cho team, bạn cần bật 2FA hoặc thêm passkey trước ở Tài khoản & tổ chức › Bảo mật tài khoản.
  • Mỗi key được tạo từ một gói license (policy). Gói quyết định thời hạn mặc định, số máy, quyền tính năng, số ngày ân hạn và luật chuyển máy. Bạn khai báo gói ở Phát hành & bản quyền › Đăng nhập & gói license, xem Gói license và quyền tính năng.

Tạo key theo lô

  1. Mở Phát hành & bản quyền › License và bấm Tạo key.
  2. Điền các trường trong khung Tạo license key (giải thích ở bảng dưới).
  3. Bấm Tạo N key để sinh lô.
  4. Sao chép hoặc tải danh sách key về, rồi bấm Tôi đã lưu lại.
TrườngÝ nghĩa
Số lượngTừ 1 tới hạn mức "Key mỗi lô" của gói dịch vụ. Ô nhập tự giới hạn theo hạn mức này.
GóiGói license áp cho cả lô. Chỉ hiện khi ứng dụng có từ hai gói trở lên; mặc định là gói được đánh dấu mặc định.
Thời hạn1 ngày, 7 ngày, 30 ngày, 90 ngày, 1 năm hoặc Vĩnh viễn. Không chọn thì dùng thời hạn của gói. Thời hạn tính từ lần kích hoạt đầu tiên, không phải từ lúc tạo.
Số thiết bị mỗi keyĐể trống là theo gói (ô hiện sẵn giá trị của gói). Không vượt quá hạn mức "Thiết bị mỗi key".
Tiền tố1 đến 12 chữ in hoa hoặc chữ số, ví dụ PRO. Ký tự khác bị loại bỏ khi gõ.
Ghi chúKhông bắt buộc, tối đa 500 ký tự, áp cho mọi key trong lô. Nên ghi tên khách hoặc mã đơn hàng để sau này tìm lại.

Key gồm 25 ký tự chia 5 nhóm, lấy từ bảng 32 ký tự đã bỏ 0, O, 1, I để khách khỏi gõ nhầm. Có tiền tố thì key có dạng PRO-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX. Khi kiểm tra key, hệ thống bỏ qua chữ hoa thường và khoảng trắng thừa.

Key chỉ hiện một lần

Sau đó, danh sách chỉ hiện bản xem trước như PRO-7KQ2M-…-X4WZB: đủ để nhận ra key, không đủ để đoán ra nó.

Email người mua

Form tạo key trong dashboard không có ô email. Bạn gắn email cho từng license trong khung chi tiết (xem phần bên dưới), hoặc truyền email ngay khi tạo key qua Seller API. Seller API nhận cùng các trường như dashboard (count, policyId, durationSeconds, maxDevices, prefix, note), thêm email và metadata:

curl -X POST https://api.example.com/seller/v1/apps/app_…/licenses \
  -H "Authorization: Bearer $CLAVIS_API_KEY" \
  -H "content-type: application/json" \
  -d '{"count": 1, "durationSeconds": 2592000, "note": "Order 1042", "email": "buyer@example.com"}'

Kết quả trả về { "data": { "keys": [...], "ids": [...], "warnings": [] } }. Chi tiết ở Bán hàng qua Seller API và tham chiếu Seller API.

Hạn mức tạo key theo gói

Hạn mứcBasicPremium
Key mỗi lô501.000
Key mỗi ngày10010.000
Thiết bị mỗi key3100
Hạn mức mềmKhôngCó

Đây là giá trị mặc định; con số áp cho workspace của bạn luôn hiện ở Tài khoản & tổ chức › Gói & sử dụng, và đồng hồ "Key hôm nay" ở cuối thanh bên cho biết bạn đã dùng bao nhiêu trong ngày.

  • Hạn mức ngày tính chung cho cả workspace, mọi ứng dụng và mọi nguồn tạo key (dashboard, Seller API), theo ngày UTC.
  • Trên Basic, lô vượt hạn mức ngày bị từ chối với mã plan_limit. Lô tạo lỗi được hoàn lại hạn mức.
  • Trên Premium (hạn mức mềm), lô vẫn được tạo; API trả thêm cảnh báo daily_key_limit_exceeded.

Xem thêm Gói Basic, Premium và hạn mức và bảng giá.

Key thử nghiệm (TEST)

Để thử phần mềm trước khi bán, bật Key thử nghiệm (TEST) trong khung tạo key:

  • Không tính vào hạn mức key mỗi ngày; tạo tối đa 10 key một lần.
  • Hết hạn đúng 24 giờ sau khi tạo, kể cả khi chưa kích hoạt, và không có ngày ân hạn.
  • Có nhãn TEST trong danh sách license; người bán lại không tạo được.
  • Khi bạn bật Cài đặt ứng dụng › Đã phát hành công khai, key TEST không tạo thêm được (mã app_released) và những key đã tạo ngừng hoạt động: phần mềm nhận mã test_key_disabled (xem Mã lỗi).

Qua Seller API, gửi "test": true; khi đó durationSeconds và expiresAt bị bỏ qua.

Trạng thái của license

Trạng tháiÝ nghĩaPhần mềm của khách
Chưa dùngĐã tạo, chưa kích hoạt lần nào. Thời hạn chưa chạy.Kích hoạt được
Đang dùngĐã kích hoạt. Ngày hết hạn bằng lúc kích hoạt cộng thời hạn.Chạy bình thường
Sắp hết hạnBộ lọc trong dashboard: key đang dùng, còn tối đa 7 ngày.Chạy, state là expiring trong khoảng báo trước của gói
Ân hạnĐã qua ngày hết hạn nhưng còn trong số ngày ân hạn của gói.Vẫn chạy, state là grace
Hết hạnĐã qua ngày hết hạn.Bị từ chối (license_expired) khi hết ân hạn
Tạm khoáBạn tạm dừng key, mở lại được.Bị từ chối (license_suspended)
Thu hồiDừng vĩnh viễn.Bị từ chối (license_revoked)

Trạng thái hiệu lực

Cơ sở dữ liệu chỉ lưu năm trạng thái: chưa dùng, đang dùng, hết hạn, tạm khoá, thu hồi. Một tác vụ nền chạy mỗi giờ để:

  • Gửi đúng một thông báo license.expiring cho mỗi kỳ hạn, khi key đi vào khoảng "Báo trước khi hết (ngày)" của gói (mặc định 7). Nếu license có email, người mua nhận thư nhắc kèm link cổng khách hàng khi cổng đang bật.
  • Chuyển key sang hết hạn khi đã qua ngày hết hạn cộng số ngày "Ân hạn sau hạn (ngày)", và phát license.expired.

Dashboard không chờ tác vụ này: key đang dùng mà đã qua ngày hết hạn được hiển thị ngay là Hết hạn. Đó là trạng thái hiệu lực. Phía phần mềm cũng tự tính ngày hết hạn cộng ân hạn ở mỗi yêu cầu.

Phần mềm nhận biết trạng thái thế nào

import { ClavisClient, ClavisError } from "@clavisauh/sdk";

const clavis = new ClavisClient({ baseUrl: "https://api.example.com", appId: "app_…", appPublicKey, device });

try {
  const grant = await clavis.activate(key);
  if (grant.license.state === "expiring") showNotice(`License hết hạn ngày ${grant.license.expiresAt}`);
  if (grant.license.state === "grace") showNotice("License đã hết hạn, bạn đang trong thời gian ân hạn");
} catch (err) {
  if (err instanceof ClavisError) showError(err.code); // device_limit, license_expired, invalid_credentials…
}

Với giao thức CLV1.1 (SDK JS dùng mặc định), máy chưa giữ suất trên key nhận chung mã invalid_credentials cho mọi key không dùng được. Lý do cụ thể như license_expired, license_suspended chỉ trả cho máy đã gắn với key đó.

Lọc và tìm kiếm

  • Hàng nút lọc: Tất cả, Chưa dùng, Đang dùng, Sắp hết hạn, Hết hạn, Tạm khoá, Thu hồi. Sắp hết hạn luôn là 7 ngày tới, không theo khoảng báo trước của gói.
  • Ô tìm kiếm khớp bốn thứ: key đầy đủ (so qua mã băm, đây là cách duy nhất tìm bằng key gốc), một phần ghi chú (không phân biệt hoa thường), một phần bản xem trước, ví dụ nhóm ký tự cuối, và dấu người mua như 0123456789.abcdef tìm thấy trong một file bị lộ (Forensic Watermarking).
  • Bộ lọc và từ khoá nằm trên URL (?status=expiring&q=...), nên bạn có thể lưu hoặc gửi link cho đồng đội.
  • Danh sách xếp mới nhất trước, mỗi trang 50 dòng, bấm Tải cũ hơn để xem tiếp.

Khung chi tiết license

Bấm vào một dòng, hoặc menu ⋯ › Xem chi tiết. Khung trượt ra từ bên phải; phần đầu hiện bản xem trước, trạng thái, ID và thước đo rủi ro nếu Protect 24/7 đã chấm điểm key này. Bên dưới:

  • Kích hoạt lúc, Hết hạn ("Từ lần dùng đầu" nếu chưa kích hoạt, "Vĩnh viễn" nếu không có hạn), Thiết bị (số máy đang giữ suất trên tối đa).
  • Người mua: email của license.
  • Quyền tính năng: các entitlement mà gói cấp, chỉ hiện khi gói có.
  • Chuyển máy: luật của gói, ví dụ "Khách đã dùng 1/2 lần trong 30 ngày, cách nhau 24 giờ".
  • Thiết bị: từng máy với nền tảng, phiên bản ứng dụng, IP cuối và lần thấy cuối, hoặc nhãn Đã gỡ, Đang bị chặn, Đang ngủ, đã trả suất. Biểu tượng chip nghĩa là khoá thiết bị nằm trong chip bảo mật.
  • Người dùng liên kết, Lịch sử chuyển máy (20 lần gần nhất) và Lượt gọi SDK gần đây (10 sự kiện mới nhất).

Với từng máy, nút X Trả suất cho máy này gỡ máy và ghi vào lịch sử là "Người bán gỡ", không trừ lượt chuyển máy của khách. Máy bị chặn có nút Bỏ chặn. Khi một máy mới bị từ chối vì key đã đủ máy, khung hiện "Máy … bị từ chối, so với máy này" kèm danh sách linh kiện khớp hay không; Cho phép máy này trả suất của máy cũ để máy mới kích hoạt được ở lần thử sau. Xem Thiết bị, HWID và chuyển máy.

Thao tác trên license

Mở menu ⋯ ở cuối mỗi dòng:

Thao tácTác dụng
Gia hạnCộng +7 ngày, +30 ngày, +90 ngày hoặc +1 năm.
Tạm khoáChỉ áp cho key Chưa dùng hoặc Đang dùng. Mọi phiên đang chạy kết thúc ngay. Thông báo có nút Hoàn tác.
Mở khoáKey về Đang dùng nếu từng được kích hoạt, ngược lại về Chưa dùng.
Đặt lại thiết bịGỡ mọi máy và kết thúc mọi phiên; trạng thái và hạn giữ nguyên. Không ghi vào lịch sử chuyển máy.
Thu hồiDừng vĩnh viễn, kết thúc mọi phiên, không mở lại được. Máy vẫn offline có thể chạy tiếp tới khi token offline hết hạn. Cần xác nhận.
XoáKey ngừng hoạt động ngay và biến khỏi danh sách; bản ghi vẫn giữ trong nhật ký kiểm toán. Cần xác nhận.

Chi tiết về Gia hạn:

  • Key chưa dùng có thời hạn: thời gian được cộng vào thời hạn, đồng hồ vẫn bắt đầu từ lần kích hoạt.
  • Key đã có ngày hết hạn: cộng vào ngày hết hạn. Nếu đã quá hạn (kể cả đang ân hạn), thời gian tính từ lúc gia hạn. Key Hết hạn trở lại Đang dùng.
  • Key vĩnh viễn không thay đổi. Key đang tạm khoá được cộng hạn nhưng vẫn tạm khoá; thời hạn không dừng lại trong lúc tạm khoá.
  • Thông báo sắp hết hạn được đặt lại, nên khách sẽ được nhắc lần nữa ở cuối kỳ mới.

Để gắn hoặc đổi email, trong khung chi tiết bấm vào dòng Người mua ("Thêm email để mở cổng khách hàng" nếu chưa có), nhập email rồi bấm Lưu. Lưu ô trống để xoá email. Email mở cổng khách hàng và nhận thư nhắc hết hạn. Ghi chú chỉ đặt được lúc tạo trong dashboard; muốn sửa sau, dùng thao tác note của Seller API.

Thao tác hàng loạt

Tích ô đầu dòng (ô ở tiêu đề chọn mọi dòng đang hiển thị). Thanh Đã chọn N hiện các nút Tạm khoá, Mở khoá, Gia hạn, Đặt lại thiết bị, Thu hồi. Xoá chỉ có trong menu từng dòng. Mỗi lần gọi xử lý tối đa 1.000 license; key không hợp trạng thái (ví dụ mở khoá một key không bị tạm khoá) được bỏ qua.

Liên quan

Bạn cần giúp gì?

Câu hỏi thường gặp

ClavisAUH là gì?

Dịch vụ bản quyền và xác thực cho phần mềm desktop: license key, khoá thiết bị, đăng nhập người dùng và phản hồi có chữ ký. Tất cả quản lý trên một dashboard

Vì sao kẻ crack không làm giả được server?

SDK chỉ tin câu trả lời ký bằng khoá bí mật của ứng dụng. Khoá đó không bao giờ rời server của chúng tôi, nên server giả không ký được và bị từ chối

Trong file chạy của tôi có gì?

Mã ứng dụng và khoá công khai. Không có bí mật nào, vì mỗi thiết bị tự tạo cặp khoá riêng ở lần chạy đầu

Có chạy được khi offline không?

Có. Mọi gói đều có token offline có chữ ký dùng được 7 ngày, ứng dụng tự kiểm tra tại máy. Premium cho bạn chọn bao lâu. License đã thu hồi vẫn có thể chạy offline trong khoảng đó, trừ khi Chế độ chỉ online đang bật

Hỗ trợ những ngôn ngữ nào?

Hiện có JavaScript và TypeScript. Tiếp theo là C++, C# và Python, cùng một giao thức công khai

Gói Basic có miễn phí thật không?

Có. Không giới hạn thời gian, không cần thẻ. Cần nhiều hơn thì lên Premium

Liên hệ