API querydr, refund · Cổng thanh toán VNPAY
Truy vấn kết quả thanh toán (QueryDr)
- API URL:https://sandbox.vnpayment.vn/merchant_webapi/api/transaction
- Phương thức:POST
- Content-Type:Application/json
- Đây là API để hệ thống merchant truy vấn kết quả thanh toán của giao dịch tại hệ thống VNPAY.
Danh sách tham số gửi VNPAY (vnp_Command=querydr)
Tham số | Kiểu dữ liệu | Bắt buộc/Tùy chọn | Mô tả |
---|---|---|---|
vnp_RequestId | Alphanumeric[1,32] | Bắt buộc | Mã hệ thống merchant tự sinh ứng với mỗi yêu cầu truy vấn giao dịch. Mã này là duy nhất dùng để phân biệt các yêu cầu truy vấn giao dịch. Không được trùng lặp trong ngày. |
vnp_Version | Alphanumeric[1,8] | Bắt buộc | Phiên bản api mà merchant kết nối. Phiên bản hiện tại là 2.1.0 |
vnp_Command | Alpha[1,16] | Bắt buộc | Mã API sử dụng, mã cho giao dịch thanh toán là "querydr" |
vnp_TmnCode | Alphanumeric[8] | Bắt buộc | Mã định danh kết nối thanh toán
Các mã định danh kết nối tương ứng giữa các hệ thống:
Thanh toán PAY được quy định tại tham số "vnp_TmnCode"
Thanh toán bằng mã Token được quy định tại tham số "vnp_tmn_code"
Thanh toán trả góp được quy định tại tham số "tmnCode"
Thanh toán định kỳ được quy định tại tham số "tmnCode"
|
vnp_TxnRef | Alphanumeric[1,100] | Bắt buộc | Giống mã gửi sang VNPAY khi gửi yêu cầu thanh toán.
Các mã giao dịch thanh toán tương ứng giữa các hệ thống
Thanh toán PAY được quy định tại tham số "vnp_TxnRef"
Thanh toán bằng mã Token được quy định tại tham số "vnp_txn_ref"
Thanh toán trả góp được quy định tại tham số "order": {"orderReference": ""} chiều khởi tạo giao dịch trả góp
Thanh toán định kỳ được quy định tại tham số "order": {"orderReference": ""} chiều yêu cầu thanh toán định kỳ
|
vnp_OrderInfo | Alphanumeric[1,255] | Bắt buộc | Mô tả thông tin yêu cầu ( Request description) |
vnp_TransactionNo | Numeric[1,15] | Tuỳ chọn | Mã giao dịch ghi nhận tại hệ thống VNPAY.
Các mã giao dịch VNPAY phản hồi tương ứng giữa các hệ thống
Thanh toán PAY được quy định tại tham số "vnp_TransactionNo"
Thanh toán bằng mã Token được quy định tại tham số "vnp_transaction_no"
Thanh toán trả góp được quy định tại tham số "vnp_TransactionNo"
Thanh toán định kỳ được quy định tại tham số "vnp_transaction_no"
|
vnp_TransactionDate | Numeric[14] | Bắt buộc | Thời gian ghi nhận giao dịch tại hệ thống của merchant tính theo GMT+7, định dạng:
yyyyMMddHHmmss, tham khảo giá trị:
Thanh toán PAY giống vnp_CreateDate của vnp_Command=pay
Thanh toán bằng mã Token giống "vnp_create_date" của "vnp_Command=pay_and_create" và "vnp_command=token_pay"
Thanh toán trả góp giống "transaction": {"mcDate": ""} chiều khởi tạo giao dịch trả góp
Thanh toán định kỳ giống "transaction": {"mcDate": ""} chiều khởi tạo yêu cầu thanh toán định kỳ
|
vnp_CreateDate | Numeric[14] | Bắt buộc | Thời gian phát sinh request (thời gian phát sinh yêu cầu truy vấn giao dịch) GMT+7, định dạng: yyyyMMddHHmmss |
vnp_IpAddr | Alphanumeric[7,45] | Bắt buộc | Địa chỉ IP của máy chủ thực hiện gọi API |
vnp_SecureHash | Alphanumeric[32,256] | Bắt buộc | Mã kiểm tra (checksum) để đảm bảo dữ liệu không bị thay đổi trong quá trình gửi yêu cầu tử hệ thống merchant sang VNPAY. Quy tắc tạo checksum: data = vnp_RequestId + “|” + vnp_Version + “|” + vnp_Command + “|” + vnp_TmnCode + “|” + vnp_TxnRef + “|” + vnp_TransactionDate + “|” + vnp_CreateDate + “|” + vnp_IpAddr + “|” + vnp_OrderInfo; checksum = hashWithSecureType(secretKey, data); |
Danh sách tham số - Thông tin nhận về từ VNPAY (vnp_Command=querydr)
Tham số | Kiểu dữ liệu | Bắt buộc/Tùy chọn | Mô tả |
---|---|---|---|
vnp_ResponseId | Alphanumeric[1-32] | Bắt buộc | Mã hệ thống VNPAY tự sinh ứng với mỗi yêu cầu truy vấn giao dịch. Mã này là duy nhất dùng để phân biệt các yêu cầu truy vấn giao dịch. Không trùng lặp trong ngày. |
vnp_Command | Alphanumeric[1-16] | Tùy chọn | Mã API sử dụng, mã cho giao dịch thanh toán là "querydr" |
vnp_TmnCode | Alphanumeric[8] | Bắt buộc | Mã định danh kết nối của hệ thống
Các mã định danh kết nối tương ứng giữa các hệ thống:
Thanh toán PAY được quy định tại tham số "vnp_TmnCode"
Thanh toán bằng mã Token được quy định tại tham số "vnp_tmn_code"
Thanh toán trả góp được quy định tại tham số "tmnCode"
Thanh toán định kỳ được quy định tại tham số "tmnCode"
|
vnp_TxnRef | Alphanumeric[1,100] | Bắt buộc | Mã tham chiếu của giao dịch tại hệ thống của merchant. Mã này do merchant gửi sang
khi yêu cầu thanh toán. VNPAY gửi lại để merchant cập nhật
Tham khảo các giá trị qua các hệ thống thanh toán:
Thanh toán PAY được quy định tại tham số "vnp_TxnRef"
Thanh toán bằng mã Token được quy định tại tham số "vnp_txn_ref"
Thanh toán trả góp được quy định tại tham số "order": {"orderReference": ""} chiều khởi tạo giao dịch trả góp
Thanh toán định kỳ được quy định tại tham số "order": {"orderReference": ""} chiều yêu cầu thanh toán định kỳ
|
vnp_Amount | numeric[1,12] | Bắt buộc | Số tiền merchant gửi yêu cầu sang VNPAY thanh toán cho giao dịch.
Tham khảo các giá trị qua các hệ thống thanh toán:
Thanh toán PAY được quy định tại tham số "vnp_Amount"
Thanh toán bằng mã Token được quy định tại tham số "vnp_amount"
Thanh toán trả góp được quy định tại tham số "transaction": {"totalIspAmount": ""} chiều khởi tạo giao dịch trả góp
và "vnp_Amount" chiều VNPAY phản hồi kết quả thanh toán
Thanh toán định kỳ được quy định tại tham số "transaction": {"recurringAmount": ""} chiều yêu cầu thanh toán định kỳ
và "vnp_amount" chiêu VNPAY phản hồi kết quả thanh toán
|
vnp_OrderInfo | Numeric[2] | Bắt buộc | Mô tả thông tin yêu cầu (Request description) |
vnp_ResponseCode | Numeric[14] | Bắt buộc | Mã phản hồi kết quả xử lý của API. Quy định mã trả lời 00 ứng với yêu cầu querydr được thực hiện thành công. Tham khảo thêm tại bảng mã lỗi. Chú ý: Đây là kết quả phản hồi của hệ thống. Kết quả của giao dịch (thành công/ không thành công) xem thêm tại: vnp_TransactionStatus |
vnp_Message | Alphanumeric[10,255] | Bắt buộc | Mô tả thông tin tương ứng với vnp_ResponseCode |
vnp_BankCode | Alphanumeric[3,20] | Bắt buộc | Mã Ngân hàng hoặc mã Ví điện tử thanh toán. |
vnp_PayDate | Numeric[14] | Tùy chọn | Thời gian khách hàng thanh toán, ghi nhận tại VNPAY. Định dạng: yyyyMMddHHmmss |
vnp_TransactionNo | Numeric[1,15] | Bắt buộc | Mã giao dịch ghi nhận tại hệ thống VNPAY |
vnp_TransactionType | Numeric[2] | Bắt buộc | Loại giao dịch tại hệ thống VNPAY: 01: GD thanh toán 02: Giao dịch hoàn trả toàn phần 03: Giao dịch hoàn trả một phần |
vnp_TransactionStatus | Numeric[2] | Bắt buộc | Tình trạng thanh toán của giao dịch tại Cổng thanh toán VNPAY. Xem thêm tại bảng mã lỗi. |
vnp_PromotionCode | Numeric[1-12] | Tùy chọn | Mã khuyến mại. Trong trường hợp khách hàng áp dụng mã QR khuyễn mãi khi thanh toán. |
vnp_PromotionAmount | Numeric[1-12] | Tùy chọn | Số tiền khuyến mại. Trong trường hợp khách hàng áp dụng mã QR khuyễn mãi khi thanh toán. |
vnp_SecureHash | Alphanumeric[32,256] | Bắt buộc | Mã kiểm tra (checksum) để đảm bảo dữ liệu không bị thay đổi trong quá trình VNPAY trả kết quả về merchant. Quy tắc tạo checksum: data = vnp_ResponseId + “|” + vnp_Command + “|” + vnp_ResponseCode + “|” + vnp_Message + “|” + vnp_TmnCode + “|” + vnp_TxnRef + “|” + vnp_Amount + “|” vnp_BankCode + “|” + vnp_PayDate + “|” + vnp_TransactionNo + “|” + vnp_TransactionType + “|” + vnp_TransactionStatus + “|” + vnp_OrderInfo + “|” + vnp_PromotionCode + “|” + vnp_PromotionAmount; checksum = hashWithSecureType(secretKey, data); |
Giao dịch hoàn tiền (Refund)
- API URL:https://sandbox.vnpayment.vn/merchant_webapi/api/transaction
- Phương thức:POST
- Content-Type:Application/json
- Đây là API để hệ thống merchant gửi yêu cầu hoàn tiền cho giao dịch qua hệ thống Cổng thanh toán VNPAY.
Danh sách tham số gửi VNPAY (vnp_Command=refund)
Tham số | Kiểu dữ liệu | Bắt buộc/Tùy chọn | Mô tả |
---|---|---|---|
vnp_RequestId | Alphanumeric[1,32] | Bắt buộc | Mã hệ thống merchant tự sinh ứng với mỗi yêu cầu hoàn trả giao dịch. Mã này là duy nhất dùng để phân biệt các yêu cầu hoàn trả giao dịch. Không được trùng lặp trong ngày. |
vnp_Version | Alphanumeric[1,8] | Bắt buộc | Phiên bản api mà merchant kết nối. Phiên bản hiện tại là 2.1.0 |
vnp_Command | Alpha[1,16] | Bắt buộc | Mã API sử dụng, mã cho giao dịch thanh toán là "refund" |
vnp_TmnCode | Alphanumeric[8] | Bắt buộc | Mã định danh kết nối của merchant trên hệ thống VNPAY.
Các mã định danh kết nối tương ứng giữa các hệ thống:
Thanh toán PAY được quy định tại tham số "vnp_TmnCode"
Thanh toán bằng mã Token được quy định tại tham số "vnp_tmn_code"
Thanh toán trả góp được quy định tại tham số "tmnCode"
Thanh toán định kỳ được quy định tại tham số "tmnCode"
|
vnp_TransactionType | Numeric[1,15] | Bắt buộc | Loại giao dịch tại hệ thống VNPAY: 02: Giao dịch hoàn trả toàn phần (vnp_TransactionType=02) 03: Giao dịch hoàn trả một phần (vnp_TransactionType=03) |
vnp_TxnRef | Alphanumeric[1,100] | Bắt buộc | Là mã giao dịch thanh toán của hệ thống merchant gửi VNPAY yêu cầu thanh toán.
Tham khảo các giá trị qua các hệ thống thanh toán:
Thanh toán PAY được quy định tại tham số "vnp_TxnRef"
Thanh toán bằng mã Token được quy định tại tham số "vnp_txn_ref"
Thanh toán trả góp được quy định tại tham số "order": {"orderReference": ""} chiều khởi tạo giao dịch trả góp
Thanh toán định kỳ được quy định tại tham số "order": {"orderReference": ""} chiều yêu cầu thanh toán định kỳ
|
vnp_Amount | Numeric[1,12] | Bắt buộc | Số tiền hoàn trả lại cho khách hàng. Số tiền này nhỏ hơn hoặc bằng số tiền của giao dịch
Tham khảo các giá trị qua các hệ thống thanh toán:
Thanh toán PAY được quy định tại tham số "vnp_Amount"
Thanh toán bằng mã Token được quy định tại tham số "vnp_amount"
Thanh toán trả góp được quy định tại tham số "transaction": {"totalIspAmount": ""} chiều khởi tạo giao dịch trả góp
và "vnp_Amount" chiều VNPAY phản hồi kết quả thanh toán
Thanh toán định kỳ được quy định tại tham số "transaction": {"recurringAmount": ""} chiều yêu cầu thanh toán định kỳ
và "vnp_amount" chiêu VNPAY phản hồi kết quả thanh toán
|
vnp_OrderInfo | Alphanumeric[1,255] | Bắt buộc | Mô tả thông tin yêu cầu hoàn( Request description) |
vnp_TransactionNo | Numeric[1,15] | Tuỳ chọn | Mã giao dịch ghi nhận tại hệ thống VNPAY |
vnp_TransactionDate | Numeric[14] | Bắt buộc | Thời gian ghi nhận giao dịch tại website của merchant tính theo GMT+7, định dạng:
yyyyMMddHHmmss, tham khảo giá trị:
Thanh toán PAY giống vnp_CreateDate của vnp_Command=pay
Thanh toán bằng mã Token giống "vnp_create_date" của "vnp_Command=pay_and_create" và "vnp_command=token_pay"
Thanh toán trả góp giống "transaction": {"mcDate": ""} chiều khởi tạo giao dịch trả góp
Thanh toán định kỳ giống "transaction": {"mcDate": ""} chiều khởi tạo yêu cầu thanh toán định kỳ
|
vnp_CreateBy | Alphanumeric[1,245] | Bắt buộc | Người khởi tạo hoàn tiền. Có thể là tên user thực hiện hoàn tiền của merchant. |
vnp_CreateDate | Numeric[14] | Bắt buộc | Thời gian phát sinh request hoàn (Request Date) GMT+7, định dạng: yyyyMMddHHmmss |
vnp_IpAddr | Alphanumeric[7,45] | Bắt buộc | Địa chỉ IP của máy chủ thực hiện gọi API |
vnp_SecureHash | Alphanumeric[32,256] | Bắt buộc | Mã kiểm tra (checksum) để đảm bảo dữ liệu không bị thay đổi trong quá trình gửi yêu cầu tử hệ thống merchant sang VNPAY. Quy tắc tạo checksum: data = vnp_RequestId + “|” + vnp_Version + “|” + vnp_Command + “|” + vnp_TmnCode + “|” + vnp_TransactionType + “|” + vnp_TxnRef + “|” + vnp_Amount + “|” + vnp_TransactionNo + “|” + vnp_TransactionDate + “|” + vnp_CreateBy + “|” + vnp_CreateDate + “|” + vnp_IpAddr + “|” + vnp_OrderInfo; checksum = hashWithSecureType(secretKey, data); |
Danh sách tham số - Thông tin nhận về từ VNPAY (vnp_Command=refund)
Tham số | Kiểu dữ liệu | Bắt buộc/Tùy chọn | Mô tả |
---|---|---|---|
vnp_ResponseId | Alphanumeric[1,32] | Bắt buộc | Mã hệ thống VNPAY tự sinh ứng với mỗi yêu cầu hoàn trả giao dịch. Mã này là duy nhất dùng để phân biệt các yêu cầu hoàn trả giao dịch. Không được trùng lặp trong ngày |
vnp_ResponseId | Alphanumeric[1,32] | Bắt buộc | Mã hệ thống VNPAY tự sinh ứng với mỗi yêu cầu hoàn trả giao dịch. Mã này là duy nhất dùng để phân biệt các yêu cầu hoàn trả giao dịch. Không được trùng lặp trong ngày |
vnp_Command | Alphanumeric[1,16] | Tùy chọn | Mã API sử dụng, mã cho giao dịch thanh toán là "refund" |
vnp_TmnCode | Alphanumeric[8] | Tùy chọn | Mã định danh kết nối của hệ thống
Các mã định danh kết nối tương ứng giữa các hệ thống:
Thanh toán PAY được quy định tại tham số "vnp_TmnCode"
Thanh toán bằng mã Token được quy định tại tham số "vnp_tmn_code"
Thanh toán trả góp được quy định tại tham số "tmnCode"
Thanh toán định kỳ được quy định tại tham số "tmnCode"
|
vnp_TxnRef | Alphanumeric[1,100] | Bắt buộc | Mã tham chiếu của giao dịch tại hệ thống của merchant. Mã giao dịch thanh toán merchant gửi VNPAY yêu cầu hoàn tiền.
Tham khảo các giá trị qua các hệ thống thanh toán:
Thanh toán PAY được quy định tại tham số "vnp_TxnRef"
Thanh toán bằng mã Token được quy định tại tham số "vnp_txn_ref"
Thanh toán trả góp được quy định tại tham số "order": {"orderReference": ""} chiều khởi tạo giao dịch trả góp
Thanh toán định kỳ được quy định tại tham số "order": {"orderReference": ""} chiều yêu cầu thanh toán định kỳ
|
vnp_Amount | numeric[1,12] | Bắt buộc | Số tiền hoàn. Tham khảo vnp_Amount gửi sang VNPAY yêu cầu hoàn tiền
Tham khảo các giá trị qua các hệ thống thanh toán:
Thanh toán PAY được quy định tại tham số "vnp_Amount"
Thanh toán bằng mã Token được quy định tại tham số "vnp_amount"
Thanh toán trả góp được quy định tại tham số "transaction": {"totalIspAmount": ""} chiều khởi tạo giao dịch trả góp
và "vnp_Amount" chiều VNPAY phản hồi kết quả thanh toán
Thanh toán định kỳ được quy định tại tham số "transaction": {"recurringAmount": ""} chiều yêu cầu thanh toán định kỳ
và "vnp_amount" chiêu VNPAY phản hồi kết quả thanh toán
|
vnp_OrderInfo | Numeric[2] | Bắt buộc | Nội dung của yêu cầu hoàn tiền |
vnp_ResponseCode | Numeric[14] | Bắt buộc | Mã phản hồi kết quả xử lý của API. Quy định mã trả lời 00 ứng với yêu cầu refund được thực hiện thành công. Tham khảo thêm tại bảng mã lỗi. |
vnp_Message | Alphanumeric[10,255] | Bắt buộc | Mô tả thông tin tương ứng với vnp_ResponseCode |
vnp_BankCode | Alphanumeric[3,20] | Bắt buộc | Mã Ngân hàng hoặc mã Ví điện tử thanh toán |
vnp_PayDate | Numeric[14] | Tùy chọn | Ngày hoàn trả. Định dạng: yyyyMMddHHmmss |
vnp_TransactionNo | Numeric[1,15] | Bắt buộc | Mã giao dịch hoàn trả tương ứng ghi nhận tại hệ thống VNPAY |
vnp_TransactionType | Numeric[2] | Bắt buộc | Loại giao dịch tại hệ thống VNPAY: 02: Giao dịch hoàn trả toàn phần 03: Giao dịch hoàn trả một phần |
vnp_TransactionStatus | Numeric[2] | Bắt buộc | Tình trạng của giao dịch tại Cổng thanh toán VNPAY. Xem thêm tại bảng mã lỗi# |
vnp_SecureHash | Alphanumeric[32,256] | Bắt buộc | Mã kiểm tra (checksum) để đảm bảo dữ liệu không bị thay đổi trong quá trình VNPAY trả kết quả về merchant. Quy tắc tạo checksum: data = vnp_ResponseId + “|” + vnp_Command + “|” + vnp_ResponseCode + “|” + vnp_Message + “|” + vnp_TmnCode + “|” + vnp_TxnRef + “|” + vnp_Amount + “|” + vnp_BankCode + “|” + vnp_PayDate + “|” + vnp_TransactionNo + “|” + vnp_TransactionType + “|” + vnp_TransactionStatus + “|” + vnp_OrderInfo; checksum = hashWithSecureType(secretKey, data); |
Bảng mã lỗi của hệ thống thanh toán PAY
Mã lỗi | Mô tả |
---|---|
Bảng mã lỗi của vnp_ResponseCode - Truy vấn giao dịch querydr | |
00 | Yêu cầu thành công |
02 | Mã định danh kết nối không hợp lệ (kiểm tra lại TmnCode) |
03 | Dữ liệu gửi sang không đúng định dạng |
91 | Không tìm thấy giao dịch yêu cầu |
94 | Yêu cầu trùng lặp, duplicate request trong thời gian giới hạn của API |
97 | Checksum không hợp lệ |
99 | Các lỗi khác (lỗi còn lại, không có trong danh sách mã lỗi đã liệt kê) |
Bảng mã lỗi của vnp_ResponseCode - Yêu cầu hoàn trả (refund) | |
00 | Yêu cầu thành công |
02 | Mã định danh kết nối không hợp lệ (kiểm tra lại TmnCode) |
03 | Dữ liệu gửi sang không đúng định dạng |
91 | Không tìm thấy giao dịch yêu cầu hoàn trả |
94 | Giao dịch đã được gửi yêu cầu hoàn tiền trước đó. Yêu cầu này VNPAY đang xử lý |
95 | Giao dịch này không thành công bên VNPAY. VNPAY từ chối xử lý yêu cầu |
97 | Checksum không hợp lệ |
99 | Các lỗi khác (lỗi còn lại, không có trong danh sách mã lỗi đã liệt kê) |
Bảng mã lỗi vnp_TransactionStatus (Bảng mã lỗi tình trạng thanh toán) | |
00 | Giao dịch thanh toán thành công |
01 | Giao dịch chưa hoàn tất |
02 | Giao dịch bị lỗi |
04 | Giao dịch đảo (Khách hàng đã bị trừ tiền tại Ngân hàng nhưng GD chưa thành công ở VNPAY) |
05 | VNPAY đang xử lý giao dịch này (GD hoàn tiền) |
06 | VNPAY đã gửi yêu cầu hoàn tiền sang Ngân hàng (GD hoàn tiền) |
07 | Giao dịch bị nghi ngờ gian lận |
09 | GD Hoàn trả bị từ chối |