Chuyển tới nội dung chính

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 trong hệ thống VNPAY.

cảnh báo
  • queryDr hiện chỉ phù hợp cho các giao dịch thanh toán PAY
  • Các loại thanh toán token, installmentperiodic chưa tương thích

QueryDR

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

/* ... */

/**
* Ngày phải ở múi giờ GMT+7
* Và được định dạng theo `yyyyMMddHHmmss`
* Sử dụng các 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);

Thuộc tính

QueryDr

Thuộc tínhKiểu dữ liệuMô tả
vnp_RequestIdstringID yêu cầu truy vấn kết quả giao dịch. ID này phải là duy nhất cho mỗi yêu cầu.
vnp_IpAddrstringĐịa chỉ IP của máy khách.
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 dữ liệu khi nhận từ VNPay
messagestringThông điệp xác thực
......Các tham số khác mà VNPay sẽ trả về, tham khảo tài liệu chính thức

Xem thêm các thuộc tính mà VNPay sẽ trả về trong tài liệu chính thức.

mẹo

Tất cả các tham số được VNPay trả về đều có trong đối tượng QueryDrResponse.

Cách sử dụng

Với Logger

  • Để sử dụng logger, bạn cần khởi tạo VNPay với enableLog được đặt là true.
import { QueryDr, QueryDrResponse, getDateInGMT7, dateFormat } from 'vnpay';

/* ... */

/**
* Ngày phải ở múi giờ GMT+7
* Và được định dạng theo `yyyyMMddHHmmss`
* Sử dụng các 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 đến server, cơ sở dữ liệu, v.v.
},
},
},
);