Nhảy tới nội dung

Truy vấn kết quả giao dịch (queryDr)

Đâ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.

warning
  • queryDr hiện đang thích hợp với thanh toán PAY
  • token, trả góp, định kỳ hiện chưa tương thích

QueryDR

import { QueryDr, QueryDrResponse, getDateInGMT7, dateFormat } from 'vnpay';

/* ... */

/**
* Date phải là timezone GMT+7
* Và format theo định dạng `yyyyMMddHHmmss`
* Dùng 2 hàm `getDateInGMT7` và `dateFormat` để chuyển đổi
*/
const date = dateFormat(getDateInGMT7(new Date('2024/05/21')));

const res: QueryDrResponse = await vnpay.queryDr({
vnp_RequestId: generateRandomString(16),
vnp_IpAddr: '1.1.1.1',
vnp_TxnRef: '1716257871703',
vnp_TransactionNo: 14422574,
vnp_OrderInfo: 'Thanh toan don hang',
vnp_TransactionDate: date,
vnp_CreateDate: date,
} as QueryDr);

Các thuộc tính

QueryDr

Thuộc tínhKiểu dữ liệuMô tả
vnp_RequestIdstringMã yêu cầu truy vấn kết quả giao dịch. Mã này phải là duy nhất trong mỗi yêu cầu truy vấn.
vnp_IpAddrstringĐịa chỉ IP của máy khách hàng.
vnp_TxnRefstringMã giao dịch của hệ thống merchant.
vnp_TransactionNonumberMã giao dịch của hệ thống VNPAY.
vnp_OrderInfostringThông tin đơn hàng.
vnp_TransactionDatenumberThời gian giao dịch.
vnp_CreateDatenumberThời gian tạo giao dịch.

QueryDrResponse

Thuộc tínhKiểu dữ liệuMô tả
isSuccessbooleanKết quả của yêu cầu
isVerifiedbooleanKết quả xác thực tính toàn vẹn của dữ liệu khi nhận về từ VNPay
messagestringThông báo xác thực
......Các tham số khác của VNPay sẽ trả về, tham khảo tại đây

Xem thêm các thuộc tính VNPay sẽ trả về tại VNPay.

mẹo

Các tham số mà VNPay trả về cũng nằm trong đối tượng QueryDrResponse.

Sử dụng

Với logger

  • Để có thể sử dụng logger, bạn cần phải khởi tạo VNPay với enableLogtrue.
import { QueryDr, QueryDrResponse, getDateInGMT7, dateFormat } from 'vnpay';

/* ... */

/**
* Date phải là timezone GMT+7
* Và format theo định dạng `yyyyMMddHHmmss`
* Dùng 2 hàm `getDateInGMT7` và `dateFormat` để chuyển đổi
*/
const date = dateFormat(getDateInGMT7(new Date('2024/05/21')));

const res: QueryDrResponse = await vnpay.queryDr(
{
vnp_RequestId: generateRandomString(16),
vnp_IpAddr: '1.1.1.1',
vnp_TxnRef: '1716257871703',
vnp_TransactionNo: 14422574,
vnp_OrderInfo: 'Thanh toan don hang',
vnp_TransactionDate: date,
vnp_CreateDate: date,
} as QueryDr,
{
logger: {
type: 'all',
loggerFn: (data) => {
console.log(data.message);

// Hoặc gửi log lên server, database, ...
},
},
},
);