【支付系统】支付系统中锁的作用-超卖及幂等操作

这篇具有很好参考价值的文章主要介绍了【支付系统】支付系统中锁的作用-超卖及幂等操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在支付系统中,最重要的两个步骤为下单和回调.皆需要加锁.

下单加锁的作用: 通过下单订单号进行加锁,防止重复下单,或者锁库存防止超卖等

回调加锁的作用: 支付系统的回调通常是间隔几秒进行多次发送,为了防止网络积压导致的同时收到多个回调,所以要对回调时携带的订单号进行加锁,确保只对订单执行一次操作.

下单易错点

如果是购买业务,最常见的问题就是超卖问题,我们可以对商品进行加锁,锁住之后查询库存.

获取到库存之后就可以创建订单等一些列操作,通常我们会给订单一个超时时间,超过指定时间订单取消自动回滚库存,这里需要一个注意点,支付下单本身也有个支付的超时时间,建议订单超时时间大于支付超时时间,避免订单超时库存回滚,订单又被支付了

如果是充值业务,下单时不必加锁 也不需要超时时间,不支付就不充值,不需要额外操作,只需要在回调时加锁即可,防止多次回调,多次添加余额

何为回调

因为用户在扫码支付的时候已经脱离了我们的系统,系统是无法感知用户的支付操作的,所以每次下单我们都要传递一个回调url提供给支付系统,支付系统在感知到支付成功后,会向我们提供的回调url发送请求,通知是否支付成功.在接收到通知后对订单进行操作,也就是这个时候我们需要对订单进行加锁.

客户端如何知道支付成功

客户端在下单后会显示二维码,用户扫描二维码后,当前页面同样无法感知是否支付成功,所以需要再展示二维码页面加个定时器,间隔一秒像后端发送查询订单状态的请求.一旦查询到订单支付成功,就跳转到支付成功页面.文章来源地址https://www.toymoban.com/news/detail-480305.html

到了这里,关于【支付系统】支付系统中锁的作用-超卖及幂等操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 阿里二面:Java中锁的分类有哪些?你能说全吗?

    在多线程并发编程场景中,锁作为一种至关重要的同步工具,承担着协调多个线程对共享资源访问秩序的任务。其核心作用在于确保在特定时间段内,仅有一个线程能够对资源进行访问或修改操作,从而有效地保护数据的完整性和一致性。锁作为一种底层的安全构件,有力地

    2024年03月25日
    浏览(41)
  • 前任开发在代码里下毒了,支付下单居然没加幂等

    分享是最有效的学习方式。 又是一个风和日丽没好的一天,小猫戴着耳机,安逸地听着音乐,撸着代码,这种没有会议的日子真的是巴适得板。 不料祸从天降,组长火急火燎地跑过来找到了小猫。“快排查一下,目前有A公司用户反馈积分被多扣了”。 小猫回忆了一下“不对

    2024年01月16日
    浏览(50)
  • MYSQL意向锁的作用

    结论:当一个事务要对表进行锁定时,首先会获取相应的意向锁。其他事务可以通过检查意向锁来判断是否有其他事务在更细粒度的级别上对表进行了锁定。这有助于避免冲突和提高并发性能 在讨论此问题之前我们应当明确两个前提: Innodb存储引擎支持行锁和表锁共存 行锁

    2024年03月09日
    浏览(53)
  • kafka-保证数据不重复-生产者开启幂等性和事务的作用?

    适用于消息在写入到服务器日志后,由于网络故障,生产者没有及时收到服务端的 ACK 消息,生产者误以为消息没有持久化到服务端,导致生产者重复发送该消息,造成了消息的重复现象,而幂等性就是为了解决该问题。 通过3个值的唯一性去重: PID:生产者ID 分区号 seq:单

    2024年02月14日
    浏览(44)
  • 【微信小程序】Java实现微信支付(小程序支付JSAPI-V3)java-sdk工具包(包含支付出现的多次回调的问题解析,接口幂等性)

          对于一个没有写过支付的小白,打开微信支付官方文档时彻底懵逼 ,因为 微信支付文档太过详细, 导致我无从下手,所以写此文章,帮助第一次写支付的小伙伴梳理一下。 一、流程分为三个接口:(这是前言,先看一遍,保持印象,方便理解代码) 1、第一个接口:

    2024年01月16日
    浏览(77)
  • 秒杀系统常见问题—库存超卖

    大家好!我是sum墨,一个一线的底层码农,平时喜欢研究和思考一些技术相关的问题并整理成文,限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。 以下是正文! 首先上一串代码 我们看一下这串代码,逻辑用流程图表示如下: 从图上看,逻辑还是很清晰明了

    2024年02月06日
    浏览(52)
  • 支付宝认证的作用是什么?考试方向有哪些?

    通过考证书来提升自己的能力,是现在的打工人经常会做的事,而对于从事信息通信技术行业的人来说,可以选择的证书非常多,其中支付宝认证是一个新设立的证书,但是实用性非常高。支付宝作为我们生活中常用的软件,需要大量的专业人才来维护,而支付宝认证体系就

    2024年02月08日
    浏览(43)
  • 【Spring Cloud系列】- 分布式系统中实现幂等性的几种方式

    在开发订单系统时,我们常遇见支付问题,既用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱了,流水记录也变成了两条。在以前的单应用系统中,

    2024年02月10日
    浏览(46)
  • Mysql、Oracle 中锁表问题解决办法

    1. 确定锁定表的原因: 首先,需要确定是什么原因导致了表的锁定。可能的原因包括长时间的事务、大量的并发查询、表维护操作等。 2. 查看锁定信息: 使用以下命令可以查看当前MySQL数据库中的锁定信息: 3. 释放锁定: 如果确认某个会话或事务占用了表锁,可以考虑终止

    2024年02月12日
    浏览(67)
  • (五)库存超卖案例实战——使用zookeeper分布式锁解决“超卖”问题

    本节内容使用zookeeper实现分布式锁,完成并发访问“超卖”问题的解决。相对于redis分布式锁,zookeeper能够保证足够的安全性。关于zookeeper的安装内容这里不做介绍,开始本节内容之前先自行安装好zookeeper中间键服务。这里我们利用创建zookeeper路径节点的唯一性实现分布式锁

    2024年02月06日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包