Python 接入
本页是 Python(FastAPI)商户的完整接入教程,五步走完就能收款,代码都可以整段照抄。 读完本页就能完成接入,其他页面当参考手册,用到再翻。
第一步:确认手里有这些
api_secret 放环境变量或配置中心,不要写进代码,不要提交到代码仓库。
第二步:初始化
第三步:服务端三个路由
充值功能在服务端就是三个路由:下单、收回调、给前端查状态。以下可直接粘贴:
webhook 路由的第一行必须是 await request.body() 拿原文。签名针对请求体原始字节,
任何先做 JSON 解析的写法都会导致验签失败。这是接入中最常踩的一个坑。
第四步:前端充值页
前端要做的只有两件事:展示 pay_url、轮询自家后端的订单状态。两条渠道的 pay_url 用法不同:
支付宝给的是一个可嵌入的网页,放 iframe 就行;银商聚合码给的是二维码内容,要用二维码库
渲染成码图(放 iframe 会白屏,电脑浏览器直接打开会提示不支持)。按后端返回的 channel 分支即可:
完整写法见 demo 压缩包里的 demo.html,三种支付方式各一个按钮。
要点:支付完成时 PC 页面不会收到任何事件,靠的就是这个轮询;到账的依据是你后端的 订单状态(由 webhook 驱动),不是支付页的跳转。
银商聚合码的两点说明
一张码微信、支付宝、云闪付都能扫,用哪个钱包由用户扫码的 App 决定。回调、查单、退款和 支付宝渠道完全一致,服务端不用做任何额外处理。
页面在微信里打开(公众号菜单、聊天链接)时展示二维码是没法付的——改传
pay_mode="redirect"(可带 return_url),拿到的 pay_url 直接整页跳转过去,
银商收银台会唤起微信支付,你不需要有自己的公众号。
参数细节与微信内完整示例见发起支付。
第五步:上线前核对
按 联调与上线 的用例走一遍(真实支付 0.01 元,验完退款收回),每步预期如下:
本地开发收不到回调时:回调地址需公网可达(内网穿透),排查前先用查单接口确认支付 本身是否成功。遇到任何报错,直接查常见问题排查,按症状对号入座。