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

Tạo tài khoản ảo (VA)

Quy trình​

Mô tả:

  • CashPlus gọi API này để tạo tài khoản ảo (VA) và mã VietQR cho một đơn hàng. Khách hàng chuyển tiền vào VA, Baokim gửi Webhook thu hộ cho CashPlus.
  • Mỗi OrderId chỉ có 1 VA. Gọi lại với OrderId đã tạo → Baokim trả ResponseCode=200 kèm thông tin VA đã tạo trước đó, không tạo VA mới.
  • QR tĩnh: OrderId chứa chuỗi QRTINH → mã QR không gắn số tiền và VA không hết hạn (bỏ qua ExpireDate).
  • QR theo số tiền: khi CollectAmountMin = CollectAmountMax, mã QR gắn sẵn số tiền này. Khi khác nhau, mã QR không gắn số tiền.

Thông tin API​

Method: POST

URL: {BASE_URL}/collection/{env}/v1

  • {env}: live (production) hoặc sanbox (test)

Header: Signature — chữ ký RSA-SHA1 của raw body (xem Bảo mật).

Request​

Bảng tham số chính​

Tên trườngKiểu dữ liệuBắt buộcMô tả
RequestIdString✅ID request, không trùng request trước. Tối đa 50 ký tự, chỉ gồm chữ, số, _, ., -
RequestTimeDatetime✅Thời gian request. Format: YYYY-MM-DD HH:mm:ss. Lệch không quá 10 phút so với giờ Baokim
PartnerCodeString✅Mã đối tác Baokim cung cấp
OperationString✅Luôn truyền 9001
CreateTypeInteger✅Luôn truyền 2
AccNameString✅Tên hiển thị của VA. Tối đa 50 ký tự, gồm chữ (có dấu), số, khoảng trắng, ., -, _
SubMerchantString❌Mã sub merchant đã đăng ký với Baokim
StoreCodeString❌Mã cửa hàng. Bắt buộc nếu sub merchant đăng ký theo mô hình nhiều cửa hàng
CollectAmountMinInteger✅Số tiền tối thiểu (VND), số nguyên, trong giới hạn Baokim cấu hình cho đối tác
CollectAmountMaxInteger✅Số tiền tối đa (VND), số nguyên, ≥ CollectAmountMin
OrderIdString✅Mã đơn hàng phía CashPlus. Tối đa 25 ký tự, không chứa khoảng trắng và ký tự đặc biệt
ExpireDateDatetime❌Thời điểm hết hạn VA. Format: YYYY-MM-DD HH:mm:ss. Không truyền → VA không hết hạn
MemoString❌Nội dung gắn vào mã QR. Baokim chuyển sang không dấu và bỏ ký tự đặc biệt

Ví dụ Request​

{
"RequestId": "CP20250115103000",
"RequestTime": "2025-01-15 10:30:00",
"PartnerCode": "CASHPLUS",
"Operation": "9001",
"CreateType": 2,
"AccName": "Cua hang A",
"SubMerchant": "SHOP123",
"StoreCode": "STORE001",
"CollectAmountMin": 15000,
"CollectAmountMax": 15000,
"OrderId": "ORD202501150001",
"ExpireDate": "2025-01-16 10:30:00",
"Memo": "Thanh toan don hang"
}

Response​

ghi chú

HTTP 200 - Thành công

Bảng tham số chính​

Tên trườngKiểu dữ liệuBắt buộcMô tả
ResponseCodeInteger✅200 = thành công
ResponseMessageString✅Thông báo
PartnerCodeString❌Luôn là BAOKIM. Chỉ có khi thành công
OrderIdString❌Mã đơn hàng
CollectAmountMinInteger❌Số tiền tối thiểu
CollectAmountMaxInteger❌Số tiền tối đa
ExpireDateDatetime❌Thời điểm hết hạn VA
AccountInfoObject❌Thông tin VA. Xem bảng AccountInfo

AccountInfo.BANK​

Tên trườngKiểu dữ liệuMô tả
BankNameStringTên ngân hàng của VA
BankShortNameStringTên viết tắt ngân hàng (ví dụ BIDV, MSB, VPBANK)
BankBranchStringChi nhánh
AccNoStringSố tài khoản ảo
AccNameStringTên tài khoản ảo
QrStringChuỗi nội dung mã VietQR. CashPlus dùng chuỗi này để tự hiển thị mã QR. Có thể null
QrPathStringĐường dẫn ảnh mã QR. Có thể null

Ví dụ Response​

{
"ResponseCode": 200,
"ResponseMessage": "Thành công",
"PartnerCode": "BAOKIM",
"OrderId": "ORD202501150001",
"CollectAmountMin": 15000,
"CollectAmountMax": 15000,
"ExpireDate": "2025-01-16 10:30:00",
"AccountInfo": {
"BANK": {
"BankName": "Ngân hàng Thương mại Cổ phần Đầu tư và Phát triển Việt Nam",
"BankShortName": "BIDV",
"BankBranch": "Hà Nội",
"AccNo": "9620000123456",
"AccName": "Cua hang A",
"Qr": "00020101021238570010A000000727012700069704180113962000012345602...",
"QrPath": "https://{QR_DOMAIN}/qr/ORD202501150001.png"
}
}
}

Ví dụ Response lỗi​

{
"ResponseCode": 109,
"ResponseMessage": "CollectAmount không hợp lệ"
}

Error Codes​

Mã lỗiMô tả
200Thành công (kể cả gọi lại OrderId đã tạo)
11Lỗi trong quá trình xử lý bên Baokim
103Operation không hợp lệ (khác 9001)
104RequestId hoặc RequestTime không hợp lệ (sai định dạng, trùng RequestId, hoặc lệch quá 10 phút)
105Partner code không hợp lệ
106AccName không hợp lệ
109CollectAmount không hợp lệ (thiếu, không phải số nguyên, ngoài giới hạn, hoặc Min > Max)
110ExpireDate không hợp lệ
120Chữ ký không hợp lệ
122OrderId không hợp lệ
123CreateType không hợp lệ (khác 2)
124SubMerchant không hợp lệ
125StoreCode không hợp lệ