Skip to content

Xác minh OTP ​

Xác minh một OTP cơ bản (basic) hoặc nâng cao (advance). Cả hai dùng chung một endpoint, được phân biệt bằng otp_type — advance còn yêu cầu thêm transaction_id mà mã đã được gắn với.

Endpoint ​

http
POST /api/v1/saas-sotp/validate-sotp
Content-Type: application/json

OTP cơ bản ​

Xác minh một mã được tạo chỉ từ khóa bí mật của client và thời gian, không có ngữ cảnh giao dịch nào.

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ý.
app_idstringCó—App ID, dùng để tracking.
otpstringCó—OTP được SDK tạo từ key do Kích hoạt trả về.
otp_typestringCó—basic khi xác minh một Soft OTP cơ bản.
bash
curl --location --request POST '<BASE_URL>/saas-sotp/validate-sotp' \
  --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}}",
    "otp": "123456",
    "otp_type": "basic"
  }'

OTP nâng cao ​

Xác minh một mã đã được gắn với một giao dịch thông qua khóa challenge của giao dịch đó.

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ý.
app_idstringCó—App ID, dùng để tracking.
otpstringCó—OTP được SDK tạo từ key do Kích hoạt trả về.
otp_typestringCó—advance khi xác minh một Soft OTP nâng cao.
transaction_idstringCó—ID giao dịch duy nhất phía partner.
bash
curl --location --request POST '<BASE_URL>/saas-sotp/validate-sotp' \
  --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}}",
    "transaction_id": "{{transaction_id}}",
    "otp": "123456",
    "otp_type": "advance"
  }'

WARNING

Hãy dùng advance cho bất kỳ điều gì liên quan đến việc chuyển tiền. Một OTP basic chỉ chứng minh rằng người dùng đang giữ thiết bị — nó không gắn với số tiền hay người nhận, nên một mã bị lấy được trong một hành động có thể dùng để xác thực cho một hành động khác.

Response ​

json
{
  "success": true,
  "code": 1,
  "message": "Success"
}
TrườngKiểuMô tả
successboolTrạng thái của request.
codeintstatus code — 1 nghĩa là OTP hợp lệ.
messagestringThông báo trạng thái hoặc lỗi.

Hãy xác minh giá trị này ở backend của bạn và chuyển nó thành status code riêng của bạn trước khi trả bất kỳ thứ gì về cho ứng dụng.

Lỗi ​

MãMô tả
103Thông tin Partner không chính xác — Partner details are incorrect.
121Yêu cầu vượt giới hạn. Vui lòng thử lại sau ít phút. — Request limit exceeded.
123Yêu cầu vượt giới hạn. Vui lòng thử lại sau ít phút. — Request limit exceeded.
124OTP không hợp lệ — Invalid OTP.
126Có lỗi xảy ra vui lòng thử lại — An error occurred, please retry.
129Token không hợp lệ — Invalid token.
190108Tài khoản chưa hoạt động — Account not activated.
190203Không tìm thấy transaction — Transaction not found. Chỉ áp dụng cho OTP nâng cao.

Nếu người dùng liên tục nhận 124 dù tin rằng mã của mình đúng, nguyên nhân thường là lệch đồng hồ, không phải mã sai — hãy gọi Đồng bộ thời gian.

Bước tiếp theo ​

Developers