diff --git a/sundynix-admin/src/api.ts b/sundynix-admin/src/api.ts index 758c149..0b5bdc7 100644 --- a/sundynix-admin/src/api.ts +++ b/sundynix-admin/src/api.ts @@ -231,6 +231,8 @@ export interface WechatPayConfig { mchid: string; cert_serial: string; private_key_path: string; + public_key_path: string; // 微信支付公钥(2024 起新商户体系;本商户 2025-09 开户) + public_key_id: string; // PUB_KEY_ID_ 开头 appid: string; notify_url: string; has_apiv3_key: boolean; @@ -248,6 +250,8 @@ export async function saveWechatPay(body: { mchid: string; cert_serial: string; private_key_path: string; + public_key_path: string; + public_key_id: string; apiv3_key: string; appid: string; notify_url: string; diff --git a/sundynix-admin/src/components/TopupChannels.tsx b/sundynix-admin/src/components/TopupChannels.tsx index 4268cad..4d7eec1 100644 --- a/sundynix-admin/src/components/TopupChannels.tsx +++ b/sundynix-admin/src/components/TopupChannels.tsx @@ -29,7 +29,7 @@ export function TopupChannels() { // APIv3 密钥只写不回显(密文入库,与模型 API Key 同一把密钥加密); // 商户证书私钥文件放服务器磁盘,这里只填路径。 function WechatConfigBlock() { - const empty: WechatPayConfig = { mchid: "", cert_serial: "", private_key_path: "", appid: "", notify_url: "", has_apiv3_key: false }; + const empty: WechatPayConfig = { mchid: "", cert_serial: "", private_key_path: "", public_key_path: "", public_key_id: "", appid: "", notify_url: "", has_apiv3_key: false }; const [cfg, setCfg] = useState(empty); const [apiv3, setApiv3] = useState(""); // 留空=沿用已存 const [enabled, setEnabled] = useState(false); @@ -56,6 +56,8 @@ function WechatConfigBlock() { mchid: cfg.mchid, cert_serial: cfg.cert_serial, private_key_path: cfg.private_key_path, + public_key_path: cfg.public_key_path, + public_key_id: cfg.public_key_id, apiv3_key: apiv3, // 空串=后端沿用旧密钥 appid: cfg.appid, notify_url: cfg.notify_url, @@ -102,6 +104,8 @@ function WechatConfigBlock() { {field("API 证书序列号", "cert_serial", "5157F09E…")} {field("appid(公众号/小程序)", "appid", "wx88888888")} {field("商户私钥文件路径(服务器磁盘)", "private_key_path", "/etc/sundynix/wechat/apiclient_key.pem", "md:col-span-2")} + {field("公钥 ID(PUB_KEY_ID_ 开头)", "public_key_id", "PUB_KEY_ID_01…")} + {field("微信支付公钥文件路径(服务器磁盘)", "public_key_path", "/etc/sundynix/wechat/pub_key.pem", "md:col-span-2")}