美文网首页
对客户端或H5在线支付流程的学习思考

对客户端或H5在线支付流程的学习思考

作者: 5c87f852cc32 | 来源:发表于2020-06-27 23:31 被阅读0次

    引言:App发生了用户完成支付,同时在后台却找不到用户支付记录的错误。经检查,原因是原支付流程中,由客户端向后端发起用户支付成功的记录请求,一旦用户完成支付却没有正常返回客户端,后端就不会记录用户支付结果。

    从网上找到的支付时序图,有以下2种。

    整个支付流程,可以分为三块,分别是生成支付订单、用户完成支付、校验支付并反馈支付结果。

    在生成支付订单步骤,支付订单的生成时间,在用户选择支付方式并确定后再生成,会更合理,减少无效待完成的支付订单的生成。同时支付订单的生成,必须是服务端进行安全校验、价格校验后生成,避免前端的篡改或出错。

    用户完成支付则是由前端调用各种在线支付方式(SDK或API)进行,这里不叙述。

    在最后的步骤,怎么校验支付结果,则是常出问题的步骤,包括引言中遇到的问题。首先在用户支付成功时,前端和服务端,需要并行异步接收支付结果,这个过程由第三方支付工具回调前端或通知服务端,其中后端在接收支付结果过程中,必须要有被动接收和主动询问两种方式。其后,前端需要进一步向服务端确认支付结果后,才能最终向用户展示支付结果。

    这里需要注意2点:

    1)确保后端总是能没有遗漏地知道支付结果。首先是确保能接收支付结果,其次是在前端的验证请求后,能主动向第三方请求支付结果,方能万无一失。(备注:当前微信、支付宝,都会在通知服务端支付结果的环节,做到24小时内重复通知直至服务端收到并反馈,否则需要服务端补充在生成支付订单后定时查询支付结果的手段。)

    2)前端没有接收支付结果或验证结果延迟,需要引导用户等待或刷新验证。如果用户没有按正常从微信或支付宝返回前端,而是切换返回,需要在页面上引导用户触发“是否已支付”的验证。如果验证结果延迟,需要有“等待中”的加载页面,及“刷新支付结果验证”的操作指引。参考下图表示。

    小结:在支付环境已经十分完善的当下,产品在支付流程中,必须依据服务端的发起和接收结果,同时前端在异常情况下需要做好引导交互。

    附:

    微信App支付业务流程说明:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_3

    支付宝App支付场景介绍:https://opendocs.alipay.com/open/204/105051

    相关文章

      网友评论

          本文标题:对客户端或H5在线支付流程的学习思考

          本文链接:https://www.haomeiwen.com/subject/youbfktx.html