Skip to content

Tạo giao dịch ​

Tạo một giao dịch và trả về khóa challenge (challenge key) dùng để tạo một OTP nâng cao (advance OTP). Server cũng push khóa challenge đến thiết bị của người dùng qua Firebase.

Endpoint ​

http
POST /api/v1/saas-sotp/create-transaction
Content-Type: application/json
json
{
  "partner_id": "{{partner_id}}",
  "partner_key": "{{partner_key}}",
  "token": "{{token}}",
  "app_id": "{{app_id}}",
  "transaction_id": "{{transaction_id}}",
  "transaction_desc": "{{transaction_desc}}",
  "transaction_amount": "{{transaction_amount}}",
  "transaction_date": "{{transaction_date}}",
  "receiver_account": "{{receiver_account}}",
  "sender_account": "{{sender_account}}",
  "currency": "VND",
  "type": "{{type}}",
  "transaction_metadata": "{\"test\":\"abc\"}"
}

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ó—Tên app dùng để tạo giao dịch.
transaction_idstringCó—ID giao dịch duy nhất phía partner.
transaction_descstringCó—Mô tả giao dịch.
transaction_amountstringCó—Số tiền giao dịch.
transaction_datestringCó—Ngày giao dịch được tạo.
receiver_accountstringCó—ID tài khoản người nhận.
sender_accountstringCó—ID tài khoản người gửi.
currencystringCó—Loại tiền tệ dùng để thực hiện giao dịch.
typestringCó—Loại giao dịch, được định nghĩa phía partner.
transaction_metadatastringKhông—Thông tin giao dịch bổ sung, dưới dạng chuỗi JSON.

user_id và transaction_id tạo thành khóa tổng hợp (composite key) định danh giao dịch.

Trả về: CreateTransactionResponse

Ví dụ request ​

bash
curl --location --request POST '<BASE_URL>/saas-sotp/create-transaction' \
  --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}}",
    "transaction_desc": "{{transaction_desc}}",
    "transaction_amount": "{{transaction_amount}}",
    "transaction_date": "{{transaction_date}}",
    "receiver_account": "{{receiver_account}}",
    "sender_account": "{{sender_account}}",
    "currency": "VND",
    "type": "{{type}}",
    "transaction_metadata": "{\"test\":\"abc\"}"
  }'

Response ​

json
{
  "success": true,
  "code": 1,
  "message": "Success",
  "challenge_key": "fake_challenge_key"
}
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.
challenge_keystringKhóa challenge dùng để tạo OTP nâng cao.

challenge_key được trả về ở cấp cao nhất (top level), không nằm lồng trong data.

INFO

Khóa challenge được push đến thiết bị qua Firebase, đồng thời cũng được trả về ở đây. Chỉ trả nó về cho app trong response của riêng bạn khi push notification bị tắt cho người dùng đó — nếu không, hãy để push chuyển nó đi.

Lỗi ​

MãMô tả
3Parameter invalid
103Thông tin Partner không chính xác — Partner details are incorrect.
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.
190201Không thể tạo transaction hoặc transaction_id đã tồn tại — Cannot create the transaction, or the id already exists.

190201 thường có nghĩa là transaction_id bị trùng. Hãy tạo một ID mới thay vì thử lại với cùng giá trị cũ.

Bước tiếp theo ​

  • Xác minh OTP — xác minh OTP nâng cao được tạo từ khóa challenge này
  • Lấy giao dịch — đọc lại khóa challenge nếu push bị lỡ

Developers