Chuyển tới nội dung chính

Webhook

Quy trình​

Mô tả:

  • Webhook là phương thức thông báo kết quả giao dịch cho Merchant qua yêu cầu HTTP POST.
  • URL API webhook được cấu hình khi Merchant khai báo thông tin với Baokim.
  • Nếu Merchant nhận được webhook và xử lý thành công, vui lòng response với code = 0.
  • Nếu Merchant response với code khác 0, Baokim sẽ gửi lại webhook trong vòng 10 lần, mỗi lần cách nhau 5 phút.

Các bước kiểm tra và xử lý khi nhận webhook

  1. Kiểm tra tính toàn vẹn dữ liệu qua Signature.
  2. Kiểm tra trạng thái đơn hàng/giao dịch, số tiền thanh toán.
  3. Chủ động kiểm tra và tránh ghi nhận duplicate giao dịch khi nhận webhook nhiều lần.

Thông tin API​

Method: POST

URL: (URL do Merchant cấu hình với Baokim)

Header yêu cầu:

HeaderMô tả
SignatureChữ ký số để xác thực tính toàn vẹn dữ liệu

Request​

(Baokim gửi tới Merchant)

Bảng tham số chính​

Tên trườngKiểu dữ liệuBắt buộcMô tả
request_idString✅ID request
request_timeDatetime✅Thời gian request. Format: YYYY-MM-DD HH:mm:ss
merchant_codeString✅Mã định danh merchant
operationString✅Loại thao tác. PAYMENT_TRANS = giao dịch thanh toán
payment_resultObject✅Kết quả thanh toán
token_resultObject❌Thông tin token (NULL nếu không phải thanh toán lưu token)

Thông tin đơn hàng (payment_result)​

TrườngKiểuBắt buộcMô tả
result_codeinteger✅Mã kết quả xử lý giao dịch. 200 = thành công
result_messagestring✅Mô tả kết quả giao dịch
orderobject✅Thông tin đơn hàng
transactionarray<object>✅Danh sách giao dịch phát sinh từ đơn hàng

Thông tin đơn hàng (payment_result.order)​

TrườngKiểuBắt buộcMô tả
idinteger✅ID đơn hàng trong hệ thống
mrc_order_idstring✅Mã đơn hàng do merchant tạo
total_amountinteger✅Tổng giá trị đơn hàng (VNĐ)
payment_methodinteger✅Phương thức thanh toán
statusinteger✅Trạng thái đơn hàng. 1 = hoàn thành
completed_atstring❌Thời điểm hoàn thành (YYYY-MM-DD HH:mm:ss)
created_atstring✅Thời điểm tạo đơn hàng (YYYY-MM-DD HH:mm:ss)
updated_atstring✅Thời điểm cập nhật gần nhất (YYYY-MM-DD HH:mm:ss)

Thông tin giao dịch (payment_result.transaction)​

TrườngKiểuBắt buộcMô tả
idinteger✅ID giao dịch trong hệ thống
order_idinteger✅ID đơn hàng liên kết
mrc_order_idstring✅Mã đơn hàng do merchant tạo
typeinteger✅Loại giao dịch. 1 = thanh toán
payment_methodinteger✅Phương thức thanh toán
merchant_feeinteger✅Phí do merchant chịu (VNĐ)
user_feeinteger✅Phí do người dùng chịu (VNĐ)
amountinteger✅Số tiền gốc của đơn hàng (VNĐ)
total_amountinteger✅Tổng tiền thực tế người dùng thanh toán = amount + user_fee (VNĐ)
descriptionstring / null❌Mô tả giao dịch
statusinteger✅Trạng thái giao dịch. 1 = hoàn thành
bnplobject / null❌Thông tin thanh toán mua trước trả sau (nếu có)
installmentobject / null❌Thông tin thanh toán trả góp (nếu có)
completed_atstring❌Thời điểm hoàn thành giao dịch (YYYY-MM-DD HH:mm:ss)
created_atstring✅Thời điểm tạo giao dịch (YYYY-MM-DD HH:mm:ss)
updated_atstring✅Thời điểm cập nhật gần nhất (YYYY-MM-DD HH:mm:ss)

Thông tin token (token_result)​

Tên trườngKiểu dữ liệuBắt buộcMô tả
tokenString❌Chuỗi token thẻ lưu trên Baokim
card.bank_nameString❌Tên đầy đủ ngân hàng phát hành
card.holder_nameString❌Tên chủ thẻ
card.issue_dateString❌Ngày hết hạn thẻ
card.numberString❌Số thẻ dạng mask (VD: 970407xxxxxx1234)
card.bank_short_nameString❌Tên viết tắt ngân hàng phát hành

Ví dụ Request​

{
"request_id": "B2B6A278C9815BD7EQ4AVPVZCI",
"request_time": "2026-06-09 10:46:32",
"merchant_code": "123workvn",
"operation": "PAYMENT_TRANS",
"payment_result": {
"result_code": 200,
"result_message": "Payment successful",
"order": {
"id": 991186,
"mrc_order_id": "MERCHANT_DEPOSIT_48_1780976739_UXWUUAIE",
"total_amount": 10000,
"payment_method": 1,
"status": 1,
"completed_at": "2026-06-09 10:46:32",
"created_at": "2026-06-09 10:45:41",
"updated_at": "2026-06-09 10:46:32"
},
"transaction": [
{
"id": 940826,
"order_id": 991186,
"mrc_order_id": "MERCHANT_DEPOSIT_48_1780976739_UXWUUAIE",
"type": 1,
"payment_method": 1,
"merchant_fee": 0,
"user_fee": 330,
"total_amount": 10330,
"amount": 10000,
"description": null,
"status": 1,
"bnpl": null,
"installment": null,
"completed_at": "2026-06-09 10:46:32",
"created_at": "2026-06-09 10:45:45",
"updated_at": "2026-06-09 10:46:32"
}
]
},
"token_result": null
}

Response​

(Merchant phản hồi lại Baokim)

Bảng tham số chính​

Tên trườngKiểu dữ liệuBắt buộcMô tả
codeInteger✅Mã kết quả. 0 = Merchant xử lý webhook thành công
messageString✅Thông báo kết quả xử lý
dataObject❌Dữ liệu trả về (nếu có)

Ví dụ Response​

{
"code": 200,
"message": "Successfully",
"data": null
}