|
|
@@ -1,4 +1,4 @@
|
|
|
-import { Inject, Injectable } from '@nestjs/common'
|
|
|
+import { Inject, Injectable, Logger } from '@nestjs/common'
|
|
|
import weixinConfig from './weixin.config'
|
|
|
import { ConfigType } from '@nestjs/config'
|
|
|
import {
|
|
|
@@ -22,7 +22,6 @@ import { AccessToken } from './entities/accessToken.entity'
|
|
|
import { LessThan, Not, Repository } from 'typeorm'
|
|
|
import { addSeconds } from 'date-fns'
|
|
|
import * as fs from 'node:fs'
|
|
|
-const { Wechatpay } = require('wechatpay-axios-plugin');
|
|
|
|
|
|
@Injectable()
|
|
|
export class WeixinService {
|
|
|
@@ -38,26 +37,6 @@ export class WeixinService {
|
|
|
ApiConfigKit.devMode = true
|
|
|
// 设置当前应用
|
|
|
ApiConfigKit.setCurrentAppId(apiConfig.getAppId)
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- const wxpay = new Wechatpay({
|
|
|
- mchid: weixinConfiguration.mchId,
|
|
|
- serial: merchantCertificateSerial,
|
|
|
- privateKey: merchantPrivateKeyInstance,
|
|
|
- certs: { [platformCertificateSerial]: platformCertificateInstance, },
|
|
|
- // 使用APIv2时,需要至少设置 `secret`字段,示例代码未开启
|
|
|
- // APIv2密钥(32字节)
|
|
|
- // secret: 'your_merchant_secret_key_string',
|
|
|
- // // 接口不要求证书情形,例如仅收款merchant对象参数可选
|
|
|
- // merchant: {
|
|
|
- // cert: readFileSync('/path/to/merchant/apiclient_cert.pem'),
|
|
|
- // key: merchantPrivateKeyInstance,
|
|
|
- // // or
|
|
|
- // // passphrase: 'your_merchant_id',
|
|
|
- // // pfx: fs.readFileSync('/your/merchant/cert/apiclient_cert.p12'),
|
|
|
- // },
|
|
|
- });
|
|
|
}
|
|
|
|
|
|
async getAccessToken() {
|
|
|
@@ -116,28 +95,28 @@ export class WeixinService {
|
|
|
WX_API_TYPE.UNIFIED_ORDER,
|
|
|
this.weixinConfiguration.mchId,
|
|
|
this.weixinConfiguration.certSerial,
|
|
|
- fs.readFileSync('/Users/drew/Downloads/1642294106_20230418_cert 2/apiclient_key.pem'),
|
|
|
+ fs.readFileSync(__dirname + '/src/cert/apiclient_key.pem'),
|
|
|
xml
|
|
|
)
|
|
|
console.log(result)
|
|
|
}
|
|
|
|
|
|
- async pay1() {
|
|
|
+ async getCert() {
|
|
|
try {
|
|
|
let result = await PayKit.exeGet(
|
|
|
WX_DOMAIN.CHINA, //
|
|
|
WX_API_TYPE.GET_CERTIFICATES,
|
|
|
this.weixinConfiguration.mchId,
|
|
|
this.weixinConfiguration.certSerial,
|
|
|
- fs.readFileSync('/Users/drew/Downloads/1642294106_20230418_cert 2/apiclient_key.pem')
|
|
|
+ fs.readFileSync('src/cert/apiclient_key.pem')
|
|
|
)
|
|
|
- console.log(`result.data:${result.data}`)
|
|
|
+ Logger.log(`result.data:${result.data}`)
|
|
|
|
|
|
// 应答报文主体
|
|
|
let data = JSON.stringify(result.data)
|
|
|
// 应答状态码
|
|
|
- console.log(`status:${result.status}`)
|
|
|
- console.log(`data:${data}`)
|
|
|
+ Logger.log(`status:${result.status}`)
|
|
|
+ Logger.log(`data:${data}`)
|
|
|
// http 请求头
|
|
|
let headers = result.headers
|
|
|
// 证书序列号
|
|
|
@@ -149,23 +128,23 @@ export class WeixinService {
|
|
|
// 应答签名
|
|
|
let signature = headers['wechatpay-signature']
|
|
|
|
|
|
- console.log(`serial:\n${serial}`)
|
|
|
- console.log(`timestamp:\n${timestamp}`)
|
|
|
- console.log(`nonce:\n${nonce}`)
|
|
|
- console.log(`signature:\n${signature}`)
|
|
|
+ Logger.log(`serial:\n${serial}`)
|
|
|
+ Logger.log(`timestamp:\n${timestamp}`)
|
|
|
+ Logger.log(`nonce:\n${nonce}`)
|
|
|
+ Logger.log(`signature:\n${signature}`)
|
|
|
|
|
|
// 根据序列号查证书 验证签名
|
|
|
// let verifySignature: boolean = PayKit.verifySignature(signature, data, nonce, timestamp, wxPublicKey)
|
|
|
let verifySignature: boolean = PayKit.verifySign(
|
|
|
headers,
|
|
|
data,
|
|
|
- fs.readFileSync('/Users/drew/Downloads/1642294106_20230418_cert 2/apiclient_cert.pem')
|
|
|
+ fs.readFileSync('src/cert/apiclient_cert.pem')
|
|
|
)
|
|
|
- console.log(`verifySignature:${verifySignature}`)
|
|
|
+ Logger.log(`verifySignature:${verifySignature}`)
|
|
|
|
|
|
return data
|
|
|
} catch (error) {
|
|
|
- console.log(error)
|
|
|
+ Logger.error(error)
|
|
|
}
|
|
|
}
|
|
|
}
|