支付业务以及支付业务的质量保障
前言:
前一段时间要在组里分享支付业务,网上找了很多文章,发现有好多也是我自己写的。回头看看3年前的文章,当时对支付有一定的测试经验,但是对支付的了解也不是很深。经过在dd这近两年的支付相关的测试经验,对支付业务有了更深的了解和体会。借着这次机会,把我所认识到的支付业务和支付相关质量保障手段,都在这里一一列出,分享给大家。
part1:支付业务
支付的本质,就是发生在买方和卖方之间的金融交换,是社会经济活动中所引起的货币债权转移过程。
一、支付的发展历程
远古时期,古人用铜币和别人交换所需要的生产资料;随着时代的发展,出现了银行作为信用中介,完成买卖双方和银行的金融服务;再随着最近十年互联网和移动支付时代的到来,金融活动变得更加复杂,也新生了很多其他种类的支付方式(比如二维码扫码支付等等),第三方支付机构应运而生。
二、行业“黑话”
工欲善其事必先利其器,所谓了解一个方向,先学学行业 “黑话”,这样别人说的啥你也能听得懂。
- 第三方支付:拥有支付牌照的机构;支付宝、微信支付等等;
- 零钱:客户在第三方支付机构支付体系下的现金户余额,类似支付宝余额、微信的零钱;
- 两联:银联和网联;
- 客户:指个人和商户,统称为客户;
- 备付金账户:三方支付机构在人民银行开立的,存放用户在交易过程中产生的资金;备付金账户产生的背景是啥呢?因为支付机构作为第三方,其实是不能直接触碰用户的钱的,监管机构要求,第三方机构收取的钱,都统一放在银行的备付金账户里。(所以大家不用担心存放在第三方机构的资金安全)
三、有第三方支付机构的场景
//懒得画了
四、第三方支付的能力
第三方支付一般是提供了哪些能力/产品?
- 充值、提现、查询、转账、退款
- 支付、代扣、代付
- 实名认证、签约
- 记账、对账、出账
五、第三方支付架构
支付宝:
京东金融:
参考博文:https://www.cnblogs.com/zhangtan/p/7715969.html (里面有详细的介绍和各家支付机构的图)
大家看看各家支付的机构图,感觉都很牛逼,都很厉害。不难发现,每家有不同之处,其实也有很多相同的地方。相同之处就是解决支付业务的共同要解决的问题:
- 问题一:怎么准确又快速,并且合法合规的从用户手里扣钱?-- 客户系统(用户+商户)可以解决,客户系统可以进行用户实名,商户注册,存储签约信息等等
- 问题二:怎么才能把钱扣成功?并且完整记录扣钱的过程?-- 支付中心+账务核心+会计核心可以解决:支付中心提供各种出金入金服务;账务核心可以进行记账对账;会计中心又能提供各种科目汇总和日期处理
- 问题三:扣完钱后,怎么去给商家结算?-- 清结算核心可以解决:计算卖家手续费等等
part2:支付业务质量保障
支付业务的质量保障体系,涉及到一些关键信息,这里就不列出来了,分别从几点说吧:
一、业务测试
由于支付业务的特点,个人认为,在业务测试中,主要是两大点吧,一个是支付单子的钱,一个是支付单的状态。钱的话,有这种重复支付的异常;使用各种优惠券的场景;单位也需要注意,有的通道可能是元,有的通道可能是分;退款时,如果是部分退款,注意退款的总金额不超过订单金额。那支付订单状态,要注意支付超时的情况,支付失败等等一些情况,等等。
二、自动化测试
那在自动化测试中,支付业务有啥特别的呢?
- 首先在断言的时候,校验订单金额,支付核心模块不同系统订单的状态,可能不同系统,成功状态不一样;比如异步的代扣订单,有时延,提交完订单立刻去调查询接口查询时就可能查询到的是订单在支付中。所以我们可以写个循环去读数据库的状态,数据库状态OK了后,再去调查询接口
- 因为线上的cases都是扣的我们自己真实的钱,所以,我们一般是把扣款,查询和退款放在同一个cases中,支付完再退款,完成单笔订单资金自闭环
- 线上涉及到真实的资金变动,我们线上有单独的测试商户号,不会对线上真实的是商户账单产生影响
三、性能测试
那在性能测试中,支付业务有啥特别的呢?每个业务都去考虑的仿真度这些这里就不展开讨论了,支付业务最重要的是,钱的安全!!!
措施:
- 压测开关控制:通过开关控制是否接受压测流量
- 压测的交易数据隔离:影子库/影子表
- 资金监控告警:大量资金变化报警
- 资金闭环:资金流动能闭环,不会产生资损
- 压测专用用户:不会影响线上真实用户的钱
四、线上监控
最后就是线上监控了,支付业务有大家通用的机器性能的监控,接口qps的监控;除了这些,可以会还有一些业务维度的资金的监控等等
结束语:
以上就是我关于支付业务的理解,和支付业务质量保障每个方向的特别之处的阐述。肯定有不足的地方,也有遗漏的地方,欢迎大家留意讨论👏
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
2019-07-21 Java多线程-sleep和wait的区别
2019-07-21 Java多线程-线程的状态
2019-07-21 Java多线程-处理线程的返回值
2019-07-21 Java多线程-创建多线程:继承Thread类&实现Runnable接口
2019-07-21 Java多线程-start和run方法的区别