微信支付 & 支付宝 — 部署与问题总结


更新时间:2026-07-10



一、微信支付 ✅ 已上线


配置


项目值
------
商户号1115016766(普通商户)
AppIDwx0dbbb415f5f5527d(小程序 AppID)
支付方式Native 扫码支付
回调地址`https://qianshi.cool/api/payment/wx_notify`

全部问题及解决


问题原因解决
---------
接口报 NO_AUTH商户为「特约商户」,无 Native 支付权限重新申请直连商户号 1115016766
Native 支付要求 AppIDAPI v3 必填 appid 参数使用小程序 AppID `wx0dbbb415f5f5527d`(实测可用)
回调 trade_no/state 为空v3 回调 `resource` 字段是 AEAD_AES_256_GCM 加密的,直接 `json.loads` 读不到手写 `cryptography.AESGCM` 解密,不依赖 SDK `callback()`
SDK callback() 报 "does not support algorithm: "SDK 内部验签/解密流程与回调格式不兼容弃用 SDK callback(),手动解密
金额小数被拒`int(0.1)` → 0,后端校验 `amount<0.1` 失败所有金额改用 `float()`
gunicorn 日志无输出`logging.getLogger('app')` 不输出到 gunicorn用 `sys.stderr.write()` + `flush()`
本地充值看不到记录回调 URL `qianshi.cool` 指向云端,本地和云端是独立数据库充值必须走 `https://qianshi.cool/recharge`
多次充值积分未到账上述回调加解密问题导致回调失败修复后手动补积分

解密核心代码


if algorithm == "AEAD_AES_256_GCM" and ciphertext:
    key = WECHAT_API_V3_KEY.encode("utf-8")
    aesgcm = AESGCM(key)
    plaintext = aesgcm.decrypt(nonce_bytes, base64.b64decode(ciphertext), ad_bytes)
    resource = json.loads(plaintext.decode("utf-8"))



二、支付宝 ✅ 已上线


配置


项目值
------
APPID2021006171615599
签约产品电脑网站支付
回调地址`https://qianshi.cool/api/payment/alipay_notify`
签名方式RSA2

全部问题及解决


问题原因解决
---------
insufficient-isv-permissions应用签约后权限未刷新新建应用 `2021006171615599`,重新签约
签名配置错误`missing-signature-config`,公钥/私钥不匹配用支付宝开放平台助手重新生成 RSA2 密钥对,上传应用公钥
应用未上线应用状态为「审核中」等待审核通过后点击「上线」
金额小数报错`int()` 截断小数改用 `float()`
回调验签失败Flask `request.form` 处理参数导致验签失败用 `request.get_data()` 获取原始 body,`parse_qsl()` 解析
支付页面 ISV 权限不足开发平台和商家中心分离:open.alipay.com 管应用,b.alipay.com 管签约两个平台都要配置

回调处理核心代码


from urllib.parse import parse_qsl
raw = request.get_data().decode("utf-8")
data = dict(parse_qsl(raw))



三、充值页面


功能状态
------
套餐充值微信/支付宝按钮
自定义金额0.1-10000 元,支持 2 位小数
支付方式提示微信扫码支付 / 支付宝支付
充值记录个人中心 + 管理员界面

四、测试


# 微信
curl -X POST http://127.0.0.1:8899/api/payment/custom -H 'Content-Type: application/json' -d '{"amount":0.1}'
# → {"ok":true, "qr_url":"weixin://..."}

# 支付宝
curl -X POST http://127.0.0.1:8899/api/payment/alipay -H 'Content-Type: application/json' -d '{"amount":0.1}'
# → {"ok":true, "pay_url":"https://openapi.alipay.com/..."}

充值必须走云端 `https://qianshi.cool/recharge`,本地无法接收回调。

千视科技 · 支付总结 · 2026-07-10