VNPay utilities module based on the vnpay package
Tài liệu của thư viện: vnpay.js.org
Tài liệu từ VNPay: sandbox.vnpayment.vn/apis
Cài đặt nestjs-vnpay
với npm
:
$ npm install nestjs-vnpay vnpay
Cài đặt nestjs-vnpay
với yarn
:
$ yarn add nestjs-vnpay vnpay
Cài đặt nestjs-vnpay
với pnpm
:
$ pnpm install nestjs-vnpay vnpay
- Khởi tạo đồng bộ:
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',
testMode: true, // tùy chọn, ghi đè vnpayHost thành sandbox nếu là true
hashAlgorithm: 'SHA512', // tùy chọn
/**
* Sử dụng enableLog để bật/tắt logger
* Nếu enableLog là false, loggerFn sẽ không được sử dụng trong bất kỳ phương thức nào
*/
enableLog: true, // tùy chọn
/**
* Hàm `loggerFn` sẽ được gọi để ghi log
* Mặc định, loggerFn sẽ ghi log ra console
* Bạn có thể ghi đè loggerFn để ghi log ra nơi khác
*
* `ignoreLogger` là một hàm không làm gì cả
*/
loggerFn: ignoreLogger, // tùy chọn
})
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
- Hoặc khởi tạo bất đồng bộ, ví dụ sử dụng
ConfigService
:
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 {}
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 đó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.