← ClaudeAtlas

jsapinativelisted

给小程序/公众号接微信支付,强制回调验签、幂等、密钥隔离。适合任何要收款的微信应用。
shuangying0001-beep/wechat-pay-integration · ★ 0 · API & Backend · score 69
Install: claude install-skill shuangying0001-beep/wechat-pay-integration
# 微信支付安全接入 > 来源:亲子成长记施工包 `AI要怎么做.md §3.3 微信支付`,已抽离项目名,成为通用接入规范。 ## 这是什么 微信支付接入有固定的接口与一套**安全铁律**(回调验签、幂等、密钥保管)。本技能既给"必须实现"的清单,又能生成一套 FastAPI 支付模块骨架(路由 + 微信支付客户端 + 回调验签 + 幂等 + JSAPI 支付参数 + .env 模板),避免从零踩坑。 脚本自带 `--self-test`:用临时 RSA 密钥 + 随机 APIv3 密钥,验证**签名/验签**与**回调报文 AES 加解密**往返正确,证明生成的密码学逻辑可用——你不必盲信它。 ## 何时使用 - 用户说:"接入微信支付" / "小程序支付" / "微信支付回调怎么写" / "微信退款" / "paySign 怎么算" - 任何需要收款的微信小程序 / 公众号项目 ## 开发前必须准备的凭证(P0,否则代码跑不通) - [ ] 微信商户号 MCH_ID(pay.weixin.qq.com 获取) - [ ] API v3 密钥(商户平台 → 账户中心 → API 安全 → 设置 APIv3 密钥,32 位) - [ ] 商户证书(apiclient_cert.pem + apiclient_key.pem,API 安全页下载) - [ ] 小程序 / 公众号 AppID(与商户号绑定) - [ ] 支付回调域名(在商户平台配置白名单) ## 微信支付接口规范(系统预置) | 接口 | 说明 | 关键注意 | |------|------|---------| | JSAPI 下单 `POST /v3/pay/transactions/jsapi` | 小程序 / 公众号支付 | 需传 openid | | Native 下单 `POST /v3/pay/transactions/native` | 扫码支付 | 返回二维码 URL | | H5 下单 `POST /v3/pay/transactions/h5` | 手机浏览器支付 | 需配置 H5 支付域名 | | 查询订单 `GET /v3/pay/transactions/out-trade-no/{out_trade_no}` | 主动查询 | 回调失败时补偿 | | 关单 `POST /v3/pay/transactions/out-trade-no/{out_trade_no}/close` | 关单 | 超时未支付关闭 | | 支付回调 `POST /你的回调路径` | 异步通知 | **必须验签**,以此为支付成功依据 | | 申请退款 `POST /v3/refund/domestic/refunds` | 退款 | 需商户证书 | ## 必须实现的安全约束(P0,缺一不可) 1. 支付结果**以异步回调为准**,禁止只依赖前端回调判断支付成功 2. 回调接口必须验证微信签名(`Wechatpay-Signature` 请求头 + 平台证书) 3. 回调接口必须做**幂等处理**(同一订单收到多次回调只处理一次,用订单号唯一约束 / 已处理标记) 4. 支付密钥(apiv3_key、私钥文件)只存服务器本地 / `.env`,不提交 Git,不写日志 5. 支付金额以**服务端计算为准**,不信任前端传入的金额参数 ## 脚本用法(生成 FastAPI 支付模块骨架) ```bash # 0) 先证明生成的密码学逻辑可用(推荐第一次