Tích hợp App với tasks.workfino.com

License Workfino vĩnh viễn + Thời hạn sử dụng do Server 2 quản lý

1. Quy tắc

2. Kiểm tra license khi mở App

App không cần product_public_id. Chỉ gửi License Key. Server 2 sẽ dùng shared secret hỏi Workfino và tự nhận Product ID, tên sản phẩm, họ tên và email chủ key.

POST https://tasks.workfino.com/v1/license/check Content-Type: application/json { "license_key": "WF-...", "device_public_id": "UUID-THIET-BI", "device_fingerprint": "fingerprint-cua-app", "platform": "windows" }

Nếu chưa có thời hạn/hết hạn:

{ "valid": true, "active": false, "task_required": true, "task_grant": "SIGNED-SHORT-LIVED-TOKEN", "renewal_days": 30 }

task_grant giúp tạo task mà không cần gọi Workfino lần thứ hai.

3. Tạo nhiệm vụ

POST /v1/tasks/create Content-Type: application/json {"task_grant":"TOKEN-NHAN-TU-LICENSE-CHECK"}

Response chứa task_url, status_token, mã 6 số và hạn 10 phút. App nên mở task_url bằng trình duyệt mặc định.

4. Trang hướng dẫn nhiệm vụ

Trang /task/{id}?token=... có đồng hồ đếm ngược 10:00, từ khóa Google, mã xác minh và ảnh hướng dẫn từng bước do Admin upload. Khi về 00:00 trang báo hết hạn và cho nút Nhận nhiệm vụ khác.

5. Trang đích

Trong content Workfino, chèn:

<div data-wf-task></div>

Workfino vẫn chặn script tùy ý. Chỉ khi trang có marker này, người dùng thật sự đi từ Google và có task 10 phút đang hoạt động thì widget từ Server 2 mới hiện popup. Lượt xem bình thường không có giao diện nhiệm vụ. Website bên ngoài có quyền chèn JS thì dùng:

<script defer src="https://tasks.workfino.com/task-widget.js"></script>

Sau khi nhập mã 6 số và bấm Bắt đầu làm nhiệm vụ, bộ đếm trên trình duyệt nhảy từng giây nhưng Server 2 chỉ nhận heartbeat theo cụm để tiết kiệm tài nguyên. Chuyển tab/cửa sổ hoặc không cuộn trang thì thời gian dừng.

6. Sau khi hoàn thành

Heartbeat chỉ cộng khi tab đang visible. Khi đủ thời gian, Server 2 ghi đúng một transaction gia hạn vào PostgreSQL rồi xóa task khỏi RAM. App gọi lại /v1/license/check; nếu active=true thì mở ứng dụng.

7. Admin

Admin của tasks.workfino.com là tài khoản riêng, không dùng tài khoản admin Workfino. Lần đầu vào /admin/setup, nhập ADMIN_SETUP_TOKEN để tạo tài khoản. Sau đó quản lý app, số ngày gia hạn, license/người dùng, nhiều nhiệm vụ, trọng số %, các bước và ảnh minh họa.

Lưu ý: Workfino và Server 2 phải dùng cùng shared secret: Workfino đặt WORKFINO_TASK_SERVER_SECRET, Server 2 đặt WORKFINO_TASK_SHARED_SECRET. Chỉ Server 2 có secret đúng mới nhận họ tên/email chủ license.