@khoimd/nestjs-vnpay
Version:
NestJS module wrapper for VNPay payment gateway integration based on the vnpay package
129 lines (96 loc) • 3.85 kB
Markdown
<div align="center">
# 📦 nestjs-vnpay
[🇻🇳 Tiếng Việt](./README.md) | [🇺🇸 English](./README_en-US.md)
[](https://www.npmjs.com/package/nestjs-vnpay)
[](https://www.npmjs.com/package/nestjs-vnpay)
[](https://www.npmjs.com/package/nestjs-vnpay)
**Module tích hợp cổng thanh toán [VNPay](https://vnpay.vn) cho NestJS, dựa trên gói [vnpay](https://www.npmjs.com/package/vnpay)**
</div>
## 📚 Tài liệu
**Nguồn tài liệu hữu ích:**
- [vnpay.js.org](https://vnpay.js.org/) - Tài liệu chi tiết của thư viện
- [sandbox.vnpayment.vn/apis](https://sandbox.vnpayment.vn/apis) - Tài liệu tích hợp chính thức từ VNPay
## 🚀 Cài đặt
```bash
# NPM
npm install nestjs-vnpay vnpay
# Yarn
yarn add nestjs-vnpay vnpay
# PNPM
pnpm install nestjs-vnpay vnpay
```
## 💡 Sử dụng
### Khởi tạo VnpayModule
#### Khởi tạo đồng bộ:
```ts
import { Module } from '@nestjs/common';
import { VnpayModule } from 'nestjs-vnpay';
import { ignoreLogger } from 'vnpay';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [
VnpayModule.register({
tmnCode: 'YOUR_TMN_CODE',
secureSecret: 'YOUR_SECURE_SECRET',
vnpayHost: 'https://sandbox.vnpayment.vn',
// Cấu hình tùy chọn
testMode: true, // Chế độ test (ghi đè vnpayHost thành sandbox nếu là true)
hashAlgorithm: 'SHA512', // Thuật toán mã hóa
enableLog: true, // Bật/tắt ghi log
loggerFn: ignoreLogger, // Hàm xử lý log tùy chỉnh
})
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
```
#### Khởi tạo bất đồng bộ (với ConfigService):
```ts
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { VnpayModule } from 'nestjs-vnpay';
import { ignoreLogger } from 'vnpay';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@Module({
imports: [
ConfigModule.forRoot({
envFilePath: '.env',
}),
VnpayModule.registerAsync({
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({
secureSecret: configService.getOrThrow<string>('VNPAY_SECURE_SECRET'),
tmnCode: configService.getOrThrow<string>('VNPAY_TMN_CODE'),
loggerFn: ignoreLogger,
}),
inject: [ConfigService],
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
```
### Sử dụng trong service
```ts
import { Injectable } from '@nestjs/common';
import { VnpayService } from 'nestjs-vnpay';
@Injectable()
export class AppService {
constructor(private readonly vnpayService: VnpayService) {}
async getBankList() {
return this.vnpayService.getBankList();
}
/* ... các phương thức khác ... */
}
```
## 🤝 Hỗ trợ & Đóng góp
**nestjs-vnpay là một dự án mã nguồn mở**
Nếu bạn thấy thư viện hữu ích:
- Tặng sao ⭐️ trên [GitHub](https://github.com/lehuygiang28/nestjs-vnpay)
- Các đóng góp luôn được đón nhận! Hãy tạo một issue hoặc pull request nếu bạn có bất kỳ đề xuất, cải thiện hoặc câu hỏi nào.
## 📄 Giấy phép
[MIT](LICENSE) © [Lê Huy Giang](https://github.com/lehuygiang28)