Xử lý kết quả thanh toán QR
Khi việc xử lý thanh toán hoàn tất, Zengi sẽ thông báo cho đối tác ngay sau khi giao dịch thành công
IPN - Instant Payment Notification
Hệ thống của Zengi sử dụng callbackUrl được đối tác cung cấp đăng kí với Zengi
Thứ tự ưu tiên của callbackUrl
- Ưu tiên 1: dùng callbackUrl được đối tác cung cấp trong mỗi lệnh giao dịch.
- Ưu tiên 2: dùng callbackUrl được đối tác cung cấp khi đăng kí tài khoản.
Tạo chữ ký số
- accessKey=1lCoX8CjcyH5A3KP
- secretKey=Cx4EDjpHknPAnYS3WmwqIJ6HGqzpXCaZ
Message = accessKey + referencenumber + va + bankaccount + amount
X-Signature = HMAC_SHA256(secretKey, Message)
Ex Output X-Signature Hex: 48287707c1e78713614b5bff3314fe4f6c4944840dfb7913babd56d6dcab0ee4
Cấu trúc IPN
Header:
| No | Tên Header | Mô Tả | Ghi chú |
|---|---|---|---|
| 1 | Content-Type | application/json | Kiểu dữ liệu truyền |
| 2 | X-Signature | Chữ ký HMAC-SHA256 | Tham khảo ở phần Tạo chữ ký số |
Payload:
| No | Tên field | Loại dữ liệu | Ý nghĩa |
|---|---|---|---|
| 1 | transactionid | string | ID của giao dịch |
| 2 | transactiontime | timestamp | Thời gian giao dịch |
| 3 | referencenumber | string | Mã tham chiếu |
| 4 | narrative | string | Nội dung chuyển khoản |
| 5 | bankAccount | string | Tài khoản nguồn |
| 6 | binCode | string | Bincode của ngân hàng quản lý tài khoản nguồn |
| 7 | va | string | Số tài khoản định danh |
| 8 | transType | string | Loại giao dịch C - báo có, D - báo nợ |
| 9 | amount | string | Số tiền chuyển khoản |
| 10 | currency | string | Loại tiền |
| 11 | reciprocalAccount | string | Số tài khoản đối ứng |
| 12 | reciprocalBankCode | string | BinCode của ngân hàng quản lý tài khoản đối ứng |
Ví dụ:
{ "transactionid": "cc1e2464-f478-44b7-a006-20729bbd688f",
"transactiontime": "1747046520000",
"referencenumber": "FT25132328062416",
"narrative": "SDG-513201668655",
"bankaccount": "0918343336",
"binCode": "970422",
"va": "",
"transType": "C",
"amount": "11000000",
"currency": "VND",
"reciprocalAccount": "0918343336",
"reciprocalBankCode": "",
}