Dùng sale callback để gán doanh số từ cửa hàng cho lượt nhấp liên kết, và “Custom (API)” để gửi dữ liệu trực tiếp từ công cụ của bạn lên trang.
LinkHarbor cũng nhận dữ liệu từ bên ngoài. Với hai trường hợp có các endpoint riêng với secret riêng – bạn không cần khóa API cho chúng: sale callback báo doanh số từ cửa hàng, để bạn thấy trong thống kê liên kết nào mang lại doanh thu. Tích hợp “Custom (API)” đưa dữ liệu trực tiếp từ công cụ của bạn lên trang dưới dạng widget và có thể kích hoạt thông báo đẩy.
Sale callback: gán doanh số
Click ID (lt_click_id), việc gán và báo cáo phối hợp với nhau thế nào được giải thích trong Gán chuyển đổi và doanh số; ở đây bạn tìm thấy mọi trường và phản hồi dành cho nhà phát triển. Tóm lại: khi LinkHarbor chuyển hướng một lượt nhấp được đếm đến đích http hoặc https, nó gắn tham số lt_click_id; cửa hàng của bạn ghi nhớ và gửi lại sau khi mua.
Tạo mã bí mật callback
- Mở “Callback & API”
- Trong thẻ “Mã bí mật callback”, nhấp “+ Tạo mã bí mật mới”
- Nếu muốn, đặt tên, ví dụ “Callback cửa hàng”, rồi nhấp “Tạo mã bí mật”
- Sao chép mã bí mật ngay – nó chỉ hiển thị một lần
- Ai
- Chủ sở hữu và quản trị viên, từ gói Creator Pro. Ở Creator Free ghi “Mã bí mật callback có từ gói Creator Pro.”
- Bao nhiêu
- Tối đa 5 mã bí mật cho mỗi không gian làm việc, ví dụ mỗi cửa hàng một mã.
- “Chỉnh sửa”
- Đổi tên và đặt trạng thái thành “Hoạt động” hoặc “Không hoạt động”. Với mã bí mật không hoạt động, API từ chối callback.
- “↺ Xoay vòng”
- Tạo mã bí mật mới; mã cũ ngừng hoạt động ngay lập tức.
- “Callback gần nhất:”
- Cho biết lần cuối mã bí mật được dùng thành công.
Gửi callback
curl -X POST https://dock.at-harbor.com/v1/callbacks/sale \
-H "Content-Type: application/json" \
-H "X-Callback-Secret: $LH_CALLBACK_SECRET" \
-d '{
"click_id": "3f1c2a9e-8d4b-4a51-9f0e-6b7c1d2e3f40",
"order_id": "A-10023",
"amount": "49.90",
"currency": "EUR",
"occurred_at": "2026-11-01T10:15:00Z"
}'
# → {"ok":true,"conversion_id":123} | Trường | Bắt buộc | Ý nghĩa |
|---|---|---|
| click_id | Có | Giá trị của lt_click_id (10–36 ký tự) |
| order_id | Có | Mã đơn hàng của bạn (1–128 ký tự); mỗi mã đơn hàng chỉ được tính một lần trong mỗi không gian làm việc |
| amount | Có | Số tiền dạng số thập phân, ví dụ "49.90"; không có giá trị âm |
| currency | Có | Tiền tệ dạng mã ba chữ cái, ví dụ EUR; API tự chuyển chữ thường |
| occurred_at | Không | Thời điểm mua (ISO 8601) |
| amount_base_minor, base_currency, fx_rate | Không | Số tiền đã quy đổi theo đơn vị nhỏ nhất, tiền tệ cơ sở và tỷ giá, nếu bạn bán bằng nhiều loại tiền tệ |
| meta | Không | Dữ liệu bổ sung của riêng bạn dạng object phẳng: tối đa 50 khóa, mỗi khóa 1–64 ký tự; giá trị là văn bản (tối đa 500 ký tự), một số, true/false hoặc null; object lồng nhau và danh sách bị từ chối |
| workspace_id | Không | ID không gian làm việc của bạn; có nó, API báo click_id không xác định là 404 thay vì 403 |
| Phản hồi | Ý nghĩa |
|---|---|
| 200 {"ok":true,"conversion_id":…} | Đã lưu doanh số – hoặc order_id này đã được lưu từ trước (khi đó là ID của chuyển đổi hiện có) |
| 403 forbidden | Sai mã bí mật hoặc chữ ký, hoặc click_id không xác định (khi không có workspace_id) |
| 403 secret_inactive | Mã bí mật đang ở trạng thái “Không hoạt động” |
| 404 not_found | click_id không xác định (chỉ khi có workspace_id và mã bí mật hợp lệ) |
| 413 request_too_large | Phần thân lớn hơn 1 MB |
| 422 validation_failed | Thiếu một trường hoặc trường không hợp lệ, ví dụ một giá trị trong meta quá dài hoặc lồng nhau |
| 429 rate_limited | Hơn 120 callback mỗi phút từ địa chỉ IP của bạn |
Chữ ký tùy chọn
Ngoài mã bí mật, bạn có thể gửi header X-Callback-Signature. Header chứa sha256= và chữ ký HMAC-SHA256 của phần thân thô dạng hex. Khóa không phải chính mã bí mật mà là hash SHA-256 của nó ở dạng nhị phân. Nếu bạn gửi header, nó phải đúng – nếu không callback bị từ chối.
<?php
$body = json_encode($payload);
$key = hash('sha256', getenv('LH_CALLBACK_SECRET'), true); // hash nhị phân của secret
$sig = 'sha256=' . hash_hmac('sha256', $body, $key);
// Header: X-Callback-Secret và X-Callback-Signature: $sig, phần thân: $body Xem doanh số ở đâu
Doanh số được báo về xuất hiện dưới dạng chuyển đổi trong thống kê, xem Gán chuyển đổi và doanh số. Qua API, bạn đọc chúng bằng read:stats dưới /v1/stats/…/conversions/breakdown.
Custom (API): dữ liệu trực tiếp của riêng bạn
Với tích hợp “Custom (API)”, mọi chương trình gửi được yêu cầu HTTP – plugin máy chủ game, bot, script cron – đều có thể gửi dữ liệu đến LinkHarbor. Dữ liệu trở thành widget trực tiếp trên trang của bạn, và quy tắc thông báo đẩy có thể báo cho người theo dõi.
Kết nối
- Mở “Tích hợp” trong không gian làm việc
- Chọn “Custom (API)” và nhập tên
- Sau khi kết nối, hộp thoại hiển thị “URL ingest” và “Secret” (với “Hiện secret”)
- Lưu cả hai trong công cụ của bạn
Tích hợp có từ gói Creator Pro. Chỉ chủ sở hữu và quản trị viên mới thấy URL ingest và secret, kể cả sau này trong trang chi tiết của tích hợp. Ngắt kết nối rồi kết nối lại sẽ tạo secret mới. Cách kết nối tích hợp nói chung được giải thích trong Kết nối tích hợp.
Gửi dữ liệu
curl -X POST "$INGEST_URL" \
-H "Authorization: Bearer $INGEST_SECRET" \
-H "Content-Type: application/json" \
-d '{
"event": "player.joined",
"event_id": "join-2026-11-01T20:01:02Z-steve",
"data": { "player": "Steve" },
"state": {
"type": "game_server",
"name": "Survival SMP",
"online": true,
"players_online": 3,
"players_max": 20
}
}'
# → {"ok":true,"event_id":4711,"duplicate":false,"event_type":"player.joined"} - event
- Tên sự kiện tự do, ví dụ player.joined. Tên được chuyển thành chữ thường và là tên mà quy tắc thông báo đẩy phản ứng theo. Không có event, sự kiện được gọi là state.updated.
- event_id
- Khóa tùy chọn ngăn xử lý hai lần. Nếu cùng event_id được gửi lại, LinkHarbor phản hồi duplicate: true và không làm gì.
- data
- Giá trị cho các phần giữ chỗ trong văn bản thông báo đẩy, ví dụ {player}. Tối đa 40 khóa, chỉ giá trị đơn giản.
- state
- Trạng thái đầy đủ của widget. Nó thay thế hoàn toàn trạng thái trước. type là game_server (thẻ máy chủ game) hoặc status (thẻ trạng thái).
Thay vì Authorization: Bearer, bạn cũng có thể gửi secret trong header X-LinkHarbor-Secret. Cho phép 120 lệnh gọi mỗi phút cho mỗi địa chỉ IP. Nếu muốn, bạn ký phần thân: header X-LinkHarbor-Signature chứa sha256= và chữ ký HMAC-SHA256 của phần thân thô với secret làm khóa. Nếu bạn gửi nó, nó phải đúng.
| Phản hồi | Ý nghĩa |
|---|---|
| 200 {"ok":true,…} | Đã lưu sự kiện, với duplicate: true cho event_id đã biết |
| 400 invalid_json | Phần thân không phải object JSON |
| 401 invalid_secret | Sai secret hoặc URL ingest không xác định |
| 401 signature_invalid | X-LinkHarbor-Signature không khớp với phần thân |
| 413 request_too_large | Phần thân lớn hơn 64 KB |
| 422 validation_failed | Phần thân không có event lẫn state |
| 429 rate_limited | Hơn 120 lệnh gọi mỗi phút từ địa chỉ IP của bạn |
Có thể bạn cũng thấy hữu ích
Không tìm thấy?
Hãy cho chúng tôi biết bạn cần gì, đội hỗ trợ sẽ trực tiếp giúp bạn.