Skip to main content

微信服务商支付

提示

现在服务商合作伙伴了,这个名字感觉改的不错,感觉尊重感上来了。

介绍

微信服务商支付给有技术能力的公司开了一个后门,有技术的公司帮助普通商户来接入微信支付,收取的过路费服务商和微信一起分账,有些公司专门靠这个生活。

本插件的做法是仅支持1个服务商,但是特约商户可以有很多个,拓扑结构如下所示:

微信服务商支付拓扑图

安装和配置

$ pnpm add @iot9x.com/nestjs-pay

配置:

@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
validationSchema: ConfigValidation,
validationOptions: {
allowUnknown: true,
abortEarly: true
},
load: [WechatProviderPayConfigRegister]
}),
// 异步方式
PayModule.forRootAsync({
useFactory: (wechatProviderPayConfig: ConfigType<typeof WechatProviderPayConfigRegister>) => ({
wechatProvider: { // 微信服务商支付相关配置
appid: wechatProviderPayConfig.appid,
mchid: wechatProviderPayConfig.mchid,
apiKeyV3: wechatProviderPayConfig.apiKeyV3,
publicKey: readFileSync(process.cwd() + wechatProviderPayConfig.publicKeyPath),
privateKey: readFileSync(process.cwd() + wechatProviderPayConfig.privateKeyPath),
apps: [
{
app: WECHAT_PROVIDER_APP1,
appid: wechatProviderPayConfig.app1.appid,
mchid: wechatProviderPayConfig.app1.mchid
},
{
app: WECHAT_PROVIDER_APP2,
appid: wechatProviderPayConfig.app2.appid,
mchid: wechatProviderPayConfig.app2.mchid
}
]
}
}),
inject: [WechatProviderPayConfigRegister.KEY]
})
// 同步方式
PayModule.forRoot({
wechatProvider: { // 微信服务商支付相关配置
appid: '微信服务商appid',
mchid: '微信服务商商户号',
apiKeyV3: '微信服务商V3版apiKey',
publicKey: readFileSync(process.cwd() + '/certs/wechat-provider-pay/apiclient_cert.pem'),
privateKey: readFileSync(process.cwd() + '/certs/wechat-provider-pay/apiclient_key.pem'),
apps: [
{
app: WECHAT_PROVIDER_APP1,
appid: '特约商户(子商户)1的appid',
mchid: '特约商户(子商户)1的商户号'
},
{
app: WECHAT_PROVIDER_APP2,
appid: '特约商户(子商户)2的appid',
mchid: '特约商户(子商户)2的商户号'
}
]
}
})
],
})
export class AppModule {}
提示

关于插件的参数配置这部分,是做了考量的,详见文档:设计理念

支付文档