大家对网络支付应该都很熟悉,今天咱们就来探讨一下如何避免订单重复付款的问题。

看看订单支付流程
我们来看看,电商订单支付的简要流程:
订单钱包支付流程
从下单/计算开始:
下单或结算环节:尽管它并非支付流程的起始阶段,然而支付所需的所有金额及相关信息均源自于此环节;在此阶段,订单的当前状态显示为未支付状态。
用户若选择进行支付操作,客户端将启动支付服务,随之在系统内部生成一条支付记录,该记录的当前状态标识为尚未支付。
启动支付流程:当支付服务接入第三方支付平台时,特别是在启动支付环节,系统会生成相应的支付链接,随后客户端需对这些链接进行相应的操作处理。
使用钱包进行交易时,用户一般会通过相应的钱包应用来完成支付操作;不妨回想一下,在购物时,我们进行支付的具体步骤。不同平台对于钱包支付的处理方式存在差异。
京东PC端支付页
APP 端
在我国,消费者进行购物活动大多通过应用程序进行,产品经理们会竭尽所能引导用户进入APP。那么,为何我在示例图中选择京东而非淘宝呢?原因在于,当我使用UC浏览器打开淘宝时,页面会自动跳转至其APP界面。
我们对于APP中的钱包支付功能应当相当熟悉,通常操作步骤是打开钱包,然后进行支付。
APP支付
WAP 端
手机上网页或使用WAP服务进行支付时,通常直接唤起相应的钱包应用,一旦钱包应用启动失败,系统则会自动跳转至其他界面。
京东支付 WAP端
PC 端
在电脑端,一般会启动收银系统,显示一个二维码,顾客可以通过扫描钱包中的二维码进行支付,紧接着便会出现京东的微信支付扫码界面。
支付完成后,三方支付平台将向商户发送回调信息,以告知支付的具体结果。
同步订单信息:支付环节完成支付确认后,会将支付结果传递给订单环节,订单环节据此调整订单状态,从未支付变为待发货。客户端则通过不断查询、维持长连接,或由服务端主动发送通知,来在界面上更新订单的显示状态。
我们再从支付流水的角度看一下支付状态的变化:
支付状态变化
为何要占用如此多的篇幅来阐述支付流程和交互细节?这主要是因为我坚信,避免订单重复支付的问题,不仅涉及技术层面,同样也是业务和产品设计领域的关键议题。
为什么订单会重复支付
未防重导致的重复支付
观察可知,在PC端进行支付时,用户需通过扫描二维码来完成,而这些二维码实际上与各自的支付记录相对应。若用户连续多次点击支付按钮,若未采取防止重复操作的措施,系统将生成两笔独立的支付记录,即两个不同的二维码。一旦用户分别扫描了这两个不同的二维码,便不可避免地会导致重复支付的情况发生。
掉单导致的重复支付
“我明明付款了,为什么我的订单还没支付呢?”
黑我钱是吧
这就是所谓的“掉单”:
顾客发现已支付款项,却发现商城订单状态显示未支付,又因迫切需求,可能再次下单,从而导致重复支付的情况发生。
多渠道导致的重复支付
在国内进行支付操作的速度相当迅速,这一点或许大家并不明显感受到,但若是对比过海外的支付方式,或许便能体会其中的差异,因为海外支付往往需要耗费较长时间。
保罗挑选了一种支付手段,但发现该支付点距离他们所在的村庄颇为遥远,于是他改换了支付方式。在赶集途中,保罗顺便前往该网点,处理了这笔支付,却不知自己已经重复进行了支付操作。
大家或许很少遇到这样的情况,我们可以在美团上再下个订单,然后打开微信进行支付。但请注意,暂时不要进行支付操作,转而回到美团页面,打开支付宝进行支付。完成支付宝支付后,再用微信继续进行支付。大家不妨猜测一下,这两笔支付是否都能顺利完成呢?
答案是可以。
美团多渠道支付
如何防止订单重复支付
加锁
在进行3.申请支付操作或是5.支付回调处理时,均需基于订单信息进行锁定,以避免在并发情况下发生重复执行的问题。
锁定资源,毫无疑义,这属于分布式锁的范畴,我们一般倾向于采用 Redis 来实现分布式锁。
加锁
缓存结果
申请支付成功,支付回调成功,都应该缓存结果。
再申请支付,收到成功回调的时候,都应该先去检查支付的状态。
支付中流水取消
若用户已进行过重复支付,那么在后续再次发起支付请求时,若该请求已被成功处理,则该笔支付请求理应被拒绝。
然而,若这笔交易仍在进行中,我们无法确定其结果究竟是成功还是失败,显然我们不能拒绝这笔支付。因为有可能用户已经支付失败,但系统状态尚未更新,这种情况下继续操作显然是不恰当的。
所以,我们可以取消掉正在支付中的流水,再进行支付。
支付中流水取消
已支付流水退款
现在又遇到了新的挑战,如果在发起支付操作时,已有交易正在进行,且第三方支付平台不提供取消支付的功能,或者用户的后续支付是通过另一条路径进行的,我们迫切需要提升用户的支付成功率,这该如何解决呢?
在用户进行支付操作且订单正处于支付状态时,我们应允许其进行多次支付尝试。一旦支付回调发生,需核实用户是否已成功完成一笔支付,并据此对后续的支付流水进行相应的退款操作。
支付回调
自然,进行退款是一项充满风险的行为,因为一旦款项退还,便难以再次追索,因此务必高度重视风险防范。
主动轮询与重试防止掉单
若因设备故障导致未能接收到反馈,亦或反馈信息未能按时抵达,便有可能出现所谓的掉单现象。
确保订单不因外部因素流失的关键在于,我们不应被动地依赖第三方的通知,而应采取主动策略,即在用户发起支付后的3秒内,便应启动查询机制,进行周期性的检查。这一过程,即所谓的主动轮询,通常可以通过以下方式实现:
轮询
1) 定时任务轮询
通过设定定时任务,对表格内处于支付状态的交易记录进行扫描,并主动检索其支付进展。实现定时任务的方法众多,包括利用线程池、调度系统以及分布式调度系统等。
定时任务轮询的缺点有两个:
2) 延时消息轮询
此外,一种可选策略是运用延迟发送的信息。用户在触发支付操作后,会发送一条延迟信息。在消费完成该延迟信息之前,用户需定期查询支付流水状态。若未能获取到最终状态,则需再次发送一条延迟信息。这种方法的优点在于对数据库的负载相对较小,且轮询的间隔可灵活调整。然而,其缺点在于实施过程较为繁琐,并且需要持续维护消息队列系统。
同步+异步防止内部掉单
一旦支付服务接收到异步通知的反馈,或者通过主动查询得知交易流程的最终结果,便需及时告知订单服务有关支付流程的变动情况。随后,订单服务需同步调整订单的相应状态。为确保这一通知流程的顺利完成,我们应尽量采用同步与异步相结合的通信模式。
这里还有一个问题,客户端如何同步这个状态?
由于服务端可能已更新订单的当前状态,然而客户端显示的界面依旧显示为未支付,用户需自行手动刷新页面以获取最新状态,这种做法显然不够理想。
服务端、客户端的状态同步,无非就拉和推:
客户端支付尽可能不外跳
无论从产品层面还是技术层面来看,客户端在执行支付操作时,理应尽量避免跳出原页面;在PC端,应直接使用支付服务生成的支付码进行支付,而非进行页面跳转;至于移动端网页和APP,在应用内部展示支付页面,这一决策权则通常掌握在第三方支付平台手中。
在UC内内嵌支付宝
大家或许有所察觉,目前支付宝的功能已实现无需打开钱包,直接在应用内完成支付,这对商家来说影响颇深;同时,它对提升用户体验和支付成功率也起到了积极作用。鉴于我国市场的竞争激烈程度,相信其他支付服务提供商也必将效仿这一做法。
- EOF -
# 汉南区网络推广营销工作
# 云浮建设网站
# 52自学网站建设ppt
# 济南营销推广策划
# 济阳引流营销推广制度
# 伊春抖音推广网站有哪些
# 雄县seo优化专业定制
# 优化排名关键词
# 中山百度竞价推广网站
# 网站排名优化咨询f火27星
# 长沙短视频seo优化招商
# 情况下
# 微山抖音多账号推广营销
# 湛江网站seo优化软件
# 护肤品的网络营销 推广
# seo助手标准版
# 推广软文网站哪个最好
# 宿迁项王故里营销推广
# 谢岗镇网站优化
# 新乡机械建设网站
# 微博关键词竞价排名
# 支付平台
# 来聊聊如何防止电商订单重复支付及流程
# 客户端
# 这一
# 回调
# 第三方
# 支付宝
# 保罗
# 跳转
# 京东
# 这笔
# 在线支付不陌生
# 下单
# 服务端
# 我们可以
# 可以通过
# 而非
# 淘宝
# 来完成
# 支付方式
# 加锁
相关文章:
小学教育资源网官网_小学教育资源网官网注册流程?
体验ChatGPT免费提问次数,开启智能对话新世界!
微信藏隐私,别人拿手机易看信息?2 种方法教你悄悄给微信上锁
seo适合看什么书,自学seo书籍推荐 ,ai找不到磁盘
免费免登录AI-让每个人都能轻松体验人工智能的魅力
“ChatGPT没法使用”-你不能错过的背后真相!
初中英语八大时态傻傻分不清?这8套速记口诀+30个例句,学渣3天逆袭!
四年级数学期末考试卷及答案怎么找?这套人教版的易错题解析与提分技巧请收好!
seo机制是什么,seo指的什么 ,nero暴打ai
为什么要做seo si,为什么要做* ,ai与coreldraw转换
SEO搜索关键词是什么意思?让你轻松网站流量的秘密!
一个手机号码可注册两个微信,附详细解绑及注册步骤
什么叫改写?揭秘改写背后的技巧与价值
大学几年级用英语怎么说_大学各年级英语叫法与大一学年表达是怎样的?
什么AI是可以上传文件的?AI工具的无限潜能!
seo网站排名优化哪家好,seo网站优化平台 ,免费的ai中文写作网站
董宇辉精讲苏轼, 如何用双语|直播|让宋词魅力破圈?
嗨格式在线录屏的功能特点及操作指南,你知道多少?
Excel表格设置下拉菜单选项的多种方法,你知道几种?
seo文章代表什么,seo文章怎么写 ,ai美女壁纸如何制作
高三英语太差怎么逆袭?一天1小时的科学提分计划能帮你多少?
小学英语备课资源网站大家都在用哪些?求推荐能免费下载课件和教案的靠谱平台
seo线索收集是什么,seo线索收集是什么意思 ,ai软件怎么插入字体
3月7日王毅宣布推出中国版国际旅行健康证明,8日正式上线
公众号文章生产:如何让内容快速变现,提升影响力
seo是什么seo查询,seo是什么seo怎么做 ,ai制作海报图
英语必背3500单词分类记忆法高效突破附真题高频词清单
现在进行时构成和用法_购物场景词汇与价格表达?人教版初中英语ppt课件全册完全解读
seo描述信息写什么,seo店铺描述 ,ai渐变色板下载
关键词选择与筛选功能:如何找到优质群聊?兴趣、地域、品牌类全解析
小红书运营引流底层门道大揭秘,新手小白必看
SEO文章内容有哪些策略?助力网站提升排名的核心要素
SEO的费用解析:如何根据预算选择合适的SEO服务?
初一英语上册课本教案_如何设计自我介绍教学案例?
SEO渠道推广,助力企业提升品牌曝光与流量转化
新品牌如何熟悉小红书核心逻辑?做好这几步很关键
什么程序算是人工AI?揭秘人工智能背后的技术与应用
为什么选择Chaseo?提升企业SEO的全能利器!
为啥ChatGPT打不开?原因解析与解决方案全解析
手机搜狗输入法怎么修改皮肤?iPhone无法使用咋解决?
为什么ChatGPT无法加载?提示“检查您的网络设置并尝试重启ChatGPT”解决方案
手机如何进入抖音网页版?入口位置及|直播|开启方法介绍
seo是什么姓,seo什么意思中文意思 ,纱ai
初中英语语法填空与选词填空区别_解题技巧与高分突破?
截至2025年8月1日收盘,广西广电股价下跌,关注股权变动?
公众号自动化:如何让你的公众号工作24小时不停歇
SEO网站优化培训的价格因素:影响费用的关键因素
初中英语高频词汇3500到底该如何高效记忆?这份速记方法能让成绩快速提升吗?
WordPress与CMS:开启网站建设的无忧之路
客户竟以户型图名义发病毒文件,商家中招无奈重装系统
相关栏目:
【
网络营销44070 】
【
网络推广122852 】
【
网络优化116010 】
【
网址导航102054 】
【
网络技术82194 】
【
网络资讯43554 】