保姆级教程:SpringBoot 对接支付宝完成扫码支付,完整流程梳理!

文章目录

1、支付方式选择 2、交互流程 3、1. 对接准备 2.加密解密 + 签名验签 3.沙箱环境 4、内网穿透 5、二维码 6、下单 7、异步通知回调 8、查询支付结果 9、退款 10、通用版SDK

需求:系统A对接支付宝,实现支持用户扫码支付

1、支付方式选择

对接的API文档:

  • https://open.alipay.com/api

可选的支付方式有:

  • 扫码付:出示付款码或者用户扫码付款

  • APP支付:在APP中唤起支付宝

  • 手机网站支付:在移动端网页中唤起支付宝 App 或支付宝网页

  • 电脑网站支付:在PC端唤起支付宝App或者网页登录支付宝账户

  • 刷脸付:需硬件支持

  • 商家扣款:类似每月会员扣款

  • 预授权支付:冻结对应额度,交易完成后给商家

  • JSAPI支付:小程序

这里选择扫码付的方式,点击下单后,返回支付二维码,用户扫码支付。

 

2、交互流程

画个下单流程的时序图:

保姆级教程:SpringBoot 对接支付宝完成扫码支付,完整流程梳理!_第1张图片

大致流程:

  • 用户下单,系统A组装信息后(订单信息、回调地址、签名),调用支付宝预下单接口,返回二维码链接

  • 系统A将二维码链接转二维码图片

  • 用户扫码,唤醒本地支付宝,完成支付

  • 支付宝返回支付成功信息给用户

  • 支付宝异步通知系统A支付成功的消息(回调地址),如果用户支付成功,支付宝就调用回调地址的API,回调接口中自然是系统A收到用户支付成功消息后的动作

  • 上一步如果通知失败,比如网络异常或支付宝调用异步通知接口时系统A正好挂了 ⇒ 可主动调支付宝提供的查询支付结果接口,或者加定时任务轮询来查询交易状态,如3s-5s

  • 还可以考虑在第一步请求支付宝接口时加上二维码的有效时间,过期就重新发起

查询支付结果流程:

保姆级教程:SpringBoot 对接支付宝完成扫码支付,完整流程梳理!_第2张图片

退款流程同上查询支付结果。PS:注意下单、退款过程中,相关订单的业务数据落库到系统A。

3、对接准备

1)加密解密 + 签名验签

支付信息不能在网络上明文传输,以防被篡改。系统A到支付宝的方向,采用:

  • 支付宝公钥加密 + 系统A的私钥签名(系统A做的事)

  • 支付宝私钥解密 + 系统A的公钥验签(收到信息后,支付宝做的事)

同理,支付宝返回支付结果时,就是在支付宝中用系统A的公钥加密+支付宝的私钥签名,传输到系统A后,则是先用支付宝的公钥验签,再用系统A的私钥解密支付结果

 保姆级教程:SpringBoot 对接支付宝完成扫码支付,完整流程梳理!_第3张图片

2)沙箱环境

调试过程中,可采用支付宝提供的沙箱环境,点击右上角控制台,登录后选择沙箱:

保姆级教程:SpringBoot 对接支付宝完成扫码支付,完整流程梳理!_第4张图片 

 这里有一套可调试的APPID、系统A的公钥、密钥、支付宝的公钥、支付宝的网关地址,以及商家账户和用户账户(用于后续登录沙箱版本支付宝APP完成支付)

保姆级教程:SpringBoot 对接支付宝完成扫码支付,完整流程梳理!_第5张图片

你可能感兴趣的:(spring,boot,microsoft,后端)