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

Webhook thông báo thông tin VCN

Quy trình​

  • Baokim gọi API webhook của MERCHANT để gửi thông báo kết quả tạo VCN kèm theo thông tin VCN đã được mã hoá theo cơ chế mã hoá của Baokim.

  • Trường hợp Đối tác không muốn nhận thẻ VCN, hãy response với code = 1600 để từ chối.

Thông tin API​

URL: Merchant cung cấp

Method: POST

  • Header:

    • Content-Type: Application/json

    • Signature: $signature

Baokim gửi lên Đối tác (Webhook)​

Bảng tham số chính​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1request_idString(100)✅Id duy nhất ứng với mỗi Request từ Baokim gửi sang Merchant
2request_timeString(20)✅Thời gian gửi Request. Format: YYYY-MM-DD H:i:s
3master_merchant_codeString(50)✅Mã định danh duy nhất cho MASTER MERCHANT
4sub_merchant_codeString(50)✅Mã định danh duy nhất cho SUB MERCHANT
5operationString(50)✅CREATE_VCN
6reference_idString(50)✅Mã tham chiếu yêu cầu tạo VCN
7statusNumber✅Trạng thái tạo VCN
3: Thành công
4: Thất bại
8card_dataObject❌Dữ liệu thẻ
NULL nếu trạng thái tạo VCN thất bại
9created_atDateTime✅Thời gian tiếp nhận yêu cầu
10updated_atDateTime✅Thời gian cập nhật yêu cầu

Thông tin card_data​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1vcn_idNumber✅ID của VCN
2card_info_encryptString✅Dữ liệu thẻ VCN đã được mã hoá
3card_statusNumber✅Trạng thái của thẻ VCN
1. Active
4control_typeNumber✅1: accountControl
2: inControlRules
5account_controlObject❌Bắt buộc nếu control_type = 1
6in_control_rulesObject❌Bắt buộc nếu control_type = 2

Thông tin object sau khi giải mã card_data.card_info_encrypt​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1card_numberString✅Số thẻ VCN
2cvcString✅Số CVC của thẻ
3expiryString(7)✅Ngày hết hạn thẻ
4card_holderString✅Tên chủ thẻ

Thông tin card_data.account_control​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1aliasString✅Mã unique gợi nhớ của Control
2card_limitObject❌Thiết lập giới hạn chung cho thẻ - trong suốt vòng đời thẻ
3monthly_limitObject❌Thiết lập giới hạn cho thẻ theo tháng
4daily_limitObject❌Thiết lập giới hạn cho thẻ theo ngày
5weekly_limitObject❌Thiết lập giới hạn cho thẻ theo tuần
6quarterly_limitObject❌Thiết lập giới hạn cho thẻ theo quý
7yearly_limitObject❌Thiết lập giới hạn cho thẻ theo năm
8geographiesObject❌Thiết lập sử dụng thẻ theo khu vực địa lý
9merchant_category_codesObject❌Thiết lập sử dụng thẻ theo MCC
10start_dateString❌Thời gian sử dụng thẻ - Bắt đầu
11end_dateString❌Thời gian sử dụng thẻ - Kết thúc

Thông tin card_data.account_control.card_limit​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1card_amountNumber✅Giá trị giao dịch
2available_balanceNumber❌Số dư khả dụng
readOnly -> Có giá trị thì truyền, MasterCard chỉ dùng để collect thông tin (nếu có), không dùng để validate thông tin
3authorisation_countNumber✅Số lượng giao dịch

Thông tin card_data.account_control.monthly_limit​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1card_amountNumber✅Giá trị giao dịch
2available_balanceNumber❌Số dư khả dụng
readOnly -> Có giá trị thì truyền, MasterCard chỉ dùng để collect thông tin (nếu có), không dùng để validate thông tin
3authorisation_countNumber✅Số lượng giao dịch

Thông tin card_data.account_control.daily_limit​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1card_amountNumber✅Giá trị giao dịch
2available_balanceNumber❌Số dư khả dụng
readOnly -> Có giá trị thì truyền, MasterCard chỉ dùng để collect thông tin (nếu có), không dùng để validate thông tin
3authorisation_countNumber✅Số lượng giao dịch

Thông tin card_data.account_control.weekly_limit​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1card_amountNumber✅Giá trị giao dịch
2available_balanceNumber❌Số dư khả dụng
readOnly -> Có giá trị thì truyền, MasterCard chỉ dùng để collect thông tin (nếu có), không dùng để validate thông tin
3authorisation_countNumber✅Số lượng giao dịch

Thông tin card_data.account_control.quarterly_limit​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1card_amountNumber✅Giá trị giao dịch
2available_balanceNumber❌Số dư khả dụng
readOnly -> Có giá trị thì truyền, MasterCard chỉ dùng để collect thông tin (nếu có), không dùng để validate thông tin
3authorisation_countNumber✅Số lượng giao dịch

Thông tin card_data.account_control.yearly_limit​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1card_amountNumber✅Giá trị giao dịch
2available_balanceNumber❌Số dư khả dụng
readOnly -> Có giá trị thì truyền, MasterCard chỉ dùng để collect thông tin (nếu có), không dùng để validate thông tin
3authorisation_countNumber✅Số lượng giao dịch

Thông tin card_data.account_control.geographies​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1country_codesArray✅Danh sách mã quốc gia - format 3 ký tự
2negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin card_data.account_control.merchant_category_codes​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1mccsArray✅Danh sách MCC
2negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin card_data.in_control_rules​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1aliasString✅Mã unique gợi nhớ của Control
2transaction_limitsObject❌Thiết lập giới hạn số tiền/ mỗi giao dịch thẻ
3geographiesObject❌Thiết lập sử dụng thẻ theo khu vực địa lý
4velocitiesObject✅Thiết lập giới hạn tần suất và/hoặc tổng số tiền giao dịch thẻ trong một khoảng thời gian nhất định
5validity_periodsObject❌Kiểm soát thời gian hiệu lực của control
6amount_rangesObject❌Kiểm soát giá trị giao dịch trong khoảng min, max
7acceptor_idsObject❌Thiết lập kiểm soát cho phép các Merchant/Acquirer nào thẻ được phép thực hiện giao dịch
8ageing_velocitiesObject❌Thiết lập và kiểm soát hạn mức tín dụng khả dụng trên thẻ
9curfewsObject❌Thiết lập kiểm soát giao dịch thẻ theo khung giờ trong các ngày nhất định, và có thể xác định múi giờ áp dụng
10time_of_daysObject❌Thiết lập kiểm soát giao dịch thẻ theo trong các khung giờ cụ thể của từng ngày
11merchant_category_codesObject❌Thiết lập kiểm soát GD thẻ theo mã ngành nghề MCC của merchant
12merchant_namesObject❌Thiết lập kiểm soát GD thẻ theo tên của Merchant (ĐVi chấp nhận thẻ)
13merchant_amountsObject❌Thiết lập kiểm soát GD thẻ theo số tiền mỗi giao dịch trên 1 loại tiền tệ cụ thể
14transaction_environmentsObject❌Thiết lập kiểm soát giao dịch thẻ theo Phương thức giao dịch
15approve_controlObject❌Thiết lập kiểm soát GD thẻ - Toàn bộ rule thiết lập sẽ là cho approve/decline GD
16entry_modesObject❌Thiết lập kiểm soát GD theo loại hình thẻ

Thông tin card_data.in_control_rules.transaction_limits​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1amountFloat✅Giá trị giao dịch tối đa/ 1 giao dịch
Giá trị này được setup theo billing currency của RCN đã đăng ký BPC
min: 0
max: 99999999999999
2negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin card_data.in_control_rules.geographies​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1country_codesArray✅Danh sách mã quốc gia - format 3 ký tự
2negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin card_data.in_control_rules.velocities​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1max_transNumber✅Số lượng giao dịch tối đa được phép giao dịch trong 1 khoảng thời gian nhất định
min: 1
max: 99999999
2cumulative_limitNumber✅Số tiền giao dịch cộng dồn tối đa được phép giao dịch trong 1 khoảng thời gian nhất định
min: 1000
max: 5000000
3periodString✅Kỳ áp dụng
- DAILY -> Hàng ngày
- WEEKLY -> Hàng tuần
- QUARTERLY -> Hàng quý
- CONTINUOUS -> Từ lúc thiết lập và ko có ngày reset đếm/cộng dồn lại (bao giờ chạm ngưỡng thì báo)
- MONTHLY -> Hàng tháng
- YEARLY -> Hàng năm
4negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin card_data.in_control_rules.validity_periods​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1fromString✅Thời gian bắt đầu hiệu lực của control
2toString✅Thời gian kết thúc hiệu lực của control
3negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin card_data.in_control_rules.amount_ranges​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1min_amountFloat✅Số tiền giao dịch tối thiểu
min: 0
max: 99999999999999
min_amount < max_amount
2max_amountFloat✅Số tiền giao dịch tối đa
min: 0
max: 99999999999999
min_amount < max_amount
3negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin card_data.in_control_rules.acceptor_ids​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1acceptorsObject✅Có thể set merchant hoặc acquire
2negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin card_data.in_control_rules.acceptor_ids.acceptors​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1acceptor_idString✅Mã Merchant ID – định danh của đơn vị chấp nhận thẻ (merchant) nơi giao dịch diễn ra.
2acquirer_idString✅Mã Acquirer ID – định danh của ngân hàng/đơn vị thanh toán (acquirer) xử lý giao dịch cho merchant.

Thông tin card_data.in_control_rules.ageing_velocities​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1authorization_hold_daysNumber✅Số ngày hold giao dịch trên thẻ ảo để tính toán khi nào reset lại Hạn mức tín dụng đang thiết lập
min: 0
max: 9999
2cumulative_limitNumber✅Hạn mức tổng
Nếu truyền vào = 0 - Đồng nghĩa với unlimited (Bỏ qua giới hạn thiết lập này)
min: 0
max: 99999999999999
3time_zoneString✅Múi giờ áp dụng cho việc tính ngày và giờ để thực hiện unhold giao dịch để loại bỏ khỏi phần tính avaliableCredit
4negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin card_data.in_control_rules.curfews​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1from_timeString✅Thời gian bắt đầu cho phép giao dịch.
2to_timeString✅Thời gian kết thúc cho phép giao dịch
(sau thời gian này, giao dịch bị từ chối)
3time_zoneString❌Múi giờ áp dụng khung giờ trên
Ví dụ: UTC
4daysArray✅Danh sách các ngày trong tuần áp dụng giới hạn SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY. Được truyền multi, cách nhau dấu phẩy
5negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin card_data.in_control_rules.time_of_days​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1timesArray✅Danh sách object cấu hình thời gian cho phép giao dịch
(sau thời gian này, giao dịch bị từ
chối)
Có thể truyền 1 mảng các config
2time_zoneString✅Múi giờ áp dụng cho khung giờ trên (fromTime-toTime)
Lưu ý default áp dụng là GMT (không phải là timezone register cho RCN)
Nên lưu ý phải truyền vào
Example: UTC
3negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Mô tả dữ liệu object bên trong card_data.in_control_rules.time_of_days.times(1)

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1from_timeString✅Thời gian bắt đầu cho phép giao dịch.
2to_timeString✅Thời gian kết thúc cho phép giao dịch
(sau thời gian này, giao dịch bị từ chối)
3daysArray✅Các ngày trong tuần áp dụng giới hạn SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY. Được truyền multi, cách nhau dấu phẩy

Thông tin card_data.in_control_rules.merchant_category_codes​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1mccsArray✅Danh sách MCC
2negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin card_data.in_control_rules.merchant_names​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1merchant_namesArray✅Danh sách merchant names (được gửi trong trường DE43 của thông điệp ủy quyền (authorization message)
Tên này phải khớp với tên trong dữ liệu thanh toán của ngân hàng (trường DE43)
2negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin card_data.in_control_rules.merchant_amounts​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1valueFloat✅Số tiền tối đa/giao dịch theo currency_code thiết lập bên dưới
min: 0
max: 99999999999999
2currency_codeString✅Mã tiền tệ áp dụng theo chuẩn (ISO) 4217
3negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin card_data.in_control_rules.transaction_environments​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1environment_codesArray✅Danh sách các phương thức giao dịch
- ATM – Giao dịch tại máy rút tiền
tự động.
- ECOM – Giao dịch thương mại
điện tử (online).
- MOTO – Mail Order/Telephone Order (đặt hàng qua thư/điện thoại, không có mặt thẻ và chủ thẻ).
- PAYPASS – Thanh toán không tiếp xúc (contactless).
- POS – Giao dịch trực tiếp tại cửa hàng (quẹt trên máy POS).
- PWCB – Mua hàng kèm rút tiền
mặt (Purchase with Cash Back).
2negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin card_data.in_control_rules.approve_control​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Thông tin card_data.in_control_rules.entry_modes​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1modeString✅Truyền loại hình thẻ chấp nhận thanh toán
Default: EMV
2negateNumber✅Xác định rule có bị áp dụng ngược lại không ?
1. true
0. false => Default

Ví dụ Request tạo thẻ thành công​

{
"request_id": "818bca12-f0aa-4152-ba27-e3bd4dcb3abe",
"request_time": "2026-05-21 10:14:14",
"master_merchant_code": "mmthiither22",
"sub_merchant_code": "b2bthiither127",
"operation": "CREATE_VCN",
"status": 3,
"reference_id": "TT1774927943",
"card_data": {
"vcn_id": 2393,
"card_info_encrypt": "d3VY98QAQCvAmZsEj8u6JHHE7+sswy7cNluSXPy5HJc6Tf/fl9JFXK/GTdZdetE4sMw/bwjVn7HDRa/7Z2Lqjrmey5BHxYLBizRxZGsLMGSlm8PyBoZg8N8akGpORFa3cgWWbCOJji/MVl56jrN3UzoRgee43B+62HUObWwqAUM=",
"card_status": 1,
"control_type": 2,
"account_control": null,
"in_control_rules": {
"alias": "TT1774927943",
"velocities": {
"period": "CONTINUOUS",
"negate": 0,
"max_trans": 100,
"cumulative_limit": 1500000
},
"curfews": {
"days": [
"MONDAY",
"TUESDAY",
"WEDNESDAY"
],
"negate": 0,
"from_time": "00:00",
"to_time": "23:59",
"time_zone": "UTC"
},
"transaction_limits": {
"amount": 100,
"negate": 0
},
"validity_periods": {
"from": "2026-03-31 10:34:22",
"to": "2035-12-01 00:00:00",
"negate": 0
},
"amount_ranges": {
"negate": 0,
"min_amount": 0,
"max_amount": 100000000
},
"acceptor_ids": {
"acceptors": {
"acceptor_id": "126548888899997",
"acquirer_id": "12325435"
},
"negate": 0
},
"ageing_velocities": {
"negate": 0,
"authorization_hold_days": 0,
"cumulative_limit": 0,
"time_zone": "UTC"
},
"time_of_days": {
"times": [
{
"days": [
"MONDAY",
"TUESDAY",
"WEDNESDAY"
],
"from_time": "00:00",
"to_time": "23:59"
}
],
"negate": 0,
"time_zone": "UTC"
},
"merchant_category_codes": {
"mccs": [
"3001",
"3005"
],
"negate": 0
},
"merchant_names": {
"negate": 0,
"merchant_names": [
"Amazon"
]
},
"merchant_amounts": {
"value": 10000000,
"negate": 0,
"currency_code": "704"
},
"transaction_environments": {
"negate": 0,
"environment_codes": [
"ECOM",
"POS"
]
},
"approve_control": {
"negate": 0
},
"entry_modes": {
"mode": "EMV",
"negate": 0
}
}
},
"created_at": "2026-03-31 10:32:34",
"updated_at": "2026-05-21 10:14:14"
}

Ví dụ Request tạo thẻ thất bại​

{
"request_id": "818bca12-f0aa-4152-ba27-e3bd4dcb3abe",
"request_time": "2026-05-21 10:14:14",
"master_merchant_code": "MASTERMERCHANTCODE",
"sub_merchant_code": "SUBMERCHANTCODE",
"operation": "CREATE_VCN",
"status": 4,
"reference_id": "TT1774927943",
"card_data": null,
"created_at": "2026-03-31 10:32:34",
"updated_at": "2026-05-21 10:14:14"
}

Đối tác phản hồi Webhook​

Bảng tham số chính​

STTTên trườngKiểu dữ liệuBắt buộcMô tả
1codeString(4)✅code trả về cho phía Baokim, bảo đảm phía MERCHANT đã nhận được
2messageString✅Message trả về cho phía Baokim
3dataObject❌Dữ liệu Merchant trả về cho Baokim nếu có

Ví dụ Response chấp nhận webhook​

{
"code": 100,
"message": "Success",
"data": null
}

Ví dụ Response từ chối webhook​

{
"code": 1600,
"message": "Reject",
"data": null
}