涉及到第三方支付接口该如何测试?

    现在有不少测试朋友做的项目中,可能也会涉及到支付相关的功能。比如:做商城的,做游戏的以及其他在线交易的网站、APP等。如果支付出了问题,或者用户拿少的钱通过篡改请求数据购买大金额的商品,如果是实物的话,发货前还有可能被发现。如果是虚拟商品话费、游戏币等就有可能造成损失。

    所以,不管是实物也好,虚拟商品也好,涉及到支付功能时,大家在测试的过程中一定要重视,否则,会造成很大损失。之前可能大家也都看到过或者听过一个bug损失4.6亿美金的惨痛教训或者身边也有发生过其他因为支付功能的bug导致直接损失的案例。

    给大家举个真实的案例:比如使用支付宝购买虚拟商品,往支付宝跳转时,篡改了小的金额,结果购买虚拟商品成功了。(原本10元的商品,0.01元就搞定了)。多么可怕的一个bug啊,当然这个问题可能对于一个做过支付有过经验的测试朋友来说,可能会想:哎呀,这个问题都发现不了,还做什么测试?是的,问题是很简单,对于一个刚入职场的测试朋友或者没有支付相关经验的测试朋友来说,很有可能会忽略。

    那么,问题来了,对于支付模块的相关测试,我们应该如何进行呢?比如,针对游戏来说,使用第三方支付往游戏充值游戏币功能,看起来是不是很简单?

大家主要思考下以下内容:

1. 支付都是与第三方支付(支付宝、微信、财付通、QQ钱包、短信支付等)进行对接,那么,是否了解了第三方接口有哪些?是否都能清楚我们的产品与第三方是如何交互的?是否能画出流程图?

2. 异常场景有哪些?

3. 有哪些风险,如何规避?

其实第三方支付的流程,与商户的对接方式基本相似,大同小异

    先看下流程图,是否对流程图有些了解,不仅仅是做支付功能相关测试才去搞清楚其中的流程,做其他的测试一样也要搞清楚流程,只有搞清楚流程,才能更好的评估其中的风险,才能有利于测试用例的设计。当然流程图中只是提到了商户与第三方是如何交互的,同样商户内部处理的流程也要有所了解及数据怎么存储的,涉及到哪些DB也要清楚。流程清楚之后,我们再来看看其中会涉及到哪些接口?

这个支付流程图里面就涉及到了第三方支付接口,比如:

下单接口:商户提交下单请求到第三方支付接口,第三方支付收单成功后返回下单成功结果给到商户系统。(下单接口的最终处理结果分为下单成功和下单失败,若未收到明确结果可调用单笔订单查询接口查询结果。)

支付接口:调用该接口时指定支付参数,完成买家账户向商户账户的支付,采用页面跳转交互模式和后台通知交互模式。(结果分为两路返回:一路为前台在return_url页面跳转显示支付结果;一路为后台在notify_url收到支付结果通知后进行响应。)

退款接口:调用第三方支付的支付请求接口返回付款成功后,在需要做退款处理时调用退款请求接口发起退款处理。(退款接口的最终处理结果分为退款成功和退款失败,若未收到明确结果可调用退款查询接口查询结果。)

单笔订单查询接口:根据订单号查询单笔订单信息和状态。

退款订单查询接口:调用第三方支付的退款接口返回后,在需要查询退款请求状态可调用退款订单查询接口查询退款订单的状态和订单信息。

那么针对第三方的接口,我们大致也有所了解了,接下来针对测试过程中涉及到主要的测试点整理如下:

测试过程中需要注意的主要测试点及异常场景:

1. 首先要保证接口都能正常调用;

2. 生成一笔订单,支付完成后,同步或异步重复回调,只有一次有效;

3. 生成一笔订单,复制订单号和金额,再次生成一笔订单,用fiddler设置断点,用第一笔已完成的订单号和订单金额去替换现有的订单号和金额,无法完成支付;

4. 生成一笔订单,跳转到第三方时修改金额,无法到账,或者如果是游戏充值游戏币的话,到账为篡改后的金额对应的游戏币;

5. 异步通知屏蔽,同步有效,进行支付,同步能够正常到账;

6. 同步设置无效,异步有效,进行支付,异步能够正常到账;

7. 同步异步都设置无效,在第三方支付完成后,在重发机制时间范围内,设置异步有效,到下次通知时间点时,能够正常通知到账(补单机制的验证,如果商户收到第三方支付成功的通知后,要告知第三方支付收到了成功的通知,如果第三方支付收到商户应答不是ok或超时,第三方支付就会认为通知失败,会在规定的时间内持续调用notify_url,一般有时间或次数的限制);

8. 针对支付订单在数据库中存储是否完整和正确进行校验(比如:第三方订单号--方便与第三方对账和问题排查、订单金额、订单状态等);

9. 如果是用户购买实物商品,用户发起退货,要保证退货流程正常,资金能正常返还,要考虑下并发情况的验证以确保安全性;

10. 如果是用户购买虚拟商品,比如话费、油卡之类的商品,只有在发货失败的时候才能发起退货,注意验证;

遇到过的坑:

* 用户购买100元游戏币时,前往第三方支付跳转进行金额的篡改由100元改成0.01元,结果就拿了0.01元充值了100元的游戏币。对订单金额没有做校验导致这样的后果,损失比较大。大家在测试的过程中一定要注意对服务端进行校验,支付时数据的篡改一定要有校验。

* 当同步、异步通知都存在的情况的,异步通知(第三方支付成功后台通知),没有到账,导致部分用户充值不到账,引起客诉。当同步、异步并存的时候,一定要分别对同步和异步进行检验,确保都能正常到账。

我们所做的绝大多少的互联网产品都会涉及到第三方支付,所以支付功能必然是重要的,作为测试互联网产品的一员,我们必须要做好支付的安全性。

那么,如何规避支付风险?

    为了进一步的加强支付功能的安全,也可以适当的增加一些监控机制,比如:订单与第三方订单进行对比,可以使用跑批完成,当我们完成支付的订单从数据库中查出来与通过第三方订单查询接口查询出来的同一个订单金额有异常时,进行报警通知能够及时发现处理,甚至当有异常情况进行创建订单的终止,从而把损失降到最低。

    当一个支付请求被发送到支付渠道方,支付渠道会很快返回一个结果。但是这个结果,只是告诉你调用成功了,不是扣款成功,这叫同步调用。很多新手会拿这个结果当作支付成功了,那就会被坑死,结果就是支付成功率特别高,伴随着一堆无法解释的坏账率,测试人员尤其要注意测试数据的篡改:金额,同步返回结果,订单号等。

    同步请求参数里面会有一个回调地址,这个地址是支付渠道在扣款成功后调用的,这叫异步调用。一般同步接口仅检查参数是否正确,签名是否无误等。异步接口才告诉你扣款结果。一般异步接口有5秒以内的延迟。调用不成功会重试。有时候是这边成功了,但支付渠道侧没收到返回,于是会继续调。当天的支付到第二天还在被异步调用也都是正常的。这也是开发人员需要特别注意的地方,不要当做重复支付。测试人员也要对重复回调进行测试,应只有一次有效。这还不是最坑的,一般支付渠道侧,只有支付成功了才通知你。要是支付失败了,压根儿都不告诉你。 另一方面,如何老收不到异步结果呢?那就得查查了。同步结果不可靠,异步调用不可靠,那怎么确定支付结果?最终的杀招就是查单了,反查,一般支付渠道侧都会提供反查接口,定时获取DB中待支付的订单调用支付渠道侧的反查接口,最终把支付渠道侧扣款成功的订单完成掉。

微信大致流程为:APP端将订单信息提交到后台,后台通过微信统一下单接口到微信去下单,微信端返回相关信息到PHP后台,后台先将订单保存到数据库成功后,返回签名信息给APP端去实现真正的支付

支付宝大致流程为:APP端将订单信息提交到后台,后台通过支付宝规定的签名算法将签名信息返回给APP端,APP端调用支付宝SDK去实现支付

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/34757.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

好友代付系统

心血来潮,和大家分享一个我同学正在操作的项目。收益不输金领,令人艳羡,让我给大伙讲讲我这个同学做什么项目。 这位同学做的事仿制美团饿了么平台的好友代付系统,虚拟经营。当然也可以实体经营,线下经营。只不过二者差…

AI仿写软件-仿写文章生成器

AI仿写软件:高效出色的营销利器 作为互联网时代的营销人员,我们不仅需要品牌意识,还必须深谙营销技巧。万恶的时限压力使得我们不得不在有限的时间内输出更多的文本内容,以便吸引更多的关注。那么,如何解决这个问题呢…

chatgpt赋能python:Python和Selenium在SEO中的应用

Python和Selenium在SEO中的应用 在当今的数字时代,搜索引擎优化已成为所有在线业务的必要部分。随着业务的发展和市场的需求,如何将网站的排名提高至关重要,SEO已成为每个网站所有者的标配。 Python作为一种强大的脚本语言,可以…

算力分析及相关查询网站

1、FLOPS定义 FLOPS是“每秒所执行的浮点运算次数”(floating-point operations per second)的缩写。它常被用来估算电脑的执行效能,尤其是在使用到大量浮点运算的科学计算领域中。 在这里所谓的“浮点运算”,实际上包括了所有涉…

Chiplet:大算力的翅膀

作者简介:Erick.X,复睿微首席架构专家。 Chiplet 概述 过去几十年来,半导体行业一直按照摩尔定律的规律发展,凭借着芯片制造工艺的迭代,使得每18个月芯片性能提升一倍。但是当工艺演进到5nm,3nm节点&…

ChatGPT 也解决不了 “老婆和老妈掉河里先救谁” 的难题?

据网络报道,4月26日,中国政法大学刑事司法学院教授罗翔在华南师大附中公开讲座,提到当下很火的ChatGPT,罗翔说:“很多人都跟我说,你现在要开始学习ChatGPT,否则2年以后就会被淘汰。我当然也开始…

任正非接受采访首谈ChatGPT:我跟大家看法,有些不一样...

近日,任正非在接受采访时说:“ChatGPT对我们的机会是什么?它会把管道流量撑大,这样我们的5G产品就有市场需求。” 任总还强调:“今后职场上只有两种人,一种是熟练使用AI的人,另一种是创造AI工具…

用强化学习玩《超级马里奥》

Pytorch的一个强化的学习教程( Train a Mario-playing RL Agent)使用超级玛丽游戏来学习双Q网络(强化学习的一种类型),官网的文章只有代码, 所以本文将配合官网网站的教程详细介绍它是如何工作的,以及如何将它们应用到…

新功能提醒:Midjourney v5.2 已发布!

您准备好踏上艺术与人工智能相遇的视觉之旅了吗?介绍 Midjourney V5.2,这是突破性 AI 艺术工具的最新版本,只需一个文本提示即可将您的想象力变为现实。凭借其卓越的功能和一系列新功能,Midjourney V5.2彻底改变了您轻松创建令人惊…

拉上谷歌高通 三星围攻苹果

时隔4年,三星又在VR领域出手了。 在几天前的新品发布会上,三星宣布正在开发新的XR(扩展现实)产品和体验,为提高产品竞争力,三星找来了谷歌和高通两大“帮手”,前者提供生态系统和软件支持&…

Uniapp+SpringBoot即时通讯聊天安卓APP源码_全开源

Uniapp SpringBoot即时通讯聊天安卓APP源码_完全开源。 前端使用uniapp,后端使用SpringBoot。 移动端使用uniapp实现。 目前仅支持Android、iOS和H5终端。 后期会继续适配小程序终端、桌面终端(windows、mac)和web终端。 使用的技术&#x…

股票筛选。如何查找股票?如何查找潜力股?

网址 : http://www.czc123.top/mytools/codeSearch.php 沪深A总共有3700多只股票,一只只股票去看肯定不现实,这时候就需要一个股票筛选的工具。 最近一直想找一款股票查询的工具,可是世面上有的不是收费的,就是不满足…

购买高分红股票是不是一个好的投资策略?

购买高分红(High Dividend)股票,是一个受到很多投资者追捧的投资策略。今天这篇文章,就来帮助大家好好分析一下这样的投资方法。 首先,我们不妨想一下这个问题:为什么有那么多人喜欢高分红股票?…

MT4如何添加交易品种?

MT4是一种广泛使用的交易平台,许多投资者都在平台上完成外汇交易。添加新的交易品种可以提高交易组合的多样性和灵活性,从而增加市场机会。在本文中,我们将介绍MT4如何添加新的交易品种。   步骤一:打开MT4交易平台   首先&am…

使用Tushare筛选今天适合投资的股票

使用Tushare筛选今天适合投资的股票tushare ID418443 一.Tushare介绍二.安装Tushare三.编写代码1、初始化tushare,并且获取所有股票信息。2、收盘价跌破lower线,买入信号计算3、收盘价超过upper线,卖出信号计算4、遍历所有股票,找…

分享一个简单的双色球程序

前几天写了个双色球的小程序还挺有意思的。分享一下思路和代码。下图是该程序的需求。 ①可以发现红球和蓝球是分开来判定的,所以可以将红球组成一个数组,蓝球因为只有一个所以可以放一边。 ②我们可以先将随机生成的 红色球 的号码组成一个数组A&#…

Python分析一下双色球,中大奖指日可待!

点击上方“志斌的Python笔记”,选择“星标”公众号超级无敌干货,第一时间送达!!!一、需求简介 之前偶然见到一位网友提出了关于双色球数据的分析需求,感觉颇有趣味,便着手操作了一番。如下为某双…

双色球 python

对双色球数据探索 数据准备 爬取双色球的数据 # -*- coding: utf-8 -*- import os import os.path import sys reload(sys) sys.setdefaultencoding("utf-8") #开奖日期中的字符需要引入 import urllib2 from bs4 import BeautifulSoup# 创建/打开一个文件放数据…

2023年7月1日起,五险一金缴费基数上调,到手工资变少了!

上一篇:被裁员了,月底走人拿n1,多待一个月拿n,该怎么选? 今天给大家盘点了一下各省市2023年最新的社保、公积金缴费基数。 2023社保缴费基数定了 一、上海 2023年6月28日,上海市人社局官方微信发布了《本市…

chatgpt赋能python:PythonUp:优秀的Python教育平台

Python Up: 优秀的Python教育平台 Python学习的重要性 随着大数据、人工智能等技术的蓬勃发展,Python作为一种可读性强、代码简洁、可扩展性好的编程语言,已经成为数据科学领域中最受欢迎的编程语言之一。因此,Python学习已成为现在最流行的…