1. 用户发起支付
当用户抢到票后,开始发起订单支付请求,假设选择支付宝作为支付方式,支付流程如下。
2. 支付结果回调
当用户支付完一笔订单,支付宝付款渠道接收到支付结果后,对请求支付的系统进行支付结果回调。参考上图红色字体流程。
支付配置
1. 内网穿透
支付宝回调的地址一定要是在公网可以访问的。试想下,如果我们提供本地地址,支付宝肯定是访问不到的。
最好的方式就是部署到公网可访问的云服务器上。但是为了本地联调方便,我们可以把本地的开发环境网络配置成公网可访问,这就需要用到内网穿透技术。
比较常用的有 Natapp 工具,接下来我们需要通过 Natapp 开通内网穿透,开通教程详细查看下述官方文档:
NATAPP1分钟快速新手图文教程 - NATAPP-内网穿透 基于ngrok的国内高速内网映射工具
开通后,将内网穿透端口改为 9000,即网关服务项目端口。
2. 替换支付回调地址
按照 Natapp 教程,本地启动客户端,我这里展示下 Mac 系统的启动结果。
http://3mb4zt.natappfree.cc
也就是我启动的内网穿透地址,访问这个地址会被请求到我们的 127.0.0.1:9000
服务端口上。
注意,这个内网穿透地址并不是固定,当你电脑锁屏再打开后它自己也是会变,或者你退出再启动也会变。
将 Natapp 内网穿透地址替换 application.properties
文件下 pay.alipay.notify-url
属性。
如果你是启动的 SpringBoot 单体版就修改 aggregation-service
服务下 application.properties
文件,反之修改 pay-service
服务下配置文件。
发起支付
1. 选择列车购票
选择 G35 列车进行用户购票操作。
2. 提交订单
选择乘车人,选择席别后提交订单。
根据乘车人选择好席别后,点击确认进行订单。
3. 支付宝付款
在订单确认页面选择网上支付。
当前只对接了支付宝的沙箱环境,所以选择支付宝进行支付。
账户名:ahlbks5547@sandbox.com
密码:111111
如果让输入支付宝密码,输入 111111,点击确认付款按钮。
4. 支付回调
当支付宝请求付款成功后,会返回成功付款请求结果。
当返回支付成功结果后,咱们支付服务回调接口也会接到对应的支付宝回调请求。
跳过 Debug 模式后,查看数据库支付表和订单表的记录状态,都会进行相应变更,也意味着一笔订单购票全流程顺利结束。