Xử lý kết quả thanh toán thẻ
Khi việc xử lý thanh toán hoàn tất, Zengi sẽ thông báo cho đối tác ngay cả khi giao dịch này có thành công hay không. Các giao dịch mà Zengi sẽ thông báo đến đối tác gồm có:
- Các lệnh giao dịch như Sale, Void, PreAuth, PreAuth-Complete và Settlement.
- Ngoại trừ các lệnh hệ thống như: Logon, Reversal và Batch Upload.
IPN - Instant Payment Notification
Hệ thống của Zengi sử dụng callbackUrl được đối tác cung cấp theo thứ tự ưu tiên như sau để gửi HTTP POST request với cấu trúc bên dưới đến hệ thống đối tác.
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.
Cấu trúc IPN
No | Tên field | Loại dữ liệu | Ý nghĩa |
---|---|---|---|
1 | id | string | ID của giao dịch |
2 | billId | string | Mã Bill được sinh ra từ phía Merchant của đối tác |
3 | reqID | string | Mã request được sinh ra từ phía đối tác khi khởi tạo giao dịch và gửi sang Zengi |
4 | refID | string | Mã tham chiếu được Acquirer bank trả về khi thực hiện giao dịch thành công đối với giao dịch Sale, PreAuth, PreAuth-Complete và Settlement |
5 | approve_code | string | mã chuẩn chị, chỉ có giá trị đối với giao dịch Sale, preAuth, preAuth-Complete |
6 | parent_id | string | ID của giao dịch Sale. Chỉ xuất hiện khi đây là kết quả của giao dịch Void và PreAuth-Complete |
7 | amount | string | Số tiền giao dịch |
8 | status | string | Trạng thái giao dịch |
9 | transaction_type | string | Loại giao dịch. Nhận các giá trị: SALE, VOID, SETTLEMENT |
10 | payment_type | string | Loại giao dịch. Mặc định nhận giá trị là "card" |
11 | card_type | string | Loại thẻ |
12 | tid | string | terminalId |
13 | mid | string | merchantId |
14 | emv_data | json object | Dữ liệu EMV kết quả thanh toán thẻ |
15 | device_id | string | Số serial number |
Ví dụ:
{
"id": " ..",
"billID":"...",
"reqID":" ...",
"refID":"...",
"approve_code":"...",
"parent_id":"...",
"amount":"...",
"status":"...",
"transaction_type":"...",
"payment_type":"card",
"tid":"...",
"mid":"...",
"serial_number":"...",
"emv_data":{...}
}
EMV Data:
No | Tên field | Loại dữ liệu | Ý nghĩa |
---|---|---|---|
1 | aid | string | ID của app thực hiện giao dịch thẻ |
2 | appName | string | Tên app thực hiện giao dịch thẻ |
3 | approveCode | string | Mã chuẩn chi |
4 | batchNo | string | số lô |
5 | cardHolder | string | Tên chủ thẻ |
6 | cardNumber | string | Số thẻ được cắt cụt |
7 | cardType | string | CardType: 1 - International (Visa, AMEX, JCB), 2 - Domestic (Napas), 3 - Mastercard |
8 | currency | string | Loại tiền giao dịch |
9 | expDate | string | Ngày hết hạn thẻ |
10 | invoiceNo | string | Số hóa đơn |
11 | isoResponseCode | string | Kết quả giao dịch, 00 - Thành công, kết quả khác 00 là lỗi. |
12 | merchantAddress | string | Địa chỉ của Merchant |
13 | merchantId | string | Merchant ID |
14 | merchantTransId | string | Mã giao dịch của Merchant |
15 | refNo | string | Mã tham chiếu |
16 | swipeType | string | Hình thức giao dịch, CL - contact, CLS - Contactless |
17 | tc | string | Mã TC của giao dịch thẻ |
18 | terminalId | string | terminalId |
19 | totalAmount | string | Giá trị giao dịch |
20 | traceNo | string | số trace |
21 | transDateTime | string | Thời gian giao dịch, có dạng yyyymmddhhmmss |
Ví dụ:
{ "id": " ..",
"billID":"...",
...................
"emv_data":{
"aid":"A0000000031010",
"appName":"STB VISA CARD",
"approveCode":"759497",
"batchNo":"000019",
"cardHolder":"/",
"cardNumber":"423238******4712",
"cardType":"1",
"currency":"VND",
"expDate":"",
"invoiceNo":"000059",
"isoResponseCode":"00",
"merchantAddress":"117-119 LY CHINH THANG 117-119 LY CHINH THANG",
"merchantId":"111111111111111",
"merchantName":"Zengi",
"merchantTransId":"20241210095518",
"refNo":"419029268510",
"swipeType":"CLS",
"tc":"16212A24C734483D",
"terminalId":"11111111",
"totalAmount":"1000",
"traceNo":"000191",
"transDateTime":"20241210095532"
}
}