本篇文章给大家谈谈微信支付接口测试用例,以及微信支付接口怎么测试对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
今天给各位分享微信支付接口测试用例的知识,其中也会对微信支付接口怎么测试进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
水杯,微信红包,电梯,朋友圈点赞,黑白灰盒,微信支付等测试用例
功能
1.在红包钱数
微信支付接口测试用例,和红包个数的输入框中只能输入数字
2.红包里最多和最少可以输入的钱数 200 0.01
3.拼手气红包最多可以发多少个红包 100
3.1超过最大拼手气红包的个数是否有提醒
4.当红包钱数超过最大范围是不是有对应的提示
5.当发送的红包个数超过最大范围是不是有提示
6.当余额不足时,红包发送失败
7.在红包描述里是否可以输入汉字,英文,符号,表情,纯数字,汉字英语符号,
7.1是否可以输入它们的混合搭配
8.输入红包钱数是不是只能输入数字
9.红包描述里许多能有多少个字符 10个
10.红包描述,金额,红包个数框里是否支持复制粘贴操作
12.红包描述里的表情可以删除
13.发送的红包别人是否可以领取
13.1发的红包自己可不可以领取 2人
14. 24小时内没有领取的红包是否可以退回到原来的账户
14.1 超过24小时没有领取的红包,是否还可以领取
15.用户是否可以多次抢一个红包
16.发红包的人是否还可以抢红包 多人
17.红包的金额里的小数位数是否有限制
18.可以按返回键,取消发红包
19. 断网时,无法抢红包
20.可不可以自己选择支付方式
21.余额不足时,会不会自动匹配支付方式
22.在发红包界面能否看到以前的收发红包的记录
23.红包记录里的信息与实际收发红包记录是否匹配
24.支付时可以密码支付也可以指纹支付
25.如果直接输入小数点,那么小数点之前应该有个0
26.支付成功后,退回聊天界面
27.发红包金额和收到的红包金额应该匹配
28.是否可以连续多次发红包
29.输入钱数为0,"塞钱进红包"置灰
性能
1.弱网时抢红包,发红包时间
2.不同网速时抢红包,发红包的时间
3.发红包和收红包成功后的跳转时间
4.收发红包的耗电量
5.退款到账的时间
兼容
1.苹果,安卓是否都可以发送红包
2.电脑端可以抢微信红包
界面
1.发红包界面没有错别字
2.抢完红包界面没有错别字
3.发红包和收红包界面排版合理,
4.发红包和收到红包界面颜色搭配合理
安全
1.对方微信号异地登录,是否会有提醒 2人
2.红包被领取以后,发送红包人的金额会减少,收红包金额会增加
3.发送红包失败,余额和银行卡里的钱数不会少
4.红包发送成功,是否会收到微信支付的通知
易用性(有点重复)
1.红包描述,可以通过语音输入
2.可以指纹支付也可以密码支付
界面测试
微信支付接口测试用例:
外观(里面、外面)美观性
电梯空间尺寸是否和设计尺寸一致
按钮是否清晰和易懂
显示楼层的显示屏是否安装
是否联系外界的电话、紧急电话
设备检测说明书
安全规范说明书
灯
标识的承重和人数
扶手
镜子
仅提供可到达楼层的按钮
电梯制作的材料
空调
摄像头
功能测试
微信支付接口测试用例:
测试电梯能否实现正常的上升和下降功能,每层是否都可以停靠。
每层停靠楼层是否与所按的楼层一致
电梯按键在按下时是否点亮按键灯
电梯在每个楼层的上行和下行的申请是否可以有效
电梯满负载的时候,是否会忽略其
微信支付接口测试用例他楼层外部的上行和下行申请
电梯的两边按钮是否都可以使用,三列按钮。
电梯的楼层选择是否可以取消
电梯门的打开,关闭是否正常关闭(自动关闭)。
报警装置是否可用。(满载)
超重时是否能强制关门
超重时重新挪动一下人员是否可以上下行
与另外一部电梯之间是否协作良好。(算法)
电梯的灯光是否满足看书的要求
联系外界的电话是否可用
通风状况如何,人多的时候是否会很热,通风不畅(排气扇)
电梯里面的摄像头是否可用,拍摄是否清晰
门不夹人
伸手的话,应该不会强制关门
管理员可以和内部人通话
在各种场合下,可以强制开门
运行中时,不能按开门键,不会强制开门
在不同情况下(如:有人挡着、马上关门的时候、停电的时候、没有请求的时候…),一直按开门键和关门键
从电梯外部可以强制开门
模拟不同天气(温度,湿度,风速)下的测试
进入电梯,拨打手机,是否有信号
进入电梯喊话,外面是否能听到
楼层显示屏显示的楼层、以及电梯运行升降状态是否正确
两台电梯能否同时使用(或停用)
其中一台使用,另一台是否可以停用
一台电梯报错,另一台可以正常
A电梯按上行,B电梯按上行
A电梯按上行,B电梯按下行
A电梯按上行,B电梯按上下行
A电梯按上行,B电梯按下上行
A电梯按下行,B电梯按下行
A电梯按下行,B电梯按上下行
A电梯按下行,B电梯按下上行
A电梯按上下行,B电梯按上下行
A电梯按上下行,B电梯按下上行
电梯空时如何运转
电梯门开时不进电梯
进入电梯后不做任何操作
电梯门开的时间多长,超过时间后是否自动关门
电梯门开的时间超时后关门到最后2厘米,是否可以撬开门
电梯门关闭后还未上升时,电梯外按下上行(或下行)按钮,电梯门是否会打开
电梯最底层是否有下行按钮
电梯最顶层是否有上行按钮
停靠算法测试:
2部均空闲时,采取就近原则,离乘电梯人最近的电梯优先运行;
有1部运行时,以同行方向且顺路的电梯优先运行,否则安排空闲电梯;
2部均运行时,以方向通行且顺路的电梯优先运行;
每部电梯,在电梯内部每层在上升和下降过程中,再电梯内部均申请每层停靠
每部电梯,在电梯内部每层在上升和下降过程中,再内部没有任何申请的情况下,在电梯外部均申请每层停靠
每部电梯,在电梯内部每层在上升和下降过程中,再电梯内部均申请每层停靠,在电梯外部也申请每层停靠
电梯本来在1楼,如果有人按18楼,那么电梯在上升到5楼的时候,有人按了10楼,这时候是否会在10楼先停下来
电梯下降到10层时显示满员,此时若8层有人等待电梯,是否在8层停。
类似7、8测试步骤地随机测试,在电梯内部和外部均有不同组合申请的情况下,验证楼层停靠是否准确和合理。
电梯本来在2楼,1楼按上行键的同时3楼按下行键,查看优先上行还是下行
电梯的平稳性,是否会上升过快或者下降过快,造成人体不适应反应
可靠性:
无任何申请的时候,可以长时间停留在某层,并且门是关闭的
门关上的一刹那出现障碍物。
长期有障碍物在门口堵住,电梯应该也不会关门或上升和下降
同时按关门和开门按钮。
快速交替按关门开门按钮
点击当前楼层号码。
快速点击不同楼层
上升到顶层后,电梯中的原有下楼请求均会被取消
下降到负楼层后,电梯中的原有上楼请求均会被取消
电梯外部同时按上键和下键会怎样。
长按打开按钮,电梯门是否持续打开
突然停电或超载时的情况,电梯(停靠、正在上升、正在下降)不会坠落,电梯门可以通过外力打开,并且紧急电话可用
电梯运行中,申请马上要经过的楼层停靠,电梯应该不会停靠。
在电梯里面蹦跳,电梯不会出现不稳定的情况。
电压不稳定的情况下的电梯运行情况
电梯不能正常工作的时候是否有监控系统自动报警
电梯不能正常工作的时候,是否有流程可以精确的指定到人进行所有故障解决的高效处理
意外坠梯时所有按键正常使用
易用性:
电梯的按钮的设计符合一般人使用的习惯吗.
按钮是否考虑残疾人和小孩儿
楼层显示屏是否处于电梯的上部,方便别人看到
可维护性
是否有方便维修和维护电梯的工作条件(竖井通道、统一断电等)
电梯的常用配件是否容易更换
电梯的维修成本如何
电梯的安装、维护、测试
超过维修年限,是否可以正常运转
竞品测试
和其他厂家的产品比较,验证产品的竞争力
关门速度
启动速度和上升速度是否会造成人的不适应
上升和下降的速度是否满足用户要求
2部电梯的一个对比
配置测试
针对电梯系统的不同运行参数进行配置,并验证所有配置项是否可以生效
负载/压力测试:
看电梯的最大限度的承受重量.在负载过重时是否有提醒。
频繁的关门、开门操作
耗电量测试
上升和下降不同楼层的速度,是否有明显的延迟
多次按压按钮,确认所有按钮正常使用
长时间按压一个按钮不放开,确认所有按钮长时间按压功能正常
兼容性测试:
电梯是否适用于不同写字楼、不同国籍、不同地区
稳定性测试:
最大负载下平稳运行的最长时间、不断地高负荷运行。7*24小时
无负载下平稳运行时间。7*30 小时
文档测试:
文档是否齐备,能否描述具体的信息,满足安装公司、使用者、维护公司的使用要求
安装手册:安装的条件、方法、流程、检测标准、试运营要求和最后交付条件
电梯使用说明书:最大承载说明、正常使用的温度、湿度、电压等条件
维护说明书:如何进行电梯的维护、检测和维修,需要定期更换的配件
安全说明书:如何在停电、电压不足、超重的情况下保证电梯的安全性,以及在出现特殊运行情况时的处理方法
黑盒测试
软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑构造和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫 功能测试 或者 数据驱动测试。
黑盒测试主要是为了发现以下几类错误:
1.是否有不正确的遗漏的功能
微信支付接口测试用例?
2.在接口上,输入是否能正确的接受?能否输出正确的结果?
3.是否有数据结构错误或外部信息访问错误?
4.性能上能否满足要求?
5、是否有初始化或终止性错误?
具体的黑盒测试方法包括等价类划分、因果图、正交实验涉及法、边界分析、判定表驱动法、功能测试等。
白盒测试
软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或者选择测试用例,对程序所有的逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一致。因此白盒测试又称为 结构测试 或 逻辑驱动测试。
白盒测试主要是想对程序模块进行如下检查:
1.对程序模块的所有独立的执行路径至少测试一遍。
2.对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。
3.在循环的边界和运行的界限内执行循环体
4.测试内部数据结构的有效性等等
白盒测试方法包括:语句覆盖、判定覆盖、条件覆盖、条件组合覆盖、路径覆盖等
以上事实说明,软件爱你测试有一个执行的缺陷,即测试的不完全、不彻底。由于任何程序智能进行少量(相对于穷举的巨大数量而言)的有限的测试,在未发现错误时,不能说明程序中没有错误
灰盒测试
灰盒测试,是介于白盒测试与黑盒测试之间,可以这样理解,灰盒测试关注输出对于输入的正确性,同事也关注内部表现,但这种关注不像白盒那样详细、完整,只是通过一些表现性的现象、时间、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒测试方法。
UI测试:
导航栏元素位置、大小、颜色等要素是否一致/是否符合UI效果图;
导航栏视频分类下拉框位置、颜色、按钮是否正确
鼠标滑过、点击时、点击后按钮状态是否有相应颜色、状态变化;
视频列表页面title、视频图片、视频title、是否付费等元素的颜色、大小、位置等是否正确;
视频播放页面:视频title、视频默认加载图、播放按钮、目录、视频列表、视频介绍等元素位置、大小、颜色、鼠标操作时状态是否与预期一致;
视频播放时进度条、快进按钮、快退按钮、播放按钮、暂停按钮位置是否正确
功能测试:
首先判断用户是否登录,未登录不能进入主页(应提示用户先进行登录),已登录状态用户可以进行视频观看;
导航栏下拉框是否可以正确打开和关闭,打开和关闭时的状态是否和预期一致;
鼠标滑过、点击时、点击后相应条目的状态是否和预期一致;
点击相应条目时,页面右边是否同步切换至相应页面,是否有延时、卡退、切换错误等情况;
视频播放页面鼠标滑过、点击时、点击后视频对应条目、标题是否有相应状态变化(具体变化状态根据产品原型进行分析),点击后是否能够正确跳转至相应的视频播放界面;
判断用户点击的视频属于免费还是付费,如果为免费则所有人均可以进行观看,如果为付费则要判断用户是否付费,如果已经付费则可以进行观看,如未支付则提示用户先购买后再进行观看并提供支付入口或者联系客服进行支付的方式;
进入视频播放界面判断当前视频title是否和用户上一步点击的视频title一致;
视频默认加载图是否显示正确或者显示异常等情况;
视频播放按钮是否可以点击,点击后视频是否正常播放;
视频目录是否显示正确,如有子列表是否正常显示,如果没有子列表是否有相应提示(具体效果根据产品原型进行分析);
视频介绍是否与当前视频一致,讲师是否一致等情况;
点击播放后进度条是否随之变化;
视频快进、快退、暂停、播放是否可以正常使用,是否有卡顿、延时、闪退等情况;
播放完成后是否自动切换下一视频(如有多节视频情况下,如果只有一条子视频的情况下,播放完成后是否关闭当前页面或者给予用户相应提示),如果需要手动切换是否有相应的友好提示;
视频播放时声音、画面是否一致或者是否有异常等情况;
视频最大化、全屏、最小化是否可以正常使用,切换时是否有卡顿、延时等情况;
当前视频与其他视频来回切换时,视频是否有卡顿、延时等情况;
电脑关机或者其他异常情况下,视频是否会保存播放记录,下次进入观看时是否继续上次的播放记录继续播放;
兼容性测试:
平台兼容性:Windows、Mac
系统兼容西:Win7、Win10、Mac
屏幕分辨率:不同电脑显示器分辨率不同,视频相关页面是否有模糊、适配是否合理;
播放器是否与其他类型播放器冲突(例如音乐播放器打开后,视频是否暂停还是继续播放);
网络测试:
网络切换测试:无线网与宽带;
弱网测试:弱网情况下视频是否卡顿、画面是否失帧;
无网络状态进入是否会有相应提示;
网络切换时视频是否暂停、保存当前播放状态;
易用性测试:
界面是否一目了然(比如:视频title、片头、片尾、视频画面等);
视频页面操作是否方便,菜单栏是否正确、易上手;
进度条拖拽使用起来是否方便;
视频是否具有视频记忆功能/是否保存当前播放进度
如何进行微信支付测试
进行微信支付测试步骤如下:
1.首先进入微信公众号,然后选择开发者中心。
2.记下AppID(App ID)和AppSecret(App Key)这两个值。如下所示:
3,找到令牌文件,里面的令牌值与你设置的令牌值相同。 (令牌文件在线下载),您可以在通过验证后将其禁用。如下所示:
4,继续向下滚动到后面,找到“网页授权获取用户基本信息”,修改为服务器域名不添加http。如下所示:
5.选择微信支付菜单,选择商家信息,记住微信支付商户号码,登录商家号码平台设置密钥。
6,选择开发配置,填写授权支付目录和测试目录,两个目录不一样,然后将你的微信号添加到白名单,这样就可以开始用你的微信测试了。
怎么用java调用微信支付接口
java调用微信支付接口方法:\x0d\x0aRequestHandlerrequestHandler=newRequestHandler(super.getRequest(),super.getResponse());\x0d\x0a\x0d\x0a//获取token//两小时内有效,两小时后重新获取\x0d\x0a\x0d\x0aToken=requestHandler.GetToken();\x0d\x0a\x0d\x0a//更新token到应用中\x0d\x0a\x0d\x0arequestHandler.getTokenReal();\x0d\x0a\x0d\x0aSystem.out.println("微信支付获取token=======================:"+Token);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//requestHandler初始化\x0d\x0a\x0d\x0arequestHandler.init();\x0d\x0a\x0d\x0arequestHandler.init(appid,appsecret,appkey,partnerkey,key);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//--------------------------------本地系统生成订单-------------------------------------\x0d\x0a\x0d\x0a//设置package订单参数\x0d\x0a\x0d\x0aSortedMappackageParams=newTreeMap();\x0d\x0a\x0d\x0apackageParams.put("bank_type","WX");//支付类型\x0d\x0a\x0d\x0apackageParams.put("body","xxxx");//商品描述\x0d\x0a\x0d\x0apackageParams.put("fee_type","1");//银行币种\x0d\x0a\x0d\x0apackageParams.put("input_charset","UTF-8");//字符集\x0d\x0a\x0d\x0apackageParams.put("notify_url","http://xxxx.com/xxxx/wxcallback");//通知地址这里的通知地址使用外网地址测试,注意80端口是否打开。\x0d\x0a\x0d\x0apackageParams.put("out_trade_no",no);//商户订单号\x0d\x0a\x0d\x0apackageParams.put("partner",partenerid);//设置商户号\x0d\x0a\x0d\x0apackageParams.put("spbill_create_ip",super.getRequest().getRemoteHost());//订单生成的机器IP,指用户浏览器端IP\x0d\x0a\x0d\x0apackageParams.put("total_fee",String.valueOf(rstotal));//商品总金额,以分为单位\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//设置支付参数\x0d\x0a\x0d\x0aSortedMapsignParams=newTreeMap();\x0d\x0a\x0d\x0asignParams.put("appid",appid);\x0d\x0a\x0d\x0asignParams.put("noncestr",noncestr);\x0d\x0a\x0d\x0asignParams.put("traceid",PropertiesUtils.getOrderNO());\x0d\x0a\x0d\x0asignParams.put("timestamp",timestamp);\x0d\x0a\x0d\x0asignParams.put("package",packageValue);\x0d\x0a\x0d\x0asignParams.put("appkey",this.appkey);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//生成支付签名,要采用URLENCODER的原始值进行SHA1算法!\x0d\x0a\x0d\x0aStringsign="";\x0d\x0a\x0d\x0atry{\x0d\x0a\x0d\x0asign=Sha1Util.createSHA1Sign(signParams);\x0d\x0a\x0d\x0a}catch(Exceptione){\x0d\x0a\x0d\x0ae.printStackTrace();\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//增加非参与签名的额外参数\x0d\x0a\x0d\x0asignParams.put("sign_method","sha1");\x0d\x0a\x0d\x0asignParams.put("app_signature",sign);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//api支付拼包结束------------------------------------\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//获取prepayid\x0d\x0a\x0d\x0aStringprepayid=requestHandler.sendPrepay(signParams);\x0d\x0a\x0d\x0aSystem.out.println("prepayid:"+prepayid);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//--------------------------------生成完成---------------------------------------------\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//生成预付快订单完成,返回给android,ios掉起微信所需要的参数。\x0d\x0a\x0d\x0aSortedMappayParams=newTreeMap();\x0d\x0a\x0d\x0apayParams.put("appid",appid);\x0d\x0a\x0d\x0apayParams.put("noncestr",noncestr);\x0d\x0a\x0d\x0apayParams.put("package","Sign=WXPay");\x0d\x0a\x0d\x0apayParams.put("partnerid",partenerid);\x0d\x0a\x0d\x0apayParams.put("prepayid",prepayid);\x0d\x0a\x0d\x0apayParams.put("appkey",this.appkey);\x0d\x0a\x0d\x0a//这里除1000是因为参数长度限制。\x0d\x0a\x0d\x0ainttime=(int)(System.currentTimeMillis()/1000);\x0d\x0a\x0d\x0apayParams.put("timestamp",String.valueOf(time));\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aSystem.out.println("timestamp:"+time);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//签名\x0d\x0a\x0d\x0aStringpaysign="";\x0d\x0a\x0d\x0atry{\x0d\x0a\x0d\x0apaysign=Sha1Util.createSHA1Sign(payParams);\x0d\x0a\x0d\x0a}catch(Exceptione){\x0d\x0a\x0d\x0ae.printStackTrace();\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0apayParams.put("sign",paysign);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//拼json数据返回给客户端\x0d\x0a\x0d\x0aBasicDBObjectbackObject=newBasicDBObject();\x0d\x0a\x0d\x0abackObject.put("appid",appid);\x0d\x0a\x0d\x0abackObject.put("noncestr",payParams.get("noncestr"));\x0d\x0a\x0d\x0abackObject.put("package","Sign=WXPay");\x0d\x0a\x0d\x0abackObject.put("partnerid",payParams.get("partnerid"));\x0d\x0a\x0d\x0abackObject.put("prepayid",payParams.get("prepayid"));\x0d\x0a\x0d\x0abackObject.put("appkey",this.appkey);\x0d\x0a\x0d\x0abackObject.put("timestamp",payParams.get("timestamp"));\x0d\x0a\x0d\x0abackObject.put("sign",payParams.get("sign"));\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aStringbackstr=dataObject.toString();\x0d\x0a\x0d\x0aSystem.out.println("backstr:"+backstr);\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0areturnbackstr;\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a====================到此为止,预付款订单已生成,并且已返回客户端====================\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//坐等微信服务器通知,通知的地址就是生成预付款订单的notify_url\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aResponseHandlerresHandler=newResponseHandler(request,response);\x0d\x0a\x0d\x0aresHandler.setKey(partnerkey);\x0d\x0a\x0d\x0a//创建请求对象\x0d\x0a\x0d\x0a//RequestHandlerqueryReq=newRequestHandler(request,response);\x0d\x0a\x0d\x0a//queryReq.init();\x0d\x0a\x0d\x0aif(resHandler.isTenpaySign()==true){\x0d\x0a\x0d\x0a//商户订单号\x0d\x0a\x0d\x0aStringout_trade_no=resHandler.getParameter("out_trade_no");\x0d\x0a\x0d\x0aSystem.out.println("out_trade_no:"+out_trade_no);\x0d\x0a\x0d\x0a//财付通订单号\x0d\x0a\x0d\x0aStringtransaction_id=resHandler.getParameter("transaction_id");\x0d\x0a\x0d\x0aSystem.out.println("transaction_id:"+transaction_id);\x0d\x0a\x0d\x0a//金额,以分为单位\x0d\x0a\x0d\x0aStringtotal_fee=resHandler.getParameter("total_fee");\x0d\x0a\x0d\x0a//如果有使用折扣券,discount有值,total_fee+discount=原请求的total_fee\x0d\x0a\x0d\x0aStringdiscount=resHandler.getParameter("discount");\x0d\x0a\x0d\x0a//支付结果\x0d\x0a\x0d\x0aStringtrade_state=resHandler.getParameter("trade_state");\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//判断签名及结果\x0d\x0a\x0d\x0aif("0".equals(trade_state)){\x0d\x0a\x0d\x0a//------------------------------\x0d\x0a\x0d\x0a//即时到账处理业务开始\x0d\x0a\x0d\x0a//------------------------------\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aSystem.out.println("----------------业务逻辑执行-----------------");\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//——请根据您的业务逻辑来编写程序(以上代码仅作参考)——\x0d\x0a\x0d\x0aSystem.out.println("----------------业务逻辑执行完毕-----------------");\x0d\x0a\x0d\x0aSystem.out.println("success");//请不要修改或删除\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0aSystem.out.println("即时到账支付成功");\x0d\x0a\x0d\x0a//给财付通系统发送成功信息,财付通系统收到此结果后不再进行后续通知\x0d\x0a\x0d\x0aresHandler.sendToCFT("success");\x0d\x0a\x0d\x0a\x0d\x0a\x0d\x0a//给微信服务器返回success否则30分钟通知8次\x0d\x0a\x0d\x0areturn"success";\x0d\x0a\x0d\x0a}else{\x0d\x0a\x0d\x0aSystem.out.println("通知签名验证失败");\x0d\x0a\x0d\x0aresHandler.sendToCFT("fail");\x0d\x0a\x0d\x0aresponse.setCharacterEncoding("utf-8");\x0d\x0a\x0d\x0a}\x0d\x0a\x0d\x0a}else{\x0d\x0a\x0d\x0aSystem.out.println("fail-Md5failed");
开放平台API接口安全性设计——微信支付为例
API接口,类似 http://mypay.com/refund/order_id=123mch_id=123 ,这个请求我以商户mch_id=123的身份给订单号为order_id=123退款,如果服务器不辩别请求发起者的身份直接做相应的操作,那是及其危险的。
一般的,在PC端,我们是通过加密的cookie来做会员的辨识和维持会话的;但是cookie是属于浏览器的本地存储功能。APP端不能用,所以我们得通过token参数来辨识会员;而这个token该如何处理呢?
延伸开来,接口的安全性主要围绕Token、Timestamp和Sign三个机制展开设计,保证接口的数据不会被篡改和重复调用。
一般来说,在前端对数据做加密或者前面,是不现实的。前后端使用HTTP协议进行交互的时候,由于HTTP报文为明文,所以通常情况下对于比较敏感的信息可以通过在前端加密,然后在后端解密实现"混淆"的效果,避免在传输过程中敏感信息的泄露(如,密码,证件信息等)。不过前端加密只能保证传输过程中信息是‘混淆’过的,对于高手来说,打个debugger,照样可以获取到数据,并不安全,所谓的前端加密只是稍微增加了攻击者的成本,并不能保证真正的安全。即使你说在前端做了RSA公钥加密,也很有可能被高手获取到公钥,并使用该公钥加密数据后发给服务端,所以务必认为前端的数据是不可靠的,服务端要加以辩别。敏感信息建议上https。
所以一般建议上https,敏感信息md5混淆,前端不传输金额字段,而是传递商品id,后端取商品id对应的金额,将金额等参数加签名发送到支付系统。金额可以是明文的。
token授权机制 :用户使用用户名密码登录后,后台给客户端返回一个token(通常是UUID),并将Token-UserId键值对存储在redis中,以后客户端每次请求带上token,服务端获取到对应的UserId进行操作。如果Token不存在,说明请求无效。
弊端 :token可以被抓包获取,无法预防MITM中间人攻击
用户每次请求都带上当前时间的时间戳timestamp,服务器收到请求后对比时间差,超过一定时长(如5分钟),则认为请求失效。时间戳超时机制是防御DOS攻击的有效手段。
将token,timestamp等其他参数以字典序排序,再加上一个客户端私密的唯一id(这种一般做在服务端,前端无法安全保存这个id)或使用私钥签名,将前面的字符串做MD5等加密,作为sign参数传递给服务端。
地球上最重要的加密算法:非对称加密的RSA算法。公钥加密的数据,可以用私钥解密;私钥签名(加密)的数据,可以用公钥验签。
RSA原理是对极大整数做因数分解,以下摘自维基百科。
暂时比较忙没时间,将于7月29日晚更新。
来更新啦。
微信支付安全规范,可以查看官方文档 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_3
第1点中,其签名算法最重要的一步,是在最后拼接了商户私密的API密钥,然后通过md5生成签名,这时即使金额是明文也是安全的,如果有人获取并修改了金额,但是签名字段他是无法伪造的,因为他无法知道商户的API密钥。当然,除了微信支付的拼接API生成签名的方法,我们也可以通过java自带的security包进行私钥签名。其中nonce随机字符串,微信支付应该做了校验,可以防止重放攻击,保证一次请求有效,如果nonce在微信支付那边已经存在,说明该请求已执行过,拒绝执行该请求。
阮一峰老师的博客-RSA算法原理: http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
维基百科: https://zh.wikipedia.org/wiki/RSA%E5%8A%A0%E5%AF%86%E6%BC%94%E7%AE%97%E6%B3%95
支付相关测试方法
微信支付: https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=2_2
支付宝支付: https://docs.open.alipay.com/270/105899/
苹果支付: https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction.html#//apple_ref/doc/uid/TP40008267-CH1-SW1
按照PRD,不赘述
1、支付的余额小于待支付的钱
2、调起支付输入密码框后,不进行输入密码,是否会生成订单
3、调起支付输入密码框后,输入错误的密码,是否会生成订单,并且是否会重试(一般是微信或支付宝控制的)
4、点击立即付款后,通过fiddler或其他工具,修改付款金额,将金额改成1元,是否会修改成功
1、微信/支付宝支付,未安装微信或支付宝APP怎么处理
2、苹果支付,未登录或未设置过支付信息怎么处理
1、重复支付,是否会出现问题
2、连续快速点击立即付款,是否会出现多次扣款的情况,应该只响应一次
3、多设备同时登录,同时付款,是否会出现问题
1、点击立即付款后,出现断网/中断流程/退出APP,是否会生成待支付的订单
2、点击立即付款后,出现断网/中断流程/退出APP,随即联网,查看是否会刷新页面
3、点击立即付款后,调出来密码输入框,输入密码后,出现断网/中断流程/退出APP,是否会生成支付成功的订单
4、点击立即付款后,调出来密码输入框,输入密码后,出现断网/中断流程/退出APP,随即联网,查看是否会刷新页面
5、弱网环境下,造成网络请求超时,查看支付情况
6、弱网环境下,付款成功后,返回APP的过程中造成网络请求超时,查看支付情况
7、使用wifi/4G进行支付
1、发起支付时,我方服务器出现问题
2、发起支付时,第三方服务器出现问题
3、支付过程中,可以调起支付密码框,输入密码后,第三方服务器出现问题
4、支付成功后,给我方返回数据过程中我方服务器出现问题
5、支付成功后,第三方服务器出现问题
1、支付成功/失败后,返回APP,页面刷新是否正常
2、跳转到第三方支付平台进行支付,支付成功/失败后不通过第三方平台返回APP,手动返回APP,查看页面刷新是否正常
3、多设备同时登录后,一个设备支付成功后,另一个设备的刷新情况
1、上述各种情况下的失败,均要有用户可以清晰明了的提示信息,不能出现error:xxx之类的用户无法理解的提示信息
总而言之:功能测试方面,要从用户可以感知的每一个地方,去做测试,我们无法预知用户在使用过程中会遇到什么问题,所以每个可以感知到的地方,都是可以来做相关的异常测试的,比如断网、退出app、中断测试等
1. 程序向服务器发送请求,获得一份产品列表。
2. 服务器返回包含产品标识符的列表。
3. 程序向App Store发送请求,得到产品的信息。
4. App Store返回产品信息。
5. 程序把返回的产品信息显示给用户(App的store界面)
6. 用户选择某个产品
7. 程序向App Store发送支付请求
8. App Store处理支付请求并返回交易完成信息。
9. 程序从信息中获得数据,并发送至服务器。
10. 服务器纪录数据,并进行审(我们的)查。
11. 服务器将数据发给App Store来验证该交易的有效性。
12. App Store对收到的数据进行解析,返回该数据和说明其是否有效的标识。
13. 服务器读取返回的数据,确定用户购买的内容。
14. 服务器将购买的内容传递给程序。
关于微信支付接口测试用例和微信支付接口怎么测试的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
微信支付接口测试用例的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于微信支付接口怎么测试、微信支付接口测试用例的信息别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~