Skip to content

Đồng bộ thời gian ​

Trả về timestamp hiện tại của server và cấu hình TOTP, để thiết bị có thể phát hiện độ lệch đồng hồ (clock drift). Vì một mã chỉ có hiệu lực trong 15 giây, một đồng hồ thiết bị lệch một phút sẽ khiến mọi lần xác minh thất bại.

Endpoint ​

http
POST /api/v1/saas-sotp/sync-time
Content-Type: application/json
json
{
  "partner_id": "{{partner_id}}",
  "partner_key": "{{partner_key}}",
  "token": "{{token}}",
  "app_id": "{{app_id}}",
  "client_timestamp": "1672204839",
  "period": 15,
  "otp": "123456",
  "previous_otp": "654321"
}

Tham số:

Tham sốKiểuBắt buộcMặc địnhMô tả
partner_idstringCó—Partner ID.
partner_keystringCó—Partner key.
tokenstringCó—Token đăng ký được tạo bởi Đăng ký.
periodintCó—Số giây một OTP còn hiệu lực.
app_idstringKhông—App ID, dùng để tracking.
client_timestampintKhông—Timestamp hiện tại của client.
otpstringKhông—SmartOTP hiện tại.
previous_otpstringKhông—OTP từ khung thời gian (time block) trước đó.

Việc cung cấp otp và previous_otp giúp server tính ra đồng hồ thiết bị đã lệch bao nhiêu, bằng cách xác định các mã đó thực sự thuộc khung thời gian nào.

Trả về: SyncTimeResponse

Ví dụ request ​

bash
curl --location --request POST '<BASE_URL>/saas-sotp/sync-time' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --data-raw '{
    "partner_id": "{{partner_id}}",
    "partner_key": "{{partner_key}}",
    "token": "{{token}}",
    "app_id": "{{app_id}}",
    "client_timestamp": "1672204839",
    "period": 15,
    "otp": "123456",
    "previous_otp": "654321"
  }'

Response ​

json
{
  "success": true,
  "code": 1,
  "message": "Success",
  "data": {
    "timestamp": "1666756646",
    "period": 15,
    "algorithm": "HmacSHA512",
    "length": 6,
    "type": "totp",
    "issuer": "SOTP"
  }
}
TrườngKiểuMô tả
successboolTrạng thái của request.
codeintstatus code — 1 khi thành công.
messagestringThông báo trạng thái hoặc lỗi.
data.timestampintTimestamp của server.
data.periodintSố giây một OTP còn hiệu lực.
data.algorithmstringThuật toán HMAC — HmacSHA512.
data.lengthintSố chữ số của một mã OTP.
data.typestringLoại soft OTP — totp.
data.issuerstringIssuer đã tạo ra OTP.

Lỗi ​

MãMô tả
103Thông tin Partner không chính xác — Partner details are incorrect.
129Token không hợp lệ — Invalid token.
190108Tài khoản chưa hoạt động — Account not activated.
190301Period không chính xác — Incorrect period.
190303Client time không chính xác — Incorrect client time.

190303 là tín hiệu lệch đồng hồ: đồng hồ thiết bị đang cách quá xa so với server. Hãy áp dụng timestamp được trả về như một độ lệch (offset) thay vì yêu cầu người dùng tự chỉnh đồng hồ.

Bước tiếp theo ​

  • Xác minh OTP — thử xác minh lại sau khi đồng hồ đã được đối chiếu
  • Kích hoạt — nơi cùng cấu hình TOTP này được cấp lần đầu

Developers