"""微信支付相关回调(一期:免确认收款授权结果通知 stub)。 ⚠️ 一期不处理回调内容、不验签:授权状态以主动查询(query_transfer_authorization)为准。 本端点仅向微信回 200 避免重试风暴,**绝不依据回调内容改账**。二期接入时必须先补 V3 平台证书/公钥验签(Wechatpay-Signature) + APIv3 密钥 AEAD 解密,验签通过后方可信任并处理。 授权回调地址通过 settings.WXPAY_AUTH_NOTIFY_URL 配置,需指向本端点的公网地址。 """ from __future__ import annotations import logging from fastapi import APIRouter, Request logger = logging.getLogger("shagua.wxpay") router = APIRouter(prefix="/api/v1/wxpay", tags=["wxpay"]) @router.post("/transfer-auth-notify", summary="免确认收款授权结果通知(一期 stub:仅应答,不处理)") async def transfer_auth_notify(request: Request) -> dict: # 一期:不验签、不解密、不改账。仅记录 + 应答成功;真实授权状态靠 /transfer-auth/status 查询兜底。 try: body = await request.json() logger.info( "transfer-auth notify id=%s type=%s", body.get("id"), body.get("event_type") ) except Exception: # noqa: BLE001 — body 解析失败也照常应答 200,避免微信重试 logger.info("transfer-auth notify (unparseable body)") return {"code": "SUCCESS", "message": "OK"}