安装配置
安装
- pnpm
- yarn
- npm
$ pnpm add @iot9x.com/nestjs-wechat-pay-provider
$ yarn add @iot9x.com/nestjs-wechat-pay-provider
$ npm i @iot9x.com/nestjs-wechat-pay-provider
配置
同步方式
import { Module } from '@nestjs/common';
import { readFileSync } from 'node:fs';
import { WechatPayProviderModule } from '@iot9x.com/nestjs-wechat-pay-provider';
@Module({
imports: [
WechatPayProviderModule.forRoot({
appid: '服务商公众号appid',
mchid: '服务商商户号',
subAppid: '子商户应用appid',
subMchid: '子商户商户号',
apiKeyV3: '服务商商户APIv3密钥',
publicKey: readFileSync('商户证书公钥路径'),
privateKey: readFileSync('商户证书私钥路径'),
serialNo: '证书序列号',
sandbox: false
})
]
})
export class AppModule {}
异步方式
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigType } from '@nestjs/config';
import { readFileSync } from 'node:fs';
import { WechatPayProviderModule } from '@iot9x.com/nestjs-wechat-pay-provider';
import { WechatPayRegister } from './modules/config/registers/wechatPay.register';
import { ConfigValidation } from './modules/config/validations/config.validation';
@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
validationSchema: ConfigValidation,
validationOptions: {
allowUnknown: true,
abortEarly: true
},
load: [WechatPayRegister]
}),
WechatPayProviderModule.forRootAsync({
useFactory: (wechatPayConfig: ConfigType<typeof WechatPayRegister>) => ({
appid: wechatPayConfig.appid,
mchid: wechatPayConfig.mchid,
subAppid: wechatPayConfig.subAppid,
subMchid: wechatPayConfig.subMchid,
apiKeyV3: wechatPayConfig.apiKeyV3,
publicKey: readFileSync(process.cwd() + wechatPayConfig.publicKeyPath),
privateKey: readFileSync(process.cwd() + wechatPayConfig.privateKeyPath),
sandbox: false
}),
inject: [WechatPayRegister.KEY]
})
]
})
export class AppModule {}
配置参数说明
参数 | 是否必传 | 类型 | 默认值 | 说明 |
---|---|---|---|---|
appid | 是 | string | - | 服务商公众号 appid |
mchid | 是 | string | - | 服务商商户号 |
subAppid | 否 | string | undefined | 子商户 appid |
subMchid | 是 | string | - | 子商户号 |
apiKeyV3 | 是 | string | - | 服务商的 APIv3 密钥 |
publicKey | 是 | Buffer | - | 服务商商户证书公钥,请使用 fs.readFileSync() 方法读取 |
privateKey | 是 | Buffer | - | 服务商商户证书私钥,请使用 fs.readFileSync() 方法读取 |
serialNo | 否 | string | undefined | 服务商证书序列号,证书序列号可以通过公钥来间接获取,因此非必须参数 |
sandbox | 否 | boolean | false | 微信支付启用沙箱环境 |