微信小程序支付接入
这篇解决什么
在应用下打开 wx_lite、填商户参数、在小程序里带 openid 调起支付。读完能对上 WxPayClientConfig,以及为什么 PC 收银台选这个渠道通常调不起来。
默认端口 48080。先完成 支付功能设计。小程序登录、openid 先看 三方登录。
示意图:预下单在服务端。调起支付必须在小程序里,用当前用户的 openid。
从哪配
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 模块 | 微信客户端 | ruoyi-office/yudao-module-pay/ |
| 渠道码 | wx_lite | PayChannelEnum.WX_LITE |
| 配置 | 和小程序、公众号共用 | WxPayClientConfig |
| 回调 | POST /pay/notify/order/{channelId} | PayNotifyController |
| 示例单 | 仍可用 demo 应用建单 | PayDemoOrderServiceImpl |
| 收银台 | PC 页,小程序场景不够 | views/pay/cashier/index.vue |
WxPayClientConfig 要填:
- 小程序
appId - 商户号
mchId - API 版本
v2或v3(新商户用v3) v2:商户密钥 +apiclient_cert.p12的 Base64v3:apiclient_key、证书序列号、平台证书等
微信其它编码(wx_pub / wx_app / wx_native / wx_wap / wx_bar)共用这份配置类,但调起方式不同。本篇只讲小程序。
openid 和回调
统一下单必须带用户 openid。openid 来自该小程序的微信登录,不是管理端账号。PC 示例单的用户类型是管理员,没有小程序 openid,所以管理端选 wx_lite 会失败或无法调起。联调应走会员端 / UniApp,或自己写一条带 openid 的提交。
渠道通知同样进 yudao.pay.order-notify-url/{channelId}。商户平台把支付、退款回调配成这个公网地址。业务回写仍看应用上的 orderNotifyUrl。
三个 AppId 不要混
小程序 AppId、支付商户绑定的 AppId、开放平台移动应用 AppId 不是同一个。wx_lite 必须填小程序那个。登录用的社交配置也要是同一套,否则 openid 对不上商户。
证书、私钥不要进 Git。本地 application-local.yaml 的通知地址要换成公网。没穿透时先用 模拟支付。
公众号 JSAPI 见 微信公众号支付接入。退款字段和证书要求见 支付宝、微信退款接入。
配置与操作
走 应用信息(1126,/pay/app)开通 wx_lite。填小程序 appId、商户号 mchId、API v2 或 v3(新商户用 v3)和证书。appId 必须是小程序那个,不要填公众号或开放平台移动应用。
调起必须在小程序里,带该小程序登录拿到的 openid。PC 示例单用户是管理员,没有小程序 openid,管理端选 wx_lite 通常调不起来。通知 POST /pay/notify/order/{channelId} 要公网。开启见 支付功能设计。

本系统截图:支付管理 → 应用信息。wx_lite 在应用下开渠道,不是单独菜单。

本系统截图:支付&退款案例。渠道配好后,真正调起要在小程序里完成。
