微信支付安全接入
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3ff3c268/wechat-pay-security。
技能介绍
为什么需要这套规范
微信支付 v3 的接口路径固定,但真正容易出事故的是安全与状态机:前端 wx.requestPayment 成功不等于已收款,回调可能被重放,密钥一旦进 Git 或日志就不可逆。很多项目卡在「paySign 怎么算」「回调怎么验签」「同一笔通知来了两次怎么办」——本技能把这些写成 P0 清单,而不是散落在各篇教程里。
技能能帮你做什么
- 接入清单:商户号、
APIv3密钥、商户证书、AppID、回调域名等开发前必选项,以及 JSAPI / Native / H5 / 查询 / 关单 / 退款 / 回调各接口的关键注意点。 - FastAPI 骨架生成:产出
wechat_pay_client.py(统一下单、查询、关单、退款、平台证书拉取与验签、回调 AES-256-GCM 解密、build_jsapi_payment()直接给出前端所需的paySign)、router.py(创建订单、带验签与幂等的notify、退款)、.env.example与接入说明。 - 可验证的密码学:脚本带
--self-test,用临时 RSA 与随机 APIv3 密钥跑通签名/验签与回调报文加解密往返,避免盲信生成代码。
边界与注意
生成代码是骨架:订单表与「已处理」标记(幂等落地)需你自行实现;金额必须由服务端计算。apiv3_key 与私钥只放 .env,验签失败不得改订单状态。小程序端只需对 /api/pay/create 返回的 payment 调用 wx.requestPayment;可与小程序安全边界、验收类技能配合使用。
使用场景
- 小程序要收款,需在服务端调 JSAPI 下单并把含 paySign 的参数交给 wx.requestPayment
- 支付成功不能只看前端,要写好异步 notify 路径并完成微信签名验签与幂等
- 用户超时未付或要关单,需按 out_trade_no 调用查询与关单接口做补偿
- 售后退款需走 domestic/refunds,且密钥与商户证书只配置在服务器环境
适合人员
- 用 FastAPI 接微信小程序/公众号支付的后端,要一次性搭好客户端、路由与 .env 模板
- 维护已有收款项目,回调被重复投递导致重复发货,需要落地验签与订单幂等标记
- 从零接入 Native 扫码或 H5 支付,不熟悉 v3 接口表与平台证书轮换规则的全栈工程师
- 把「亲子成长记」类文档里的支付章节抽成可复用模块、并想用 --self-test 验证加解密的实施者