平台概述
EasyIT Pay 是一套 Rust 全栈公共支付平台,用于统一接入微信、支付宝等支付渠道,解决各渠道只能绑定单一域名的限制,让多个业务系统共享同一套收银台与回调能力。
为什么需要公共支付平台
| 问题 | 平台方案 |
|---|---|
| 微信/支付宝商户号只能配置一个授权域名 | 业务系统跳转至平台统一收银台 /pay/{token} |
| 各业务重复对接支付 SDK | 平台封装 Provider,业务只调 Open API |
| 密钥分散在多个项目 | 渠道密钥集中配置在管理后台,AES 加密存储 |
三大应用
平台对外提供三套独立 Web 应用,路径互不干扰:
1. Web 站点(/web)
- 无需登录,面向开发者与运维人员
- 服务介绍、架构说明、接入文档
- 访问根路径
/自动跳转至此
2. Admin 管理后台(/admin)
- 需登录(默认账号
lichv/li123456,可改密) - 接入应用管理、支付渠道配置
- 订单管理、回调日志、修改密码
3. Pay 收银台(/pay/{token})
- 用户支付页面,由业务系统创建订单后跳转
- 展示商品信息与金额,选择微信/支付宝渠道
- 支持演示模式,无真实密钥也可联调
技术架构
业务系统 ──Open API──▶ 支付平台 ──Provider──▶ 微信/支付宝
│ │
│ ├──▶ 收银台 /pay/{token}
│ └──▶ 异步通知 notify_url
└──▶ return_url 同步回跳
- 后端:Rust + Axum + SQLx + MySQL
- 模板:Askama + 静态 CSS/JS
- 渠道:Provider 插件化,当前支持微信、支付宝,预留银联扩展
数据流简述
- 业务系统携带签名调用
POST /api/v1/orders创建订单 - 平台返回
pay_url,用户浏览器打开收银台 - 用户选择渠道并完成支付(或演示模式模拟支付)
- 平台更新订单状态,向
notify_url发送异步回调 - 用户浏览器跳转至
return_url