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_idStringID request
2request_timeDatetimeThời gian request. Format: YYYY-MM-DD H:m:s
3master_merchant_codeString(50)Mã master merchant
4sub_merchant_codeString(50)Mã sub merchant
5operationStringLoại webhook: PAYMENT_TRANS hoặc REFUND_TRANS
6payment_resultObjectKết quả thanh toán
7token_resultObjectThô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_codeIntegerTrạng thái thanh toán
2result_messageStringMessage kết quả
3orderObjectThông tin đơn hàng
4transactionsArray of ObjectDanh 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ả
1idIntegerMã đơn hàng Baokim
2mrc_order_idStringMã đơn hàng merchant (NULL nếu thanh toán từ VA tĩnh)
3total_amountIntegerSố tiền đơn hàng
4payment_methodIntegerPhươ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
5statusIntegerTrạng thái: 1 = Thành công, 6 = Chờ TT trả trước, 9 = Đã hoàn, 13 = Thất bại
6customer_infoObjectThông tin khách hàng
7completed_atDatetimeThời gian thành công
8created_atDatetimeThời gian tạo
9updated_atDatetimeThờ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ả
1codeStringMã khách hàng
2nameStringTên khách hàng
3emailStringEmail khách hàng
4phoneStringSĐT khách hàng
5addressStringĐịa chỉ khách hàng
6genderIntegerGiới tính: 1 = Male, 2 = Female
7typeIntegerLoạ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ả
1idIntegerMã giao dịch Baokim
2typeIntegerLoại giao dịch: 1 = Thanh toán, 2 = Hoàn tiền
3payment_methodIntegerPhươ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_feeIntegerPhí sub merchant chịu
5master_merchant_feeIntegerPhí master merchant chịu
6master_merchant_modelIntegerMô hình master merchant
7user_feeIntegerPhí user chịu
8total_amountIntegerTổng tiền khách hàng thanh toán sau phí
9amountIntegerSố tiền biến động số dư sub merchant
10descriptionStringNội dung giao dịch
11statusIntegerTrạng thái: 0 = Khởi tạo, 1 = Thành công, 2 = Thất bại, 3 = Pending
12bnplObjectThông tin BNPL (nếu là giao dịch BNPL)
13installmentObjectThông tin trả góp (nếu là giao dịch trả góp)
14completed_atDatetimeThời gian thành công
15created_atDatetimeThời gian tạo đơn hàng
16updated_atDatetimeThờ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_monthIntegerSố tiền cần thanh toán từng tháng (VNĐ)
2paylater_amountIntegerSố tiền trả sau (VNĐ)
3down_paymentIntegerSố tiền trả trước (VNĐ)
4providerStringMã 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_brandStringThương hiệu thẻ sử dụng (Visa, MasterCard, JCB)
2periodIntegerKỳ hạn trả góp (số tháng)
3payment_per_periodIntegerSố 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_codeIntegerTrạng thái tạo token
2result_messageStringMessage
3source_typeStringLoại nguồn: ACCOUNT hoặc CARD
4token_infoObjectThông tin token

Thông tin token (token_info)

STTTham sốKiểu dữ liệuBắt buộcMô tả
1tokenStringChuỗi token lưu trên Baokim
2expired_atDatetimeThời gian hết hạn token
3statusIntegerTrạng thái token: 1 = Active, 0 = Deactive
4bank_nameStringTên đầy đủ ngân hàng phát hành
5holder_nameStringTên chủ thẻ/tài khoản
6issue_dateStringNgày hết hạn thẻ/tài khoản
7numberStringSố thẻ (mask) hoặc số tài khoản
8bank_short_nameStringTê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 trả lại cho Baokim)

Bảng tham số chính

STTTham sốKiểu dữ liệuBắt buộcMô tả
1codeInteger0 = Thành công, khác 0 = Baokim sẽ gửi lại webhook
2messageStringNội dung phản hồi
3dataObjectDữ liệu đính kèm (nếu có)

Ví dụ Response thành công

{
"code": 0,
"message": "Thành công",
"data": {}
}