Skip to main content

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

NoTên fieldLoại dữ liệuÝ nghĩa
1idstringID của giao dịch
2billIdstringMã Bill được sinh ra từ phía Merchant của đối tác
3reqIDstringMã request được sinh ra từ phía đối tác khi khởi tạo giao dịch và gửi sang Zengi
4refIDstringMã 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
5approve_codestringmã chuẩn chị, chỉ có giá trị đối với giao dịch Sale, preAuth, preAuth-Complete
6parent_idstringID 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
7amountstringSố tiền giao dịch
8statusstringTrạng thái giao dịch
9transaction_typestringLoại giao dịch. Nhận các giá trị: SALE, VOID, SETTLEMENT
10payment_typestringLoại giao dịch. Mặc định nhận giá trị là "card"
11card_typestringLoại thẻ
12tidstringterminalId
13midstringmerchantId
14emv_datajson objectDữ liệu EMV kết quả thanh toán thẻ
15device_idstringSố 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:

NoTên fieldLoại dữ liệuÝ nghĩa
1aidstringID của app thực hiện giao dịch thẻ
2appNamestringTên app thực hiện giao dịch thẻ
3approveCodestringMã chuẩn chi
4batchNostringsố lô
5cardHolderstringTên chủ thẻ
6cardNumberstringSố thẻ được cắt cụt
7cardTypestringCardType: 1 - International (Visa, AMEX, JCB), 2 - Domestic (Napas), 3 - Mastercard
8currencystringLoại tiền giao dịch
9expDatestringNgày hết hạn thẻ
10invoiceNostringSố hóa đơn
11isoResponseCodestringKết quả giao dịch, 00 - Thành công, kết quả khác 00 là lỗi.
12merchantAddressstringĐịa chỉ của Merchant
13merchantIdstringMerchant ID
14merchantTransIdstringMã giao dịch của Merchant
15refNostringMã tham chiếu
16swipeTypestringHình thức giao dịch, CL - contact, CLS - Contactless
17tcstringMã TC của giao dịch thẻ
18terminalIdstringterminalId
19totalAmountstringGiá trị giao dịch
20traceNostringsố trace
21transDateTimestringThờ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"
}

}