Skip to main content

Bắt đầu ngay

Giới thiệu

Để triển khai tích hợp với hệ thống Tingee, đối tác bắt buộc phải sử dụng Client IDSecret TokenSinh chữ ký nhằm xác thực và đảm bảo tính hợp lệ cho mỗi yêu cầu API.
Tài liệu này hướng dẫn chi tiết cách truy xuất các thông tin trên cho từng tài khoản đối tác.


Hướng dẫn lấy Client ID & Secret Token

  • Bước 1. Truy cập vào hệ thống Tingee và đăng ký tài khoản của Đối tác.

Nếu đã có tài khoản, vui lòng đăng nhập tại màn hình đăng nhập.

  • Bước 2. Tại giao diện màn hình chính, trỏ vào avatar của tài khoản, click vào mục Developers

  • Bước 3. Tại giao diện trang Developers, Đối tác sẽ thấy được Client ID và Secret Token của mình


Sinh chữ ký Signature

Mỗi API request gửi đến Tingee cần kèm theo chữ ký số (signature) để đảm bảo tính toàn vẹn và xác thực danh tính đối tác.

Công thức sinh chữ ký

x-signature = HMAC_SHA512( x-request-timestamp + ":" + requestBody, secretToken )

Trong đó:

  • x-request-timestamp — Thời điểm gửi request, format yyyyMMddHHmmssSSS (múi giờ UTC+7)
  • requestBody — Chuỗi JSON của request body, đã qua JSON.stringify() (minified, không có khoảng trắng thừa)
  • secretTokenSecret Token lấy từ trang Developers của tài khoản đối tác

Headers bắt buộc

HeaderBắt buộcVí dụ
x-client-idMã định danh của đối tác do TINGEE cung cấp
Xem cách lấy tại đây
x-request-timestamp20260101101122333
x-signatureChữ ký SHA-512
Content-Typeapplication/json

Code mẫu

const crypto = require('crypto');

function generateSignature(timestamp, requestBody, secretToken) {
const message = `${timestamp}:${requestBody}`;
return crypto
.createHmac('sha512', secretToken)
.update(message, 'utf8')
.digest('hex');
}

// Ví dụ sử dụng
const timestamp = new Date()
.toISOString()
.replace(/[-:T.Z]/g, '')
.slice(0, 17); // "yyyyMMddHHmmssSSS"

const body = JSON.stringify({ clientId: 'abc123', amount: 50000 });
const signature = generateSignature(timestamp, body, 'YOUR_SECRET_TOKEN');

// Gắn vào headers khi gọi API
const headers = {
'Content-Type': 'application/json',
'x-client-id': 'YOUR_CLIENT_ID',
'x-request-timestamp': timestamp,
'x-signature': signature,
};
Lưu ý quan trọng
  • Không chia sẻ secretToken trong mã nguồn hoặc repository công khai.
  • Timestamp không được vượt quá thời điểm hiện tạikhông được cũ hơn 10 phút so với thời gian máy chủ Tingee (UTC+7).
  • requestBody phải là kết quả của JSON.stringify(body) — chuỗi JSON minified, không thêm khoảng trắng hay format lại, để đảm bảo chữ ký khớp chính xác.

Cấu hình Webhook

  • Tingee sẽ gửi các Requests HTTP (method POST) đến Webhook url của Đối tác khi mà có phát sinh giao dịch với các tài khoản của Đối tác liên kết trên Tingee.

  • Đối tác cấu hình webhook url của mình tại mục Webhook trong giao diện trang Developers.

  • Đối tác có thể cấu hình nhiều webhook url tùy theo nhu cầu

  • Sẽ có 3 Loại áp dụng mà Đối tác có thể cấu hình với webhook url

    Loại áp dụng: Tất cả

    Tingee sẽ gửi webhook sang cho Đối tác khi có phát sinh giao dịch với mọi tài khoản của Đối tác

    Loại áp dụng: Số tài khoản ảo

    Tingee sẽ gửi webhook sang cho Đối tác khi có phát sinh giao dịch với các tài khoản mà Đối tác đã chọn

    Loại áp dụng: Cửa hàng

    Tingee sẽ gửi webhook sang cho Đối tác khi có phát sinh giao dịch với các cửa hàng mà Đối tác đã chọn

  • Đối tác có thể chỉnh sửa Loại áp dụng, cập nhật URL hoặc xóa cấu hình Webhook sau khi đã lưu.


Nhật ký Webhook

  • Đối tác có thể xem được lịch sử gửi Webhook (Trạng thái webhook, Số lần retry, Status code...) tại mục Nhật ký Webhook trên giao diện trang Developers