网易首页 > 网易号 > 正文 申请入驻

支付新手高频易发的故障,如何应对?

0
分享至

在支付行业的技术领域,新手开发者常常会遇到各种技术挑战和故障。本文汇总了支付新手高频易发的故障,并提供了实用的应对策略,供大家参考。

———— / BEGIN / ————

一路走来,我犯过很多错,也引发过很多线上故障。在带团队后,也不断看到团队内的新人频繁出现各种线上故障。这些故障或多或少都对公司的业务和新人的心理造成了一定的负面影响。

这里汇总一些新手高频易发的故障,以及应对策略,少点故障,安心过年。主要包括:渠道返回码,乱序,三高(高并发、高性能、高可用),幂等,多币种等。

对外部渠道的返回码理解一知半解

无论是四方还是三方,大部分情况下都是调用外部渠道或银行做真实的扣款,而渠道对接是新手触发故障的高风险区。

首先就是渠道返回码的映射。最常见的就是把渠道返回“系统异常”、“订单不存在”、或调用超时,推进到失败。

我现在还记得我接入的第一个外部渠道,吭哧吭哧前后忙活了1个多月,终于上线,开量,稳定运行,非常开心。

有天财务小妹找到我,说我接的那个渠道有笔支付订单对账出了长款,我们的订单是失败的,但是渠道给的对账文件是成功的。我不敢大意,赶紧去查日志和数据库的数据,原来是渠道支付接口超时,查询接口返回“订单不存在”,被映射到了“失败”。

当时被老板被狠批一顿:“你怎么犯这种低级错误!怎么能把订单不存在映射成失败呢?”那时年轻,毫不客气地回敬道:“这是银行的问题哪,他都告诉我订单不存在了,我咋还不能推进到失败呢?我不推进到失败我推进到哪里?”

虽然嘴硬,心还是虚的。在网络环境下,数据包走不同的路由分发,银行内部多个系统之间有延时,最后导致查询比支付先到,或者查询时数据还没有落库,银行返回订单不存在,很正常的。

梳理出大致如下几条准则:

  • 只有明确成功,才能推进成功。

  • 只有明确失败,才能推进失败。

  • 结果不明确,默认全部是“未知”。

  • 支付场景谨慎推进到成功,退款、提现、商家打款等场景谨慎推进到失败。

  • 典型的结果不明确场景有:订单不存在,系统异常,内部错误等。


这部分在“渠道返回码映射设计与最佳实践”的那篇文章里写得更清楚明确,有兴趣的可以历史发文里面找一找。

缺少乱序的概念

人的大脑是顺序思维,但互联网世界是乱序的。

比如以前发生一个线上问题,财务小妹说和建行的对账对出了长款:银行支付成功,我方不是成功。一查,原来是渠道异步通知接口先返回了“成功”,单据先被推进到了成功,然后同步接口才返回“系统异常”,单据又被推进到了支付失败。

这里有两个问题:

1)不应该把系统异常映射到失败,这个在上面的返回码映射已经说得非常清楚。

2)成功是终态,不应该再变更。

第2个问题的解法非常简单,只需要设计好状态机就行。比如终态不可变,只有符合要求的初始状态+指定事件,才能推进到指定的状态。有兴趣的,可去找公号历史发文里面的“支付交易订单状态机设计与最佳实践”,写得非常详细。

不仅仅是外部渠道对接,现在互联网应用都是微服务架构,微服务之间除了api接口,还通过消息来传递数据,而大部分消息是不保证顺序性的。

我时不时听见一些新人质问消息发送方:“为什么你的数据没有顺序,你需要保证你的数据要有顺序,不然我处理不了!”。我只能哑然一笑。

群里也有小伙伴说某某消息中间件可以保证有序性。可是我们如果设计一个系统,不依赖中间件来保证顺序性,不是更好么?极端场景下,就算消息中间件能保证顺序性,但在分布式场景下,我们也无法保证一笔业务只在一台服务器上处理。

缺少三高的概念

“高并发、高可用、高性能”虽然很虚,却又很实在。不同数量级的并发,对系统的要求是截然不同的。“压死骆驼的最后一根稻草”在大规模交易场景下,不是一句笑话,而是真实存在的。

以前很长一段时间我分辨不出“高并发”和“高性能”之间区别,以为两者是一回事。事实不是,高并发是指同时能接多少请求,比如同时处理1百个请求,还是1万个请求,就是并发的概念。高性能是指一个请求需要处理多少时间,比如平均每个请求处理时间是500毫秒,性能就远好于平均处理时间1000毫秒。

举几个例子:


  • 高性能:用户一般可以使用多个支付方式,比如余额、红包、满减、外部银行等,分别保存在不同的子应用中,没有经验的新人,就按顺序去各个应用中查数据。有经验的老人就知道,使用多线程同时去各子应用中查数据。这就是提高性能的方式。

  • 高可用:以前分享过一个故障,后台操作出现慢查询,在线业务去缓存查数据,击穿到数据库,数据库宕机,进而导致线上业务宕机。最后分析下来,在线业务对那个缓存数据是弱依赖,没有也能部分有损地处理业务。这就是高可用的部分。有兴趣的可以看看公号里的历史发文中的一些故障分享。

  • 高并发:高并发引发的问题太多了。比如代码new 一个大对象,小流量没事,流量一大,就会出现频繁full gc。比如数据库连接没有按预期释放,小流量也没事,流量一大,连接不够用,就会出现频繁报错。


这三块在网上有很多资料,边看边学边实践,没什么好办法。

4. 缺少幂等概念

在支付系统中,幂等极其重要,一旦出现幂等失败,经常导致资损,不是平台资损,就是用户资损。

常见有三种:


  1. 对外提供的接口升级,导致幂等失效。现在互联网应用对外的接口都会声明幂等字段,最怕就是内部做升级,不小心把幂等组合修改掉,比如原来使用订单号,后面使用订单号+日期,上游订单号没有变,日期变了,本应该是一笔订单,因为幂等失败,就成了两笔订单。

  2. 调用下游接口,把下游依赖的幂等字段内容修改了。比如下游依赖订单号+创建日期做幂等,上游在架构升级中,传入了订单号+当前日期,在跨零点的交易中,就可能出现幂等失败。

  3. 使用redis实现的分布式锁做幂等。redis的可靠性和持久存储是比不上关系数据库的,最起码需要使用关系数据库的唯一索引做幂等。


幂等在网上有很多资料,值得好好看看。更高阶的,还需要考虑异地多活的幂等场景,A机房挂了,去到B机房,会不会幂等失败。

缺少多币种或金额单位换算概念

在跨境交易中,必然是多币种的,不同的币种,最小单位是不一样的。人民币、美元都很标准,有元有分,但是日元最小单位就是元,印尼盾虽然最小单位是分,但是日常只会用到元。

在微服务框架中,如果一些子应用中使用分,一些子应用使用元,会出现什么情况?

新人还容易犯的一个错误就是手动加减乘除,容易出现金额放大缩小100倍,或者出现舍入不正确(舍入有:向下取整,向上取整,四舍五入、银行家算法等)。尤其是渠道对接时,以为内部使用的分,外部渠道接口要求是元,直接乘100,但实际上内部应用使用的是元,妥妥资损100倍。

解决方案在公号以前的发文“支付系统金额处理规范及最佳实践”中有详细说明,有兴趣可以去翻翻。

结束语

上面只是举了一些常见的例子,无法覆盖全部。

基本所有的新人都是踩着线上故障在成长。我们能做的,只是提供一些规范或案例,让新人能踩在前人的故障上成长,而不全是踩着自己的线上故障在成长。很多时候一不小心因为一个大故障而被清理门户,成长虽有,代价却过大,得不偿失。

本文来自微信公众号:隐墨星辰,作者:隐墨星辰。原标题:支付新手高频易发故障及应对

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
“死了么”APP改名Demumu,公司估值飙至近1亿元

“死了么”APP改名Demumu,公司估值飙至近1亿元

先锋新闻
2026-01-14 13:06:04
谎言被网友揭穿后,“通信专家”项立刚怒斥:你们混得不如我好

谎言被网友揭穿后,“通信专家”项立刚怒斥:你们混得不如我好

区块科技
2026-01-13 18:50:15
为何这么多人相信,《永乐大典》里有蒸汽机?

为何这么多人相信,《永乐大典》里有蒸汽机?

胡严乱语
2025-12-19 18:27:55
1949年,卫立煌前往香港,毛主席得知后下令:立刻通知合肥县政府

1949年,卫立煌前往香港,毛主席得知后下令:立刻通知合肥县政府

雍亲王府
2025-12-11 14:10:04
看见50岁出头的表妹去世后,我做出一个决定:过了70岁就去养老院

看见50岁出头的表妹去世后,我做出一个决定:过了70岁就去养老院

人间百态大全
2026-01-14 06:35:03
中央特科最美传奇女特工被判枪决,毛主席拍案大怒:她是全党的恩人

中央特科最美传奇女特工被判枪决,毛主席拍案大怒:她是全党的恩人

睡前讲故事
2025-12-21 16:15:28
腿粗屁股大的金发辣妹,黑背心配红瑜伽裤,凸显饱满臀线魅力

腿粗屁股大的金发辣妹,黑背心配红瑜伽裤,凸显饱满臀线魅力

小乔古装汉服
2025-12-17 15:54:55
3+2!重击后脑勺!勇士主帅点评杨瀚森

3+2!重击后脑勺!勇士主帅点评杨瀚森

篮球实战宝典
2026-01-14 14:59:04
奉劝大家:为了家人安全,别在厨房做这7件事,真的很危险!

奉劝大家:为了家人安全,别在厨房做这7件事,真的很危险!

Home范
2026-01-03 14:57:10
重庆合川“摇人按猪”女孩粉丝破190万!60秒以上视频广告报价2400元,商标被多方申请注册,网友提议→

重庆合川“摇人按猪”女孩粉丝破190万!60秒以上视频广告报价2400元,商标被多方申请注册,网友提议→

封面新闻
2026-01-13 16:17:06
高中各科考试规律:数学满分150分,大部分人都是不及格状态!

高中各科考试规律:数学满分150分,大部分人都是不及格状态!

好爸育儿
2026-01-08 15:58:19
呆呆爆红后,这些人做得太过分了

呆呆爆红后,这些人做得太过分了

辣条小剧场
2026-01-14 18:41:30
看见佟丽娅大腿上那两道线条了吗?

看见佟丽娅大腿上那两道线条了吗?

小光侃娱乐
2026-01-03 15:40:02
上海公安确认:是演员胡歌

上海公安确认:是演员胡歌

掌中邯郸
2026-01-14 07:06:24
新一轮通胀悄悄来了?普通人攥紧这4样宝贝,日子稳赚不慌

新一轮通胀悄悄来了?普通人攥紧这4样宝贝,日子稳赚不慌

复转这些年
2026-01-13 23:50:17
特朗普急着大炼稀土,却发现一个致命真相:中国同时垄断两样东西

特朗普急着大炼稀土,却发现一个致命真相:中国同时垄断两样东西

菠萝欣赏家本尊
2026-01-14 16:16:48
600105子公司,拿下核聚变材料订单

600105子公司,拿下核聚变材料订单

新浪财经
2026-01-14 11:13:46
190万手封死涨停!002131,9天6板!

190万手封死涨停!002131,9天6板!

证券时报e公司
2026-01-14 10:46:51
时隔两年半降杠杆!多只权重股尾盘竞价现巨额压单,发生了什么?

时隔两年半降杠杆!多只权重股尾盘竞价现巨额压单,发生了什么?

每经牛眼
2026-01-14 16:07:36
太棒了!苹果宣布推出全新服务,最低仅 6 元

太棒了!苹果宣布推出全新服务,最低仅 6 元

XCiOS俱乐部
2026-01-14 09:36:08
2026-01-14 19:40:49
人人都是产品经理社区 incentive-icons
人人都是产品经理社区
想要成为大牛先从学做产品开始
64319文章数 311520关注度
往期回顾 全部

科技要闻

携程因涉嫌垄断被市场监管总局调查

头条要闻

男子驾车撞死一家三口获死缓 被害人家属递交抗诉申请

头条要闻

男子驾车撞死一家三口获死缓 被害人家属递交抗诉申请

体育要闻

你是个好球员,我们就拿你交易吧

娱乐要闻

何晴去世30天,许亚军终于发声

财经要闻

涉嫌垄断!市场监管总局对携程立案调查

汽车要闻

曝Model Y或降到20万以内!

态度原创

时尚
教育
旅游
本地
数码

比变老更可怕的是不会穿!中年女人掌握4个技巧,优雅不费力

教育要闻

牛津放榜!北京斩获20枚offer!多所黑马校杀出

旅游要闻

云南广南:云海翻涌时 群山皆成诗

本地新闻

邵阳公益诉讼检察主题曲:《守望星》

数码要闻

创作者福音!这台笔记本让“既要又要”成为可能

无障碍浏览 进入关怀版