第三方支付接口怎么测试

article/2025/10/2 13:08:23

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

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

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

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

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

  2、异常场景有哪些?

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

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

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

  流程清楚之后,我们再来看看其中会涉及到哪些接口?这个支付流程图里面就涉及到了第三方支付接口:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  遇到过的坑:

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

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

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

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

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

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

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

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

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

 


http://chatgpt.dhexx.cn/article/MccexDXE.shtml

相关文章

java支付系统,三方支付系统,四方支付系统

背景介绍 之前使用的是外面的四方系统,不方便服务商批量提供和管理收款账号;所以想着自己写一套,技术使用的都是新技术 前后分离,前端使用vue,后端使用springcloud-alibabaspringboot微服务架构。现在系统可以投入使用…

php第三方支付系统--支付流程--及代码

目前来说,越来越多的行业互联网化,也掀起了互联网金融的浪潮,第三方支付的开发也越来越广泛,一般大型的第三方支付系统包括,前置系统,支付系统,渠道系统,账务系统,清结算系统,运营与维护管理平台。下面我们来了解一下常见的一些支付流程,让大家了解了解 快捷支付流…

涉及第三方支付接口,怎么测?

大家好啊,我是大田。 像一些做金融项目、电商项目等有支付功能的系统,基本都会调用第三方支付接口,那我们应该如何测试?这里谈谈大田的思路,仅供参考: 1、根据流程图,深刻理解我司与第三方系统都…

第三方支付流程

目前来说,越来越多的行业互联网化,也掀起了互联网金融的浪潮,第三方支付的开发也越来越广泛,一般大型的第三方支付系统包括,前置系统,支付系统,渠道系统,账务系统,清结算…

第三方支付原理

1.什么是第三方支付 所谓第三方支付,就是一些和各大银行签约、并具备一定实力和信誉保障的第三方独立机构提供的交易支持平台。在通过第三方支付平台的交易中,买方选购商品后,使用第三方平台提供的账户进行货款支付,由第三方通知卖…

支付宝第三方登录

支付宝登录 最近做了第三方登录,看了官方文档,加上各种百度,依然踩过不少坑,今天和大家分享一下。 我是做的pc端的,贴张图。 首先: 有支付宝的实名账号,没有实名实名一下。然后选择合作伙伴角色…

第三方支付简要原理解释说明

第三方支付,就是一些具备实力和信誉保障的第三方独立机构提供的交易支付平台。买方选购了商品后,使用第三方平台进行付款,由第三方通知卖家货款到达。 目前市面上支持第三方支付的平台有很多,商家通过和第三方签署协议&#xff0…

如何高效对接第三方支付

简介 电商购物流程中核心的一环是用户支付。目前我们已经服务30个国家和地区,不同国家往往需要对接不同的第三方支付公司,所以最近两年,研发组对接了大量的第三方支付公司,积累了一定的经验。 本文主要分享如何对接第三方支付&a…

第三方支付

1. 第三方支付 概念: 第三方支付,就是通过与产品所在国家以及国外各大银行签约、由具备一定实力和信誉保障的第三方独立机构提供的交易支持平台。在通过第三方支付平台的交易中,买方选购商品后,使用第三方平台提供的账户进行货款支…

第三方支付系统--支付流程

目前来说,越来越多的行业互联网化,也掀起了互联网金融的浪潮,第三方支付的开发也越来越广泛,一般大型的第三方支付系统包括,前置系统,支付系统,渠道系统,账务系统,清结算…

作为测试,你了解第三方支付吗?

在很多平台都是调用第三方支付平台,比如支付宝,微信,银联电子支付等。你是否真的了解第三方支付呢? 大家每天在使用支付宝时,是不是感觉很蛮简单的?不外乎就是绑个卡,验一下支付密码&#xff0c…

程序员如何挣外快

挣钱的方式有很多,今天讲的是我觉得比较适合程序员的方法,如果渴望一夜暴富的,可以不用往下看了,因为这种简单粗暴的方法可能有,但是我并不知道,就算知道了也不会到处跟人说。在我看来,对于程序…

php初级程序员,接单,挣外快的指导方法

本文只是适合入门一段时间的php初级程序员哟,大佬就可以忽略不计。 我当时大二,学习php一个月,就尝试网上第一次接单了,也算是运气不错,当时接了几个女生的课堂设计,刚好她们就不需要太多的美观&#xff0c…

程序员如何挣外快?

当程序员是一件很棒的事情。不仅很有趣,还有大量的工作机会,其中多数工作的薪资都很高。 但有时候,你仍想去赚一些外快。可能是因为仍在上大学,可能是想为自己而非他人工作,或者想用更多的时间陪伴孩子。你仍需要赚更多的钱,或者仅仅是兴趣使然。好消息是:作为程序员,…

程序员挣外快指南

作为一名程序员,在上班之余,我们有大把的时间,不能浪费,这些时间其实都是可以用来挖掘自己潜在的创造力,今天要讨论的话题就是,程序员如何利用空余时间挣零花钱?比如说周末可以赚外快啊&#xf…

程序员赚外快的方式

更多文章详情–>码帮帮 前言 IT这个行业,就是个围城,里面都想逃离,外面的人千方百计想进来,外面的人想进来无非就是看中我们这个行业的工资高罢了,里面的人想出去,无非就是工作压力大,技术…

怎么通过python挣外快_我是如何通过python挣外快的

之前写过《在校大学生如何用知识月入3000》,是文字版的,昨天趁着去KFC吃饭这件事引起了我话痨模式(录制了视频上传到B站),重新谈谈兼职赚钱这个事情。 我为啥要去吃KFC? 根本原因 我是风险规避型人格&…

怎么用开发技术赚外快?

假设你是一位软件开发人员,想利用业余时间赚点外快补贴生活,你会怎么做呢? 我听到过很多答案,懂iOS开发的小伙伴说,可以做个App放到App Store中卖;懂网站开发的小伙伴说,可以做个网站卖广告&am…

网络安全是怎样练成的.5——SRC外快之路

SRC赚外快 一、什么是SRC?二、各大SRC的奖励(先看好处吧)1. CNVD的奖励2.其它平台的奖励 三、各大SRC平台(深入了解一下吧)1.国家平台2.各大厂商平台 四、寄语 一、什么是SRC? 在网络时代虽然有很多的网站…

赚外快—常见编程接单的网站集合(20余个)

▍前 言 关于程序员接私活,社会各界说法不一。按照作者的观点来说如果你确实急用钱,价格又合适,那就去做。如果不怎么缺钱,那就接私活之前要好好考虑。私活的钱不好挣是一个方面,更重要的是如果你把做私活的时间花在提…