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

Webhook thanh toán

Quy trình​

Mô tả:

  • Sau khi nhận được kết quả thanh toán từ Ngân hàng hợp tác, Baokim sẽ gửi webhook cho merchant.
  • Nếu Merchant xử lý thành công, vui lòng response với code = 0.
  • Nếu response code khác 0, Baokim sẽ gửi lại webhook 10 lần, mỗi lần cách nhau 5 phút.

Thông tin API​

Method: POST

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

Header yêu cầu:

HeaderKiểu dữ liệuMô tả
SignaturestringChữ 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​

STTTham sốKiểu dữ liệuBắt buộcMô tả
1request_idString✅ID request
2request_timeDatetime✅Thời gian request. Format: YYYY-MM-DD H:m:s
3master_merchant_codeString(50)✅Mã master merchant
4sub_merchant_codeString(50)✅Mã sub merchant
5operationString✅Loại webhook: PAYMENT_TRANS hoặc REFUND_TRANS
6payment_resultObject✅Kết quả thanh toán
7token_resultObject❌Thông tin token (NULL nếu không phải thanh toán lưu token)

Thông tin payment_result​

STTTham sốKiểu dữ liệuBắt buộcMô tả
1result_codeInteger✅Trạng thái thanh toán
2result_messageString✅Message kết quả
3orderObject✅Thông tin đơn hàng
4transactionsArray of Object✅Danh sách giao dịch

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

STTTham sốKiểu dữ liệuBắt buộcMô tả
1idInteger✅Mã đơn hàng Baokim
2mrc_order_idString✅Mã đơn hàng merchant (NULL nếu thanh toán từ VA tĩnh)
3total_amountInteger✅Số tiền đơn hàng
4payment_methodInteger✅Phương thức thanh toán: 1 = VA, 2 = BNPL, 3 = Thẻ tín dụng, 4 = Trả góp thẻ, 5 = ATM, 6 = VNPayQR, 22 = Auto debit
5statusInteger✅Trạng thái: 1 = Thành công, 6 = Chờ TT trả trước, 9 = Đã hoàn, 13 = Thất bại
6customer_infoObject❌Thông tin khách hàng
7completed_atDatetime✅Thời gian thành công
8created_atDatetime✅Thời gian tạo
9updated_atDatetime✅Thời gian cập nhật cuối

Thông tin khách hàng (payment_result.order.customer_info)​

STTTham sốKiểu dữ liệuBắt buộcMô tả
1codeString❌Mã khách hàng
2nameString❌Tên khách hàng
3emailString❌Email khách hàng
4phoneString❌SĐT khách hàng
5addressString❌Địa chỉ khách hàng
6genderInteger❌Giới tính: 1 = Male, 2 = Female
7typeInteger❌Loại khách hàng: 1 = Cá nhân, 2 = Doanh nghiệp

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

STTTham sốKiểu dữ liệuBắt buộcMô tả
1idInteger✅Mã giao dịch Baokim
2typeInteger✅Loại giao dịch: 1 = Thanh toán, 2 = Hoàn tiền
3payment_methodInteger✅Phương thức thanh toán: 1 = VA, 2 = BNPL, 3 = Thẻ tín dụng, 4 = Trả góp thẻ, 5 = ATM, 6 = VNPayQR, 22 = Auto debit
4sub_merchant_feeInteger✅Phí sub merchant chịu
5master_merchant_feeInteger✅Phí master merchant chịu
6master_merchant_modelInteger✅Mô hình master merchant
7user_feeInteger✅Phí user chịu
8total_amountInteger✅Tổng tiền khách hàng thanh toán sau phí
9amountInteger✅Số tiền biến động số dư sub merchant
10descriptionString❌Nội dung giao dịch
11statusInteger✅Trạng thái: 0 = Khởi tạo, 1 = Thành công, 2 = Thất bại, 3 = Pending
12bnplObject❌Thông tin BNPL (nếu là giao dịch BNPL)
13installmentObject❌Thông tin trả góp (nếu là giao dịch trả góp)
14completed_atDatetime✅Thời gian thành công
15created_atDatetime✅Thời gian tạo đơn hàng
16updated_atDatetime✅Thời gian cập nhật cuối

Thông tin BNPL (payment_result.transactions.bnpl)​

STTTham sốKiểu dữ liệuBắt buộcMô tả
1payment_per_monthInteger❌Số tiền cần thanh toán từng tháng (VNĐ)
2paylater_amountInteger❌Số tiền trả sau (VNĐ)
3down_paymentInteger❌Số tiền trả trước (VNĐ)
4providerString❌Mã nhà cung cấp

Thông tin trả góp (payment_result.transactions.installment)​

STTTham sốKiểu dữ liệuBắt buộcMô tả
1card_brandString❌Thương hiệu thẻ sử dụng (Visa, MasterCard, JCB)
2periodInteger❌Kỳ hạn trả góp (số tháng)
3payment_per_periodInteger❌Số tiền phải thanh toán theo kỳ (VNĐ)
4bank_codeString(6)❌Mã ngân hàng phát hành thẻ

Thông tin token (token_result)​

STTTham sốKiểu dữ liệuBắt buộcMô tả
1result_codeInteger❌Trạng thái tạo token
2result_messageString❌Message
3source_typeString❌Loại nguồn: ACCOUNT hoặc CARD
4token_infoObject❌Thông tin token

Thông tin token (token_info)​

STTTham sốKiểu dữ liệuBắt buộcMô tả
1tokenString❌Chuỗi token lưu trên Baokim
2expired_atDatetime❌Thời gian hết hạn token
3statusInteger❌Trạng thái token: 1 = Active, 0 = Deactive
4bank_nameString❌Tên đầy đủ ngân hàng phát hành
5holder_nameString❌Tên chủ thẻ/tài khoản
6issue_dateString❌Ngày hết hạn thẻ/tài khoản
7numberString❌Số thẻ (mask) hoặc số tài khoản
8bank_short_nameString❌Tên viết tắt ngân hàng

Ví dụ Request​

{
"request_id": "1e3fe73d3054904a9a4bb",
"request_time": "2025-10-02 08:13:30",
"master_merchant_code": "BAOKIMMASTERMERCHANT",
"operation": "PAYMENT_TRANS",
"sub_merchant_code": "BAOKIMSUBMERCHANT",
"payment_result": {
"result_code": 200,
"result_message": "Payment successful",
"order": {
"id": 4412312,
"mrc_order_id": "BK_021_ANC",
"total_amount": 0,
"payment_method": 22,
"status": 1,
"customer_info": {
"code": "KH001",
"name": "Nguyen Van A",
"email": "[email protected]",
"phone": "0812345678",
"address": "313 Trường Chinh, Khương Mai, Thanh Xuân, Hà Nội",
"gender": 1,
"type": 1
},
"completed_at": "2025-10-02 08:13:30",
"created_at": "2025-10-02 08:13:30",
"updated_at": "2025-10-02 08:13:30"
},
"transactions": [
{
"id": 1163423,
"type": 1,
"payment_method": 22,
"sub_merchant_fee": 3300,
"master_merchant_fee": 1100,
"master_merchant_model": 1,
"user_fee": 0,
"total_amount": 0,
"amount": -3300,
"description": "Thanh toán đơn hàng",
"status": 1,
"bnpl": {
"payment_per_month": null,
"paylater_amount": null,
"down_payment": null,
"provider": null
},
"installment": {
"card_brand": null,
"period": null,
"payment_per_period": null,
"bank_code": null
},
"completed_at": "2025-10-02 08:13:30",
"created_at": "2025-10-02 08:13:30",
"updated_at": "2025-10-02 08:13:30"
}
]
},
"token_result": {
"result_code": 200,
"result_message": "Token create successful",
"source_type": "ACCOUNT",
"token_info": {
"token": "Mq7AwLoHkafPdXYxvYedH8sb6MZ18k",
"expired_at": "2050-10-13 21:16:30",
"status": 1,
"bank_name": "Ngân hàng TMCP Ngoại thương Việt Nam",
"holder_name": "NGUYEN VAN A",
"issue_date": "03/07",
"number": "970407xxxxxx1234",
"bank_short_name": "VCB"
}
}
}

Response​

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

Bảng tham số chính​

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

Ví dụ Response​

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