From e872b6d1573150cd7309d3fc10a61673d488c024 Mon Sep 17 00:00:00 2001 From: txai-dev Date: Sun, 13 Sep 2026 12:43:34 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20v3=E6=94=AF=E4=BB=98=E6=8E=A5=E7=BA=BF?= =?UTF-8?q?=E5=95=86=E6=88=B7=E8=AF=81=E4=B9=A6=E2=80=94=E2=80=94=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E7=AD=BE=E5=90=8D=E7=94=A8=E5=95=86=E6=88=B7=E8=AF=81?= =?UTF-8?q?=E4=B9=A6=E5=BA=8F=E5=88=97=E5=8F=B7=EF=BC=88WX=5FPAY=5FMCH=5FC?= =?UTF-8?q?ERT=5FSERIAL=EF=BC=89=EF=BC=8CPUB=5FKEY=5FID=E4=BB=85=E7=94=A8?= =?UTF-8?q?=E4=BA=8E=E5=BA=94=E7=AD=94=E9=AA=8C=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.prod.yml | 1 + server/src/utils/weixin.js | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 3673d99..0aa111a 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -45,6 +45,7 @@ services: - WX_SECRET=${WX_SECRET:-} - WX_PAY_MCH_ID=${WX_PAY_MCH_ID:-} - WX_PAY_SERIAL_NO=${WX_PAY_SERIAL_NO:-} + - WX_PAY_MCH_CERT_SERIAL=${WX_PAY_MCH_CERT_SERIAL:-} - WX_PAY_API_KEY=${WX_PAY_API_KEY:-} - WX_PAY_NOTIFY_URL=${WX_PAY_NOTIFY_URL:-} - ADMIN_USERNAME=${ADMIN_USERNAME:-admin} diff --git a/server/src/utils/weixin.js b/server/src/utils/weixin.js index 9492269..ac36647 100755 --- a/server/src/utils/weixin.js +++ b/server/src/utils/weixin.js @@ -46,7 +46,9 @@ class WeChatService { signer.update(message) signer.end() const signature = signer.sign(this.privateKey, 'base64') - return `WECHATPAY2-SHA256-RFC4648 mchid="${this.mchId}",nonce_str="${nonce}",signature="${signature}",timestamp="${timestamp}",serial_no="${this.serialNo}"` + // 请求头 serial_no 用商户证书序列号;WX_PAY_SERIAL_NO(PUB_KEY_ID_ 开头)是微信支付公钥ID,仅用于验签微信应答 + const requestSerial = process.env.WX_PAY_MCH_CERT_SERIAL || this.serialNo + return `WECHATPAY2-SHA256-RFC4648 mchid="${this.mchId}",nonce_str="${nonce}",signature="${signature}",timestamp="${timestamp}",serial_no="${requestSerial}"` } /**