支付宝支付接入
这篇解决什么
在应用下打开支付宝渠道、填沙箱或正式参数、用接入示例付一笔。读完能对上 alipay_pc 等编码,以及渠道回调地址。
默认端口 48080。先完成 支付功能设计,建议先用 模拟支付 把示例单跑通。
示意图:下单请求出站到支付宝。异步通知进 /pay/notify/order/{channelId},再回写业务。
渠道编码
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 模块 | 支付宝客户端 | ruoyi-office/yudao-module-pay/ |
alipay_pc | PC 网站,收银台最常用 | AlipayPcPayClient |
alipay_wap | 手机网站 | AlipayWapPayClient |
alipay_app | App | AlipayAppPayClient |
alipay_qr | 扫码 | AlipayQrPayClient |
alipay_bar | 条码(商家扫用户) | AlipayBarPayClient |
| 配置 | 公钥或证书 | AlipayPayClientConfig |
配置在应用信息的渠道弹窗里。共用一套 AlipayPayClientConfig:
- 网关:正式
https://openapi.alipay.com/gateway.do,沙箱用开放平台给的 sandbox 地址 appId、签名RSA2- 模式
1公钥:商户私钥 + 支付宝公钥 - 模式
2证书:应用证书、支付宝证书、根证书内容
不要把私钥提交进 Git。页面上的「秘钥解析」权限字是 pay:channel:parsing。
回调和联调
渠道通知打到 yudao.pay.order-notify-url + /{channelId},也就是 POST /admin-api/pay/notify/order/{channelId}。退款是 /pay/notify/refund/{channelId}。接口 @PermitAll 且 @TenantIgnore。
应用 demo 的 orderNotifyUrl 指向 POST /pay/demo-order/update-paid。自己的业务单把这个地址换成自己的回写接口,内部必须核对支付单状态和金额。
本机地址支付宝打不进来
application-local.yaml 里的 yudao.pay.*-notify-url 要换成公网可访问的入口。只改应用上的业务回调不够。没穿透时先用模拟渠道。
接入示例创建订单走 PayOrderApi,用户类型是管理员。PC 收银台选 alipay_pc 会打开支付宝页面。付完后等 payNotifyJob 或同步查询,列表明细才会变已支付。
官方沙箱、密钥生成以支付宝开放平台为准,本篇只写本仓库要填的字段。
配置与操作
走 应用信息(1126,/pay/app)给应用 demo 开渠道。常用 alipay_pc,还有 alipay_wap / alipay_app / alipay_qr / alipay_bar。共用 AlipayPayClientConfig:网关、appId、RSA2,模式 1 公钥或 2 证书。秘钥解析权限 pay:channel:parsing。私钥不要进 Git。
保存后示例走 支付&退款案例(2549,/pay/demo/order)选 alipay_pc。异步通知 POST /admin-api/pay/notify/order/{channelId},退款 /pay/notify/refund/{channelId}。yudao.pay.order-notify-url 必须公网。本机没穿透先用 mock。开启见 支付功能设计。

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

本系统截图:接入示例 → 支付&退款案例。应用 demo 开通 alipay_pc 后,收银台即可跳转支付宝。
