支付宝支付请求流程梳理

    技术2022-07-10  192

    后台系统 支付宝平台 浏览器 (具体解析及代码持续更新,最近太忙了,是在没有时间)

    同步和异步

    同步是自己浏览器调用的,异步是支付宝发送的请求。支付宝发请求给自己的后台,调用后台写的Java代码。

    异步是支付成功之后执行的,就是最后付款成功以后跳转页面那步。

    同步异步是同时进行的,同步显示在浏览器的跳转上,因为支付宝只接受form表单的提交形式,所以浏览器的跳转用了jsp页面。同步走的同时,异步在后台调Java代码的业务流程。

    同步通知与异步通知

    同步通知返回的是用户系统的通知页面

    异步通知用来修改数据库订单状态,成功必须返回”success”,否则支付宝服务器会不断重发通知,直到超过24小时22分钟。一般情况下,25小时以内完成8次通知(通知的间隔频率一般是:4m,10m,10m,1h,2h,6h,15h)

    如果没有给支付宝响应success,支付宝一直进行异步回调。

    为什么使用异步通知

    支付宝系统支付成功后 成功修改了支付宝本地的数据,然后返回给用户系统,此时如果用户系统修改数据不成功就会造成实际订单已支付,但用户系统里面显示未支付,然后用户再支付会造成重复支付。异步通知用来解决支付宝系统与用户系统数据不一致的问题。

    注意:同步通知和异步通知地址最好不要使用localhost,可以使用127.0.0.1,否则同步通知和异步通知可能不执行

    具体细节请参考支付宝接口文档:https://docs.open.alipay.com/270/105902/

    支付宝沙箱环境(用于支付测试):https://openhome.alipay.com/platform/appDaily.htm

    支付流程图解

    请求支付网址: http://localhost:8088/api/v/toPay?orderId=1 在本机请求支付宝支付需要做内网穿透,否则支付完毕进行页面跳转时会失败 将localhost:8088更换为内网穿透的网址进行请求就可: http://3XXXXXXXX.zicp.vip/api/v/toPay?orderId=4

    Processed: 0.010, SQL: 9