x1ongzhu il y a 2 ans
Parent
commit
80f6206775
2 fichiers modifiés avec 20 ajouts et 35 suppressions
  1. 6 0
      src/weixin/weixin.controller.ts
  2. 14 35
      src/weixin/weixin.service.ts

+ 6 - 0
src/weixin/weixin.controller.ts

@@ -20,6 +20,12 @@ export class WeixinController {
         return await this.weixinService.code2oenId(code)
     }
 
+
+    @Get('/getCert')    
+    public async getCert() {
+        return await this.weixinService.getCert()
+    }
+
     @Get('/pay')    
     public async pay() {
         return await this.weixinService.pay()

+ 14 - 35
src/weixin/weixin.service.ts

@@ -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)
         }
     }
 }