🚀 Thư viện Node.js hiện đại cho tích hợp cổng thanh toán VNPay vào ứng dụng của bạn.
Hỗ trợ TypeScript • Tree-shaking • Modular imports • Minimal dependencies
🎯 Dễ sử dụng | 🧩 Modular | 📘 TypeScript | ⚡ Tối ưu |
---|---|---|---|
API đơn giản & trực quan | Import theo module | Full type support | Tree-shaking ready |
- 📦 Import theo module - Giảm kích thước bundle lên đến 80%
- 🎯 Types-only imports - 0KB runtime cho TypeScript projects
- ⚡ Tối ưu build - Code splitting và tree-shaking
- 🔧 Flexible endpoints - Custom API endpoints
📖 Tài liệu | 🔗 Link | 📝 Mô tả |
---|---|---|
Docs chính thức | vnpay.js.org | Tài liệu chi tiết với ví dụ |
VNPay API | sandbox.vnpayment.vn/apis | Tài liệu chính thức VNPay |
GitHub | github.com/lehuygiang28/vnpay | Source code & Issues |
Tip
NestJS users: Sử dụng nestjs-vnpay
- wrapper tích hợp sẵn cho NestJS.
# NPM
npm install vnpay
# Yarn
yarn add vnpay
# PNPM
pnpm install vnpay
import { VNPay, HashAlgorithm, ProductCode } from 'vnpay';
import { VNPay } from 'vnpay/vnpay';
import { HashAlgorithm, ProductCode } from 'vnpay/enums';
import { VNP_VERSION, PAYMENT_ENDPOINT } from 'vnpay/constants';
import { resolveUrlString, dateFormat } from 'vnpay/utils';
import type { VNPayConfig, BuildPaymentUrl, Bank } from 'vnpay/types-only';
Warning
Thư viện VNPay chỉ dành cho Node.js backend vì sử dụng các module như fs
, crypto
và các API chỉ có trên server.
❌ KHÔNG làm thế này trong React/Vue/Angular components:
import { VNPay } from 'vnpay'; // Error: Module not found: Can't resolve 'fs'
✅ SỬ DỤNG như thế này cho frontend:
import type { VNPayConfig, BuildPaymentUrl, Bank, VerifyReturnUrl } from 'vnpay/types-only';
- Backend (Node.js): Sử dụng import bình thường để xử lý thanh toán
- Frontend (React/Vue/Angular): Chỉ import types để type checking
- API calls: Gọi backend APIs từ frontend thay vì import trực tiếp
import { VNPay, ignoreLogger } from 'vnpay';
const vnpay = new VNPay({
// ⚡ Cấu hình bắt buộc
tmnCode: '2QXUI4B4',
secureSecret: 'your-secret-key',
vnpayHost: 'https://sandbox.vnpayment.vn',
// 🔧 Cấu hình tùy chọn
testMode: true, // Chế độ test
hashAlgorithm: 'SHA512', // Thuật toán mã hóa
enableLog: true, // Bật/tắt log
loggerFn: ignoreLogger, // Custom logger
// 🔧 Custom endpoints
endpoints: {
paymentEndpoint: 'paymentv2/vpcpay.html',
queryDrRefundEndpoint: 'merchant_webapi/api/transaction',
getBankListEndpoint: 'qrpayauth/api/merchant/get_bank_list',
}
});
const paymentUrl = vnpay.buildPaymentUrl({
vnp_Amount: 100000, // 100,000 VND
vnp_IpAddr: '192.168.1.1',
vnp_ReturnUrl: 'https://yourapp.com/return',
vnp_TxnRef: 'ORDER_123',
vnp_OrderInfo: 'Thanh toán đơn hàng #123',
});
console.log('Payment URL:', paymentUrl);
// Xác thực URL return
const verify = vnpay.verifyReturnUrl(req.query);
if (verify.isSuccess) {
console.log('✅ Thanh toán thành công!', verify.message);
} else {
console.log('❌ Thanh toán thất bại:', verify.message);
}
🎉 vnpayjs là dự án mã nguồn mở và hoàn toàn miễn phí!
Nếu thư viện giúp ích cho bạn, hãy tặng cho chúng tôi một ⭐ và mời một ly cà phê ☕

📋 Bước | 🔗 Hành động |
---|---|
1 | Đọc Hướng dẫn đóng góp |
2 | Fork repo và tạo Pull Request |
3 | Tham gia thảo luận trong Issues |
Made with ❤️ in Vietnam