Skip to content

lehuygiang28/nestjs-vnpay

Repository files navigation

nestjs-vnpay

VI | EN

NPM Version Package License NPM Downloads

VNPay utilities module based on the vnpay package

Tài liệu

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

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

Sử dụng

Khởi tạo VnpayModule

  • 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 {}

Sử dụng trong service

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();
  }

  /* ... */
}

🙌 Đóng góp

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 © Lê Huy Giang