首页 > 编程语言 >订单重复提交掉单问题硬解析(初级程序员毕业门槛)

订单重复提交掉单问题硬解析(初级程序员毕业门槛)

时间:2024-09-10 10:25:12浏览次数:3  
标签:这个 动作 订单 微信 问题 程序员 初级 支付 解析

解决支付订单,重复提交问题!-CSDN博客   (这是原文章地址)

这篇文章其实写得挺好,近期我因工作需要,去修改了别人设计的订单系列接口,和文章中的结构类似,当然没有文章中设计得那么全面(实际工作中的代码都这样,特别是中小公司)

那这篇文章已经写很好了,我写啥?

两点: 1,宏观分析    2,给你一条行为线,让你能重现整个场景.

1,宏观分析.我们可以很多老程序员经常说的一个观点入手,业务为王,技术其次.

什么叫业务,上文整个对订单这个事情的各种安排,合在一起,就是业务.说到这里我相信各位是不理解的,我们继续拆分,这个订单支付问题牵扯几个主体:  客户,我们的系统,微信支付系统.  

主体有三方,而我们平时学习和测试项目,都是两方,而多一方主体,就多一种可能性,而解决多方协作有可能产生的问题的过程,就是所谓的业务.也就是逻辑.

(大家先不用去想这里我对逻辑的解释,大家只需要把这个过程简单理解为,解决复杂问题.)

解决复杂问题的第一步,先简化问题.要理解这个观点,我们就引入了两个关键词了,这也是各大面试题中经常出现的两个词:   幂等性和最终一致性.

这两次我以前听着真的很恶心,但理解之后,这两词的确是在试图简化复杂问题.

幂等性:               有些动作只能做一次(例如付款)[这就解决了重复付款,带来各种退款,商议等等各种奇怪事情]

最终一致性:        有些动作是几个动作合在一起的,所以要么一起成功,要么一起失败.[这样就直接避免了去判断n个动作中到底哪个动作出了问题,或者视图修复某一个细微的动作,而是直接将整个链条当做一个动作处理,对复杂问题进行了简化]

额,好像解释和原文章类似.   补充一点吧,就是上诉关联的三方,只有微信支付是我们不可控的,所以很多节点都是围绕请求微信支付这个外部接口后,才来操作的.

再说三个总结话术:

1,调用微信接口之前和之中,出现任何问题,说明支付行为这个关键行为没发生,所以,一切服务这个行为的辅助行为应当全部失效.  (技术实现主要就是事务)

2,只要调取微信支付这个接口,顺利执行了,就说明关键行为已经发生,那么这个时候就必须利用一切手段,多个方面,让系统知晓这个事,多个点互相应证,自然就能够减少问题出现的可能.(技术实现就是,,主动查询,被动验证[表设计,字段设计,缓存])

好了,理论到此为止了.下面的内容就是从建立一个项目,给大家复现一下上述问题.只有上手,才能学会(当然,得后面空了继续写,目前文章就到此结束,工作繁忙啊...)

标签:这个,动作,订单,微信,问题,程序员,初级,支付,解析
From: https://blog.csdn.net/javacynchronized/article/details/142072706

相关文章

  • Spring Cloud全解析:熔断之Hystrix线程隔离导致的问题
    Hystrix线程隔离在微服务框架中,可能一个服务需要调用多个微服务,在tomcat中运行时,tomcat只是分配了100个线程,由于多个服务之间调用的时间消耗过长,可能会导致线程耗尽,而在Hystrix中存在线程隔离,对于每个微服务分配一个线程池,访问某个微服务时就从对应的线程池中取线程,如果对应线程......
  • ISO27017云服务管理体系认证全解析
    ISO27017云服务安全管理体系认证是一种专门针对云服务提供商的信息安全风险和控制进行评估和认证的国际标准。一、背景与意义随着云计算技术的迅速发展和广泛应用,越来越多的组织选择将其业务数据和应用程序存储在云中。这给信息安全带来了新的挑战,因为云服务提供商需要确保客......
  • 军工厂电气工程师到知名互联网公司程序员,我吃饭的家伙有哪些
    大家好,我是欧阳。今年刚好是欧阳三十而立之年,虽然没有立起来。这篇文章来聊聊我从一名军工厂电气工程师到某知名互联网公司程序员,这期间我吃饭的家伙都有哪些。军工厂期间欧阳大学读的是“电气工程及其自动化专业”,毕业后进入了老家的一个军工厂,成为了一名电气工程师。军工厂的......
  • 【愚公系列】《微信小程序开发解析》017-设备API
    ......
  • PHP 程序员学会了 Go 语言就能唬住面试官吗?
    大家好,我是码农先森。唬住了50k,唬不住就5k。这句话一直是PHP程序员之间相互吹捧、吹牛逼的笑点,每次面试过后都会挠挠头上仅剩的几根头发,回想自己是否吹牛逼会过了头。我经常在微信程序员撕逼群里,看到群友因为某个技术点而争执不休,时而讨论这个技术能不能在面试过程中突出自......
  • Java Lambda 表达式为何无法抛出检查型异常?——函数式接口的限制解析
    JavaLambda表达式为何无法抛出检查型异常?——函数式接口的限制解析假设场景我们需要将一组Employee对象保存到文件中,这可以通过ObjectOutputStream序列化员工对象实现。我们利用forEach方法遍历员工列表,并调用writeObject()方法序列化数据。然而,writeObject()会抛出......
  • 程序员世界大冒险
    今天上午上了刘丹老师的课,感觉还是有一点希望的,但是到了下午开始考试,我就知道我想太多了/(ㄒoㄒ)/~~。下午进行了java考试,由于假期并没有认真学java,所以直到开始写代码之前,我都认为Java真不好写。但是当我开始写时,Idea直接把我的疑虑全打消了......
  • Reflection 70B 解析
    1.Reflection70B背景与发布Reflection70B由HyperWrite推出,基于Meta的Llama3.1-70BInstruct模型。它使用了一种新的自我纠错技术,并在第三方基准测试中表现优异,超越了其他开源模型。速记句:Reflection70B是基于Llama3.1的全新开源模型,具有强大的纠错能力......
  • 程序员一定会感兴趣的5个关于编码助手话题
    ......
  • 阿里巴巴中国站商品搜索API返回值解析与实战
    阿里巴巴中国站(现通常指1688.com)是一个大型的B2B电商平台,为企业和商家提供商品交易、供应链服务等。然而,需要注意的是,阿里巴巴官方并不直接提供公开的API接口给所有开发者进行商品搜索等高级功能,这些服务通常需要通过官方合作伙伴计划或特定服务接口来获取。不过,为了回答你的问题,我......