From bb5116ffd6b622890641796f6db20aeccb4b5826 Mon Sep 17 00:00:00 2001 From: wwwwwwwww <526125649@qq.com> Date: Thu, 11 Jun 2026 18:24:06 +0800 Subject: [PATCH] 1 --- .../src/pages/AdminPaymentConfig.tsx | 5 +++++ video-gen-api/app/api/v1/payments.py | 3 ++- video-gen-api/app/services/payment.py | 19 +++++++++++++------ 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/video-gen-admin/src/pages/AdminPaymentConfig.tsx b/video-gen-admin/src/pages/AdminPaymentConfig.tsx index 279aeb69..866b65da 100644 --- a/video-gen-admin/src/pages/AdminPaymentConfig.tsx +++ b/video-gen-admin/src/pages/AdminPaymentConfig.tsx @@ -21,6 +21,7 @@ const AdminPaymentConfig: React.FC = () => { const map: Record = {}; data.forEach((c: any) => { map[c.key] = c.value; }); form.setFieldsValue({ + wechat_appid: map['payment_wechat_appid'] || '', wechat_mch_id: map['payment_wechat_mch_id'] || '', wechat_private_key: map['payment_wechat_private_key'] || '', wechat_cert_serial_no: map['payment_wechat_cert_serial_no'] || '', @@ -52,6 +53,7 @@ const AdminPaymentConfig: React.FC = () => { await batchUpdatePaymentConfigs({ payment_mock: String(mockMode), payment_wechat_enabled: String(wechatEnabled), + payment_wechat_appid: values.wechat_appid || '', payment_wechat_mch_id: values.wechat_mch_id || '', payment_wechat_private_key: values.wechat_private_key || '', payment_wechat_cert_serial_no: values.wechat_cert_serial_no || '', @@ -151,6 +153,9 @@ const AdminPaymentConfig: React.FC = () => {
+ + + diff --git a/video-gen-api/app/api/v1/payments.py b/video-gen-api/app/api/v1/payments.py index 44edb008..717fd944 100644 --- a/video-gen-api/app/api/v1/payments.py +++ b/video-gen-api/app/api/v1/payments.py @@ -111,9 +111,10 @@ async def wechat_callback(request: Request, db: AsyncSession = Depends(get_db)): private_key = db_configs.get("payment_wechat_private_key", "") cert_serial_no = db_configs.get("payment_wechat_cert_serial_no", "") api_v3_key = db_configs.get("payment_wechat_api_v3_key", "") + appid = db_configs.get("payment_wechat_appid", "") gateway = db_configs.get("payment_wechat_gateway", "") - client = _get_wechat_client(mch_id, private_key, cert_serial_no, api_v3_key, gateway) + client = _get_wechat_client(mch_id, private_key, cert_serial_no, api_v3_key, appid, gateway) if not client: logger.error("WeChat client not initialized for callback") return {"code": "SUCCESS", "message": "OK"} diff --git a/video-gen-api/app/services/payment.py b/video-gen-api/app/services/payment.py index 5f0133f0..35b1169e 100644 --- a/video-gen-api/app/services/payment.py +++ b/video-gen-api/app/services/payment.py @@ -280,6 +280,7 @@ async def create_recharge_order( raise ValueError("支付宝支付未完成配置,请联系管理员") elif method == "wechat": required_configs = [ + "payment_wechat_appid", "payment_wechat_mch_id", "payment_wechat_private_key", "payment_wechat_cert_serial_no", @@ -355,6 +356,7 @@ def _get_wechat_client( private_key: str, cert_serial_no: str, api_v3_key: str, + appid: str, gateway: str = "" ): """Get or create a WeChat Pay client. Recreated if config changes.""" @@ -384,7 +386,8 @@ def _get_wechat_client( mchid=mch_id, private_key=private_key_str, cert_serial_no=cert_serial_no, - apiv3_private_key=api_v3_key, + appid=appid, + apiv3_key=api_v3_key, gateway=gateway or "https://api.mch.weixin.qq.com", ) _wechat_mch_id = mch_id @@ -407,14 +410,15 @@ def _create_wechat_order(order: PaymentOrder, db_configs: dict[str, str]) -> str private_key = db_configs.get("payment_wechat_private_key", "") cert_serial_no = db_configs.get("payment_wechat_cert_serial_no", "") api_v3_key = db_configs.get("payment_wechat_api_v3_key", "") + appid = db_configs.get("payment_wechat_appid", "") gateway = db_configs.get("payment_wechat_gateway", "") notify_url = db_configs.get("payment_wechat_notify_url", "") - if not all([mch_id, private_key, cert_serial_no, api_v3_key]): + if not all([mch_id, private_key, cert_serial_no, api_v3_key, appid]): logger.warning("WeChat payment config missing in database") return None - client = _get_wechat_client(mch_id, private_key, cert_serial_no, api_v3_key, gateway) + client = _get_wechat_client(mch_id, private_key, cert_serial_no, api_v3_key, appid, gateway) if client is None: return None @@ -456,9 +460,10 @@ async def _close_wechat_order(db: AsyncSession, order: PaymentOrder, db_configs: private_key = db_configs.get("payment_wechat_private_key", "") cert_serial_no = db_configs.get("payment_wechat_cert_serial_no", "") api_v3_key = db_configs.get("payment_wechat_api_v3_key", "") + appid = db_configs.get("payment_wechat_appid", "") gateway = db_configs.get("payment_wechat_gateway", "") - client = _get_wechat_client(mch_id, private_key, cert_serial_no, api_v3_key, gateway) + client = _get_wechat_client(mch_id, private_key, cert_serial_no, api_v3_key, appid, gateway) if client is None: return False @@ -488,9 +493,10 @@ async def _query_wechat_order(db: AsyncSession, order: PaymentOrder, db_configs: private_key = db_configs.get("payment_wechat_private_key", "") cert_serial_no = db_configs.get("payment_wechat_cert_serial_no", "") api_v3_key = db_configs.get("payment_wechat_api_v3_key", "") + appid = db_configs.get("payment_wechat_appid", "") gateway = db_configs.get("payment_wechat_gateway", "") - client = _get_wechat_client(mch_id, private_key, cert_serial_no, api_v3_key, gateway) + client = _get_wechat_client(mch_id, private_key, cert_serial_no, api_v3_key, appid, gateway) if client is None: return None @@ -530,9 +536,10 @@ async def _refund_wechat_order( private_key = db_configs.get("payment_wechat_private_key", "") cert_serial_no = db_configs.get("payment_wechat_cert_serial_no", "") api_v3_key = db_configs.get("payment_wechat_api_v3_key", "") + appid = db_configs.get("payment_wechat_appid", "") gateway = db_configs.get("payment_wechat_gateway", "") - client = _get_wechat_client(mch_id, private_key, cert_serial_no, api_v3_key, gateway) + client = _get_wechat_client(mch_id, private_key, cert_serial_no, api_v3_key, appid, gateway) if client is None: return {"success": False, "message": "微信支付客户端初始化失败"}