支付系统——支付测试

一、商户入网测试

内部接口测试点:

1、接口参数(必填项、字符长度、字符类型、身份证、银行卡)

2、幂等性测试(并发测试(fiddler、jmeter)、重复发送参数一样的请求)

3、安全性:传输加密(敏感信息——姓名、身份证、银行卡、手机号、商户号)

4、服务器日志(还原用户行为),日志对敏感信息要脱敏

5、数据存储,加密处理

6、状态转换(审核中、审核通过、审核拒绝)

7、异步接口(同步接口)、回调(根据第三方接口文档自己模拟、Mock服务)、查询

外部接口(抓包出来看)

其他测试点同内部接口

二、商户配置测试

测试点:

1、接口参数(必填项、字符类型、字符长度、各个字段)

2、配置多种支付方式、配置一种支付方式(同一个上游而言)

3、渠道优先级(在这平台和支付宝/微信之间,可能会对接另外1个或2个等等平台,这个称渠道)

4、支付方式配置好之后,有没有生效(支付一笔,然后去抓包,需要抓内部接口参数和外部接口参数)

5、内部接口参数(若接口加密无法抓包,可以把日志筛出来,对比配置的支付方式参数与支付时的参数是否一致)、外部接口参数(支付后上游返回的参数是否与支付的上游参数一致)

三、支付测试

 测试点:

内部接口、外部接口

1、接口参数(必填项、字符类型、字符长度、各个字段)

2、安全(加密、日志脱敏)

3、订单号唯一(大数据量并发)、订单号生成规则(5万多单,可能订单量大了之后订单号重复)

4、数据库连接池(内存泄露)

5、请求频次(同一个IP,一秒钟一般不会超过10次,多线程并发)

6、回调(各种场景)、查询(主动查询支付结果)

7、重复支付(同一笔订单,只能成功一笔)(同一笔订单指唯一key(订单号+商户号一样))

8、接口幂等(支付2笔,所有数据都一样)

9、支付金额边界值(限额、单笔最大支付金额、当天最大金额、最小支付金额、小数位(精度、99.95、0.01、0.8888))

10、性能

11、支付方式枚(微信、支付宝)

12、支付渠道切换

 四、清分测试

清分:清算数据(分润)

测试点:
1、清分的时间,实时清分(数据库订单状态、清分明细)

2、清分明细表(记录各个角色应该拿多少钱)

3、通过定时任务(2分钟清分一次,批处理)

4、同一笔订单只能清分一次(订单号)

5、精度问题(清分计算规则)
  会计:资产=负债+所有者权益
    1)四舍五入(账对不齐)
    2)银行家算法(账对不齐)
    3)兜底算法(若聚合平台兜底,那就是平台利润=总利润-地推利润-微信/支付宝利润,地推和支付宝/微信的利润按银行家算法计算)

6、算法取值,计算过程是否有误

7、测试技巧:通过excel精准设置好公式,直接往excel填对应的数据即可

五、对账测试

 对账:上游平台收到的订单与自己平台的是否一致(包括金额,状态)

对账的逻辑:
1、以自己平台为准和上游平台的订单进行对账(支付时间、订单号、支付状态(支付成功)、金额)

2、以上游平台的订单为准,和自己平台进行对账

3、支付对账、退款对账

4、对账执行时间:凌晨执行对账任务,设置了定时任务的

5、开始对账--是否有挂账(在7天之内去找挂账的数据进行对账)--是否掉单(在7天之内去找掉单的数据进行对账)---对账完成

测试点:
1、对账结果:对平、挂账(我们平台有订单,上游无订单)、掉单(我们平台没有上游有平台未存储订单信息)

2、日切场景:在我们平台23:59:59,到上游第二天,数据构造(修改数据库、修改服务器的时间)

3、销账

4、重复对账(支持),先删除(逻辑删除)当天的所有的对账数据,重新对账

5、定时任务写的有没有问题(能否正确触发定时任务)

6、对账性能(10万条账单,10分钟以内完成对账)

7、对账单的解析:上游订单一般通过文件形式放到一个服务器上面,解析正常、解析异常

8、管理端的数据统计

六、结算测试

结算逻辑:

结算:平台做垫资结算(信息流来进行垫资:订单信息),为了垫资而作的结算,提升用户体验。

结算维度:机构(微信、支付宝、京东、美团)、渠道(进件商户公司)、商户(大商户)

      好处:能控制资金流
结算发起的:2次审核(运营审核、财务审核)--发起结算

结算逻辑:结算服务根据你的结算维度去获取对账结果,根据对账结果(已经对账对平的订单)进行结算

测试点:

1、运营平台进行操作结算(前端做防多点),点一次发一个http请求,你网络卡重复触发结算按钮(弱网测试,狂点)

2、直接测后端接口:幂等校验(脚本并发)

  后端实现:触发这个接口,提前请求一个接口,后端生成一个唯一的UUID给前端然后再带着这个UUID 去发起结算请求,python也有UUID

3、重新结算(支持)

4、非待结算的订单进行结算(未审核的进行结算)

5、未对账对平的订单进行结算(不支持)

6、批量结算(支持)

7、结算性能(时间不能太长,5分钟)

8、各种维度都要进行结算测试,(混合维度不支持)

9、金额精度(0.99,100.99,负数,0),各种边界值都要测

10、结算一定要稳定,容错性要强(服务器原因挂掉了),恢复数据,数据库事务,触发结算之前先备份结算相关的表数据

七、清分、对账、结算之间的关系

测试点:

1、清分:做告警处理,清分异常了

2、对账:对清分数据进行校验(对比支付笔数,如果笔数差距太大,就没必要对账,触发告警机制(没对平的超过多少笔、未对平金额超过多少))、钉钉消息通知、微信消息通知、邮件、对账报错的日志

3、结算:容错处理,对账结果混乱了(只要发现对账有金额有问题的,马上停止结算,回滚已经结算的数据)

4、整个平台

  1)各个页面的数据统计,准确性,一致性

  2)财务报表

八、商户提现

角色:地推、商户、代理渠道

提现流程:客户端(web、app、小程序) --- 支付平台后端 ---发送提现请求到合作银行

测试点:

1、各个角色的提现,角色的状态

2、内部接口(异步):客户端---支付平台后端(核对请求接口参数、测试场景)

3、外部接口(异步):支付平台后端 ---合作银行(测试桩自测、联调测试:测试环境、线上环境)

4、回调接口测试:外部回调(1、银行主动调你,2、主动查询(1秒钟6次))

5、具体场景:

  1)黑白名单(四要素、mac地址)

  2)提现额度(每天提现额度(渠道)、单笔限额、用户余额(平台--银行(子账户))

  3)提现额度锁定(余额=1000,提1000,二次发起提现不能成功,余额不足

  4)提现并发(2笔一起提现,消息队列,锁额度的时间)

  5)同一笔订单提现多次(后端做2个接口,A接口(返回uuid),B接口(提现接口))

6、提现失败后的处理:(解冻额度、短信提醒、支持重新发起提现)

7、运营:支持后端重新提现(运营操作)

8、提现手续费:查询用户配置的手续费与他提现扣款的手续费是否一致

  内扣:提现金额等于到账金额,扣余额的钱

  外扣:提现金额大于到账金额,扣到账的钱

9、账户种类:余额、垫资账户、冻结账户

  可提现额度=余额+垫资-冻结

10、虚拟账号之间的关系要梳理清楚

11、通过脚本去校验

12、提现流水、出款渠道信息(出款路由逻辑)

九、退款测试

测试点:

1、提现失败的退款

  1)对应银行接口文档各种失败的场景

  2)退款各个账号计算是否正确

  3)提现流水,数据逻辑删除(有效性)、失败原因

2、商家发起的退款

  1)全额退款

  2)部分退款

  3)退款清分(将支付订单的利润退回来),地推、渠道、商户退款对账

  4)支付订单银行要收费的,平台承担银行支付所产生的手续费

  5)退款金额原路返回

  6)冻结商户的可提现金额,退多少冻结多少

  7)单笔交易要限制退款次数(避免退多次,垫付过多的手续费,5次)

  8)边界值(动了账户系统,提现金额边界值一定要测)平台余额、银行的余额

十、支付系统整体架构

 十一、聚合支付系统内部调用关系

1、网关服务

  1)服务转发

  2)拦截攻击,无效请求

2、鉴权
3、交易服务
4、商户服务
5、风控服务:非法请求拦击、黑名单(老赖、被执行人、前科)
6、清分服务
7、对账服务
8、结算服务
9、渠道服务(上游(出款渠道、支付渠道)、下游(合作商、合作机构))
10、出款服务(对接出款渠道)

十二、支付合规

1、反洗钱

  • 洗钱

    将非法所得合法化的行为

  • 反洗钱

    为杜绝洗钱行为,我国陆续出台了多部法律法规,对金融机构反洗钱工作进行指引,这些法律法规就是反洗钱系统建立的依据

  • 相关文件

    《金融机构反洗钱规定》
    《金融机构大额交易和可疑交易报告管理办法》
    《金融机构洗钱和恐怖融资风险评估及客户分类管理指引》
    《金融机构客户身份识别和客户身份资料及交易记录保存管理办法》

 

  • 反洗钱主要手段
  •   客户身份识别与客户风险评级

    反洗钱评级模型根据人行的要求建立,综合考虑你的业、所在地区、公司主营业务等等,对每一个客户进行风险评级

  •   监控大额交易,对大额交易进行上报
  1. 当日单笔或者累计交易人民币5万元以上(含5万元)、外币等值1万美元以上(含1万美元)的现金收支
  2. 非自然人客户银行账户与其他的银行账户发生当日单笔或者累计交易人民币200万元以上(含200万元)、外币等值20万美元以上(含20万美元)的款项划转
  3. 自然人客户银行账户与其他的银行账户发生当日单笔或者累计交易人民币50万元以上(含50万元)、外币等值10万美元以上(含10万美元)的境内款项划转
  4. 自然人客户银行账户与其他的银行账户发生当日单笔或者累计交易人民币20万元以上(含20万元)、外币等值1万美元以上(含1万美元)的跨境款项划转

2、支付二清

  • 二清定义
  1. 二清就是二次清结算,本质是没有清结算资质的机构,却提供清结算的服务
  2. 比如有清结算资质的机构将资金结算给入网的商户后,该商户再将资金清结算给下游的子商户,若该商户没有清结算资质的话,就属于二清
  • 二清分类
  1. 资金二清:从资产安全的角度来说,资金二清危害大,二清公司能控制商户资金,存在卷走资金的风险,所以资金二清是需要严厉打击
  2. 信息二清

    信息二清,二清公司只涉及到了信息的清算,而不接触资金,资金仍由持卡人清算协会直接支付给商户,二清公司为了获取交易信息,只就交易信息进行上传下达,这种情况是没有资金安全问题,但是这种行为也属于违规

    金融安全不仅包括资金安全,也包括金融信息安全。
   《银行卡收单业务管理办法》:明确收单机构不得以任何形式存储银行卡磁道信息或芯片信息、卡片验证码、卡片有效期、个人标识码等敏感信息
   《关于加强银行卡安全管理预防和打击银行卡犯罪的通知》:明确"对于涉及客户信息和交易信息处理的外包服务机构,收单机构不得允许外包服务机构存储银行卡卡号以外的信息"

十三、面试题

1、说一下支付测试的流程?

支付环节:商户入网——对商户进行配置(支付方式,支付渠道)——商户激活收款码——用户发起支付——清分——对账——结算

支付后环节:提现(商户、渠道、地推提现)——退款(商户)

2、是否有第三方?与第三方接口是怎么测试的?

有,根据第三方接口文档,自己模拟构造第三方接口回调

3、测试支付的时候有没有做过并发?怎么做的?

有,用jmeter做并发,或者写python脚本,发送多个requests请求

4、作为第三方平台和你们平台肯定有账务清算的一个业务流程,那么这个清算是怎么操作的呢?

先对第三方平台和本平台以及其他需要清分的角色清分,然后将第三方平台与本平台与上游机构进行对账,平账,再对平账的账单进行结算。

5、结算方式是T+0还是T+1?

T+0,会有个垫资账户

6、你们系统的对账怎么做的?

设置定时任务,凌晨执行对账任务,开始对账--是否有挂账(在7天之内去找挂账的数据进行对账)--是否掉单(在7天之内去找掉单的数据进行对账)---支付对账和退款对账完成

7、支付的时候是用的真的钱支付么?还是?

用的虚拟账户做测试,上线后用真钱,用0.01小额跑支付流程

8、用户在微信支付成功后,支付成功的信息需要异步回调通知系统,要怎么进行接口测试

根据第三方接口文档自己模拟回调或者用Mock服务

posted @ 2024-03-25 10:23  芒果93  阅读(17)  评论(0编辑  收藏  举报