01
身份与认证
统一登录走 OAuth2 授权码 + PKCE,登录前有图形验证码,手机号以哈希形式存储。签发的令牌会校验签名、签发方、受众、过期时间与授权范围,校验不过就直接拒绝。
在线演示环境 · 可自由体验
数字支付 / 钱包 / 外卖一体化演示平台。统一身份认证、带复式账本的钱包、支付渠道编排与对账、外卖下单到配送的完整链路,跑在同一套 K3s 私有集群上,另外带一个只能调用白名单工具的 AI 助手。
01核心能力
下面每一项都在演示环境里真实运行,登录对应控制台就能看到数据流转,不是示意图。
01
统一登录走 OAuth2 授权码 + PKCE,登录前有图形验证码,手机号以哈希形式存储。签发的令牌会校验签名、签发方、受众、过期时间与授权范围,校验不过就直接拒绝。
02
余额和账本由钱包服务独占写入,借贷分录在同一个本地事务里一起提交,不会出现余额动了、分录没落的情况。金额统一用人民币分的整数存储,写错了只能冲正,不能改数。
03
把支付渠道、异步回调和日终对账收敛到一处:订单由状态机驱动,回调按幂等键去重,重复通知不会重复入账,超时和异常交给补偿任务收敛到终态。
04
覆盖门店与菜品、下单、支付到配送的完整链路。外卖和支付是两个独立服务,各自持有自己的数据,通过事件与状态机对齐,外卖不会去直接改支付状态。
05
助手只能调用事先登记好的工具接口,不直连业务数据库,也拿不到登录密码、支付密码、验证码或完整令牌。它做的是查询和编排,不是绕过权限去操作数据。
06
运营端、商户端、管理端和外卖后台四套控制台,加上外卖 H5 与消费者 H5,分别对应平台方、商户方和消费者三个视角,看的是同一份数据。消费者端已由 H5 取代原来的 Android App。
02架构一览
按流量方向从外到内说,所有组件都部署在同一个 K3s 集群里。
边缘接入CLOUDFLARE
Cloudflare 负责 DNS、TLS 证书与边缘缓存;这个 Worker 托管个人主页与本页,其余流量按原样回源,不做改写。
集群入口NGINX GATEWAY FABRIC
K3s 上的 Gateway API 实现统一收口:按域名与路径路由到对应服务,在入口做 TLS 终止、限流与灰度发布。
微服务SPRING BOOT 3
按领域水平拆分,每个服务独占自己的数据表,只通过版本化接口、可靠事件或事务分支协议协作,服务之间没有跨库查询。
一致性SEATA / OUTBOX
站内转账、钱包支付和内部冲正走短时 TCC;外卖订单、通道回调与开户走本地事务加 Outbox/Inbox 加幂等状态机,不用长事务。
数据与中间件DATA
MySQL 存业务数据,Redis 承载缓存与令牌,RabbitMQ 传递领域事件,Seata 协调分布式事务,对象存储承载头像等静态资源。
外卖和支付是两个独立服务:外卖不能直接改支付状态,支付也不能改外卖订单,两边靠事件和状态机对齐。这条约束看起来多余,但它决定了出问题时能不能查清楚。
03模块入口
都在同一个演示环境内,账号通用、数据互通,点开就是真实页面。
04演示账号
全部是演示数据。请不要修改密码,也不要填写任何真实的个人信息。
| 系统 | 账号 | 密码 / 验证码 | 入口 |
|---|---|---|---|
| 运营端 | 13800138000 |
MiniPay@123456 |
ops.su46proj.site |
| 商户端 | 13900000009 |
MiniPay@123456 |
merchant.su46proj.site |
| 管理端 | 13800138002 |
MiniPay@123456 |
admin.su46proj.site |
| 消费者 H5 | 任意演示手机号 |
123456 |
app.su46proj.site |
| 外卖后台 | admin |
admin123 |
food-admin.su46proj.site |
| 外卖 H5 | 任意演示手机号 |
123456 |
food.su46proj.site |
消费者 H5 和外卖 H5 的短信验证码固定为 123456,手机号填任意演示号码即可。演示环境的数据可能会定期重置。
05使用说明
从后台数据看到用户下单支付,再到订单流转,整条链路的每一步都有对应的入口。
打开 admin.su46proj.site,用 13800138002 / MiniPay@123456 登录,翻一遍支付单、渠道配置和账本分录,先看清楚一笔钱在系统里长什么样。
用 13800138000 登录 ops.su46proj.site、用 13900000009 登录 merchant.su46proj.site,同一个订单在平台视角和商户视角下的差别一眼就能看出来。
打开 food.su46proj.site,选门店、加购物车并下单,用验证码 123456 登录,再用钱包完成支付。
用 admin / admin123 登录 food-admin.su46proj.site,找到刚才那笔订单,走一遍接单、配送、完成的状态流转。
打开 app.su46proj.site,用任意演示手机号加验证码 123456 登录,看钱包余额与账单明细、打开收款码,再试一次沙箱转账,最后和米灵聊几句(回答是逐字流式出现的)。
在米灵对话里查询订单或余额,观察它是通过白名单工具接口取数,而不是直接访问数据库;登录密码、支付密码和验证码都不经过模型。
用户在手机上的完整体验:短信验证码登录、米灵 AI 对话(逐字流式回答)、钱包余额与账单明细、个人收款码,以及沙箱转账与付款。金额与状态一律以后端权威接口为准,H5 只是一层界面。
https://app.su46proj.site/
演示环境说明:本站及所有子站都是技术演示(demo),账号、余额、订单与交易数据均为模拟生成的示例数据,不构成任何真实的支付、金融或资金服务,请不要向任何演示账号充值或转账。
这个平台由苏启航独立设计与实现,个人主页上有关于我、技术栈和其他项目的说明。
访问作者主页 su46proj.site