Skip to content

Tạo giao dịch ​

Mở một giao dịch FaceAuthen và trả về JWT token mà Mobile SDK dùng để xác thực. Nó cũng cố định level challenge, các sanity option mà bước xác minh sẽ chạy, và liệu flash liveness có bắt buộc hay không.

Endpoint ​

http
POST /v1/create_transaction
Content-Type: application/json
json
{
  "user_id": "user_00000001",
  "ref_id": "ref_00000001",
  "level": 0,
  "sanity_options": {
    "mask_check": true,
    "glasses_check": false
  },
  "enable_flash_liveness": false
}

Tham số:

Tham sốKiểuBắt buộcMặc địnhMô tả
user_idstringCó—User ID.
ref_idstringCó—ID tham chiếu giao dịch.
levelintegerKhông0Cấp độ challenge. Được kiểm tra theo cấu hình challenge của tenant — không được lớn hơn số cấp độ verdict đã cấu hình. Cấp độ càng cao yêu cầu xác minh khuôn mặt càng nghiêm ngặt.
sanity_optionsobjectKhông—Các tùy chọn bật/tắt theo từng lệnh gọi, chọn những sanity check nào bước xác minh sẽ chạy. Các key được lọc theo allow-list của server; key không có trong danh sách sẽ bị bỏ qua.
enable_flash_livenessbooleanKhôngfalseKhi là true và tenant đã cấu hình các màu flash-liveness, server tạo một chuỗi màu xáo trộn và lưu nó vào giao dịch cho bước xác minh. Bị bỏ qua âm thầm khi tenant chưa cấu hình màu nào.

Các key của sanity_options ​

Các key được cho phép, mỗi key là một boolean:

TrườngKiểuMô tả
image_typeboolKiểm tra ảnh đầu vào có đúng loại cho luồng này không.
occlusion_checkboolKiểm tra khuôn mặt không bị che khuất.
eyes_checkboolKiểm tra mắt đang mở và có thể nhìn thấy.
mask_checkboolKiểm tra khẩu trang trên mặt.
glasses_checkboolKiểm tra kính đeo mắt.
light_qualityboolKiểm tra chất lượng ánh sáng.
deepfake_checkboolKiểm tra khuôn mặt tổng hợp hoặc được tạo ra.
supported_selfieboolKiểm tra việc chụp selfie qua một bề mặt khác.
nakedboolKiểm tra nội dung khỏa thân.
tattooboolKiểm tra hình xăm.

Header:

HeaderBắt buộcMô tả
App-IdKhôngApp-Id mà giao dịch được giới hạn phạm vi theo đó; chọn cấu hình riêng của app cho challenge và flash liveness. Mặc định là default nếu bỏ qua.

Trả về: CreateTransactionResponse

INFO

Các key sanity_options không được nhận diện sẽ bị bỏ qua âm thầm thay vì bị từ chối. Một lỗi gõ sai nghĩa là kiểm tra bạn muốn chạy đơn giản là không bao giờ chạy — hãy đối chiếu với allow-list ở trên thay vì giả định một key gõ sai sẽ báo lỗi.

Ví dụ request ​

bash
curl --location '<BASE_URL>/v1/create_transaction' \
  -H 'Authorization: ATV <ACCESS_ID>:<SIGNATURE>' \
  --header 'X-TV-Timestamp: <TIMESTAMP>' \
  --header 'App-Id: <APP_ID>' \
  --header 'Content-Type: application/json' \
  --data '{
    "user_id": "user_00000001",
    "ref_id": "ref_00000001",
    "level": 0,
    "sanity_options": {
      "mask_check": true,
      "glasses_check": false
    },
    "enable_flash_liveness": false
  }'

Response ​

json
{
  "success": true,
  "code": 0,
  "message": "Success",
  "data": {
    "request_id": "f48085e4-3ae4-40bb-b0e1-9b2c72575bc1",
    "transaction": {
      "id": "85712834-558f-4d9b-81bd-a2ab3b9a3aad",
      "ref_id": "ref_00000001",
      "user_id": "user_00000001",
      "status": "NOT_VERIFIED",
      "token": "<JWT_TOKEN>",
      "level": 0
    }
  },
  "errors": []
}
TrườngKiểuMô tả
successbooleanCuộc gọi API có thành công hay không.
codeintegerResponse code — 0 khi thành công.
messagestringThông báo response.
data.request_idstringRequest ID (UUID) để theo dõi.
data.transaction.idstringTransaction ID (UUID).
data.transaction.ref_idstringID tham chiếu được cung cấp trong request.
data.transaction.user_idstringUser ID được cung cấp trong request.
data.transaction.statusstringTrạng thái giao dịch, ví dụ NOT_VERIFIED.
data.transaction.tokenstringJWT token cho giao dịch.
data.transaction.levelintegerCấp độ challenge của giao dịch.
errors[].codestringĐịnh danh mã lỗi.
errors[].messagestringThông báo lỗi.
errors[].detailobjectChi tiết lỗi bổ sung, có thể bao gồm tên trường.

HTTP status luôn là 200 bất cứ khi nào request được xử lý, dù thành công hay không.

Lưu ý giao dịch nằm lồng trong data.transaction ở đây, khác với các endpoint create của eKYC và NFC vốn trả về nó phẳng ngay trong data.

Response lỗi ​

json
{
  "success": false,
  "code": 4001000,
  "message": "Input parameter violates a constraint.",
  "data": {
    "request_id": "f48085e4-3ae4-40bb-b0e1-9b2c72575bc1"
  },
  "errors": [
    {
      "code": "invalid_parameter_exception",
      "message": "Input parameter violates a constraint.",
      "detail": {
        "reason": "Invalid challenge level."
      }
    }
  ]
}

Lỗi ​

MãThông báo
2001010Không tìm thấy Access ID trong hệ thống.
2001020Lock giao dịch thất bại.
2001021Request giao dịch không hợp lệ.
2002206Hồ sơ người dùng đã bị khóa.
401100Hành động không được phép. Bạn không có quyền thực hiện hành động này.
4001000Tham số đầu vào vi phạm một ràng buộc.
4001001Header X-TV-Timestamp đã hết hạn. Vui lòng cung cấp một timestamp mới hơn.
4041002Không tìm thấy hồ sơ của người dùng.
5001000Xảy ra lỗi không mong đợi trong quá trình xử lý request.
MãMô tả
access_id_not_foundKhông tìm thấy Access ID trong hệ thống.
transaction_lock_failedLock giao dịch thất bại.
transaction_invalid_requestRequest giao dịch không hợp lệ.
access_denied_exceptionHành động không được phép. Bạn không có quyền thực hiện hành động này.
user_profile_not_found_exceptionKhông tìm thấy hồ sơ của người dùng.
user_profile_lockedHồ sơ người dùng đã bị khóa.
invalid_parameter_exceptionTham số đầu vào vi phạm một ràng buộc.
request_time_too_skewedHeader X-TV-Timestamp đã hết hạn. Vui lòng cung cấp một timestamp mới hơn.
internal_server_errorXảy ra lỗi không mong đợi trong quá trình xử lý request.

Một 4041002 nghĩa là chưa có hồ sơ nào tồn tại — hãy gọi Đăng ký khuôn mặt trước. Một 2002206 nghĩa là hồ sơ đã bị khóa; xem Mở khóa hồ sơ.

Bước tiếp theo ​

Developers