【浅谈电商】如何防止重复支付

简介: 一、前言最近正在做电商相关的项目,整理一下解决方案并帮助自己巩固知识点,此方案是结合了目前的业务环境,若有更好的解决的方式很高兴与大家一起讨论。

一、前言

最近正在做电商相关的项目,整理一下解决方案并帮助自己巩固知识点,此方案是结合了目前的业务环境,若有更好的解决的方式很高兴与大家一起讨论。

二、支付流程

要想知道什么时候会发生重复支付,首先梳理一下支付的流程。(以APP为例)

image.png

  1. 用户在APP中对订单进行发起支付。
  2. 服务端根据订单信息构建支付参数,调起三方支付。
  3. 三方返回支付的参数。
  4. APP跳转到相应三方APP。
  5. 展示支付信息。
  6. 用户进行支付操作。
  7. 返回支付结果。
  8. 异步通知服务端,订单支付结果。

以上是支付的一般流程,当支付成功后,三方系统会立即回调系统,当没有应答时,还会间隔一段时间进行回调,直至回答或两天以上还没有回答为止。

看似以上流程上没有漏洞,其实其中有多个漏洞。

三、为什么会重复支付

情景一

   触发多次步骤2.调起支付,把返回的支付二维码进行记录,那么这几个二维码都是可以进行支付的,这样可以造成重复支付。或者说多端的情形下,PC和APP同时调起了支付,并都进行支付操作。

情景二

   假设步骤8.异步通知支付结果没有触发,或者网络突然不同,没有接收到支付结果,导致APP跳转回订单页面时,查看订单还是未支付状态,可能会再次支付。

情景三

   以上情景都是建立在同一种支付方式上,若第一次是微信支付,第二次换成了AliPay,在不同支付方式中进行支付,也会导致重复支付的情况下出现。

四、如何防止重复支付

在上述情景中,情景一情景三都是支付多次导致的,这样我们还是以加锁的方式去解决,当然这里是分布式锁。

image.png

我们展开说明其中的细节问题:

  1. 当我们第一次调起支付时,会在Redis中获取到此订单的锁,这样其他相对此订单调起支付的线程都会被拒绝。
  2. 锁在什么时候释放呢,在调起支付后就会释放锁,此时其他线程可以拿到此订单的锁,可以去调用其他支付方式,此时若调起的支付方式与之前的方式不同,需要去三方调用取消订单方法,返回成功后,才可以进行此次请求,即调用第二个支付方式接口。这样能保证就算是用户拿到两个支付二维码,也是只能支付其中一个的。

还有一个细节

在调起支付时,会有一个有效期,例如20:00调起支付,设置失效时间为20:30。一般会把整个消息放入延时队列,等时间到期,消费数据的时候会主动查询三方接口,若已经支付,需要对数据进行支付处理,若未支付,修改订单即可。

这样的话在订单失效后的时间是不会重复支付的。在订单可支付的时间内,保证只有一种支付方式可以支付,且支付方式切换时保证能够关闭之前的订单。


目录
相关文章
|
5月前
|
API
支付系统38-----支付宝支付---统一收单线下交易查询 第一步下单------》发起支付请求,登录,确认支付,查单接口开发,swagger接口全部呈现,
支付系统38-----支付宝支付---统一收单线下交易查询 第一步下单------》发起支付请求,登录,确认支付,查单接口开发,swagger接口全部呈现,
|
2月前
|
缓存 NoSQL Java
京东电商下单黄金链路:防止订单重复提交与支付的深度解析
【10月更文挑战第21天】在电商领域,尤其是在像京东这样的大型电商平台中,防止订单重复提交与支付是一项至关重要的任务。
107 44
|
23天前
|
搜索推荐 数据挖掘 API
抖音商品详情API接口对电商的作用及收益
在电商快速发展的背景下,抖音作为全球领先的短视频平台,凭借其庞大的用户基础和高活跃度,通过商品详情API接口为电商行业开辟了新渠道。本文深入解析了抖音商品详情API接口的功能及其对电商的积极作用,包括商品信息实时同步、提升用户体验、精准营销、数据分析与优化等方面,展示了该接口如何帮助电商企业拓展销售渠道、优化商品策略、提升用户满意度、促进跨界合作与开发创新商业模式,为电商企业带来显著收益。同时,文章也探讨了实现这些收益的关键步骤及面临的挑战,强调了数据安全与隐私保护的重要性,以及创新和差异化竞争的必要性。
54 4
|
2月前
|
搜索推荐 数据挖掘 API
探讨淘宝商品API接口:运用及收益
随着互联网的发展,电子商务成为日常生活的重要部分。淘宝作为中国领先的电商平台,提供了丰富的API接口,涵盖商品搜索、详情、评价、分类与促销等方面,助力开发者高效利用数据,提升用户体验,降低运营成本,增强市场竞争力,并探索创新业务模式。通过实际案例分析,展示了API接口在价格比较、库存管理、个性化推荐和市场分析等领域的应用价值。
92 0
|
4月前
|
存储 运维 搜索推荐
重构支付宝商家账单问题之重构支付宝商家账单的目标是什么,如何实现
重构支付宝商家账单问题之重构支付宝商家账单的目标是什么,如何实现
|
5月前
|
JSON 数据挖掘 API
深入探索孔夫子旧书网商品详情数据接口:解锁二手书市场的无限可能
`孔夫子/kfz/item_get`接口提供实时商品详情,包括标题、价格、库存等,支持JSON等格式。开发者需注册账号获取授权,可用于数据分析、商品展示、筛选推荐及市场调研,助力电商平台的运营与决策。
|
7月前
|
API 开发者
淘宝店铺订单接口丨淘宝店铺订单交易接口技术文档
淘宝店铺订单接口丨淘宝店铺订单交易接口技术文档
|
7月前
|
监控 数据挖掘 API
京东商品API接口:电商数据自动化的钥匙
京东商品API接口为电商领域带来了巨大的便利和潜力。通过本篇文章,读者应该能够了解如何使用京东商品API接口,并通过示例代码学习如何实际调用API获取商品数据。 随着技术的不断发展,京东商品API接口将继续为电商自动化、数据分析和市场研究提供支持,帮助商家和开发者在竞争激烈的市场中保持领先。我们鼓励读者继续探索和学习,充分利用京东商品API接口带来的机遇。
|
7月前
|
消息中间件 供应链 NoSQL
电商订单待支付(思路分析)
电商订单待支付(思路分析)
【支付宝推荐】批量转账为商家大促期间转账多人保驾护航
为了提升商家在大促期间的转账效率,支付宝推出了一款免费高效的转账多人工具,免费使用!