付款方对接银联入网仿真测试系统
对接银联的相关接口是有一整套流程的,其中我所负责的是银联扫码接口对接。
简介
明确对接时的个人定位,其中,大方向上分为付款方,收款方和银联,付款方分为付款方(付款银行)和付款方移动应用前置方(对接单位),收款方为商户或者其他企业。此次我所对接的是以付款方移动应用前置的身份对接的银联入网仿真测试系统。
对接流程
1.获取银联扫码的相关接口文档以及测试DEMO,具体目录结构如图
相关的测试文档和demo都在这个二维码的压缩包中,根据自己的业务需求去阅读相关文档
2.整合demo
银联这边的demo名字叫QRCSample,我这边导入到自己的IDE中会出现缺少servlet-api的jar包,将其导入即可,或者是tomcat版本和jdk版本比较低,相应配置版本即可。
这边银联的demo跑起来的整体展示图如下:
能够看到这个页面代表你已经成功了一半,当然,在这里我的建议是先将银联的这个测试demo整合至你的项目中去,否则当你用银联的这个测试demo调通测试仿真系统后再去整合至你的项目,那个时候就不知道会不会又出现什么bug了,况且银联这个东西往后面测试有可能还会收费,所以呀,准备工作先做好。
3.对接银联测试仿真系统
原谅我之前废话那么多,实在是想讲明白之前的一些东西。好了,现在正式开始。
整体流程是这样,银联这边是没有相应的技术开发人员给你技术支持的,只会有相应的测试人员解答你测试中出现的问题,当你准备开始测试的时候,银联会提供一个仿真系统给你测试,会拉你进去一个qq群,当你在此处全部调通后,银联会要求你生成一个测试报告,之后会安排相应的测试人员跟你进行下一步的测试,目前,我已经完成之前的所有步骤,在等银联安排相应的测试人员走下一步测试流程,在这里记录对接银联测试仿真系统中的坑和注意点。
使用中国银联入网测试仿真系统:
1.获取仿真系统以及案例集,这一点可以自己去官网下载或者找银联对接人员给你下好,我的建议是找银联对接人员,别自己鼓捣半天还搞了错了的东西,注意,不要怕麻烦,对接的时候不懂就问。
2.在安装仿真系统的时候需要根据机构号登录获取相应的类似于验证码的东西,这边直接登录银联官网用自己的机构码登录即可,注意在自己的代码中需要将机构号与之进行匹配,否则等你请求仿真系统的时候有你好受的。
3.进入中国银联仿真入网测试仿真系统,如图所示:
这个是我测试完成后的截图,所以跟你们刚进去的有点不一样,不过不影响。
4.根据系统使用指南进行一步步操作,主要是通讯参数问题,需配置本地的ip和端口,注意此处的端口是仿真系统的端口,不要和本地重复,配置完成后注意点击该页面左上角的保存,如图:
注意此处配置的端口和IP是仿真系统的端口和IP,检查下自己本地有没有开代理或者什么的,会影响的,至于下方的URL,是银联代表收款方或者银联自己回调你的地址,也就是说这个是你的一个接口地址,至于参数,请求的时候仿真是会打印出来的。
5.了解这两个按钮,一个是我们请求银联,一个是银联请求通知我们,并且,需要我们选定相关按钮的时候才能接口响应成功。
绿色按钮代表我们需要请求的接口,鼠标选中后,我们自己的后台请求仿真系统就会收到相应的响应,蓝色的代表银联通知我们,也就是通知我们在URL上面配置的地址即可。不过比较不人性化的一点是必须要完成一个接口才能走下面的接口,这一点有点......
6.在你的项目配置文件中修改请求路径和参数,注意采用http形式,修改相应路径和端口号即可
#unionacpsdk.qrcB2cIssBackTransUrl=https://c2c.test.95516.com/qrc/api/issBackTransReq.do
unionacpsdk.qrcB2cIssBackTransUrl=http://192.168.2.36:8089/qrc/api/issBackTransReq.do
上面一行是银联的测试demo地址,下面一行是配置仿真系统的地址,如果需要用https形式进行请求,那仿真是要开启https服务,并且运用相应的证书即可。
7.以C2B码申请为例,测试调用银联仿真系统
7.1修改unionpay_acp_sdk_properties中的请求路径,unionacpsdk.qrcB2cIssBackTransUrl=http://192.168.2.36:8089/qrc/api/issBackTransReq.do
7.2 注意相应的参数修改 reqReserved,signMethod两个参数不要上送,payeInfo字段需要加密,采用DemoBase.getPayerInfoWithEncrpyt(payerInfoMap,DemoBase.encoding)方法
7.3 开始请求,我本地配的是192.168.2.36:8089的端口和地址,仿真系统成功会显示上方一个绿色的对勾,并且日志信息是没有报错的,与此同时,本地需要将返回的报文进行验签工作,验签成功才代表测试仿真请求成功。
8.测试调用银联仿真系统小技巧和注意事项
8.1,如果在一个工作周请求仿真是成功的,到了下个工作周来上班发现请求爆出一大堆问题,这个时候建议你重新认证测试一下重新来一遍就好。
8.2,payerInfo和payeeInfo两个字段,注意加密的时候不要弄混了,这是两个不同的方法,分别代表收款方和付款方的敏感加密信息。
8.3,可以自己建个工具类对返回数据进行解析,不然返回一个xml格式的数据显示给客户看会很low,这边我针对我这边的返回信息编写的工具类显示如下:
/*** 银联扫码中xml格式转化为jsonObject* @param xmlStr* @return*/public static JSONObject xmlToJSON(String xmlStr) {String [] strs = xmlStr.split("</br>");Pattern p = Pattern.compile("<[^>]+>",Pattern.CASE_INSENSITIVE);Map<String, String> map = new HashMap<String, String>();for(String s:strs){String[] ms = s.split("=");Matcher m = p.matcher(ms[0]);//开始编译ms[0]=m.replaceAll("");if(ms.length==2) {map.put(ms[0], ms[1]);}else{map.put(ms[0],"");}}if(map.get("signature")!=null)map.put("signature", new StringBuilder(map.get("signature")).append("==").toString());if(map.get("couponInfo")!=null)map.put("couponInfo", new StringBuilder(map.get("couponInfo")).append("==").toString());JSONObject jsonObject = (JSONObject) JSONObject.toJSON(map);return jsonObject;}
这边针对银联返回的信息做了相应的对应处理,返回的数据如图显示,
这个时候data里面显示的就是以key-value格式显示的数据。
8.4通知地址
这边仿真上面的系统通知分为两类,一类是主扫模式下的消费通知,一类是被扫模式下的消费通知,主扫模式下的消费通知交易类型是0160000903,被扫模式下的消费通知交易类型0250000903,他们的字段名都是reqType,但是细致一点会发现,消费通知的接口是没有返回成功或者失败的respCode码,只有一个origRespCode,与此同时,我们会看到会返回一个origReqType,经过多次测试发现,主扫和被扫模式的通知是不一样的,类似于消费撤销冲正等接口,他们返回的reqType都是一样的,里面的origReqType是不一样的,所以我们要在获取到reqType的时候再次判断里面的小类型,只能是银联的文档是没有解释这个的,需要我们细致一点去发现。
8.5被扫模式下的附加处理请求和通知
银联接口中关于附加处理请求通知是异步的,这里我是让回调银联的通知睡眠几秒然后请求,这样可以避免请求堵塞的问题,但是性能上是否提高就需要后面进行考量了。
public void qrPayNotify(GoldCardRecevieNotifyDto recevieNotifyDto,HttpServletRequest req,HttpServletResponse resp) {Runnable runnable = new Runnable() {@Overridepublic void run() {try{//暂时休眠三秒钟,与附加处理通知错开Thread.sleep(1000*3);BaseResponse baseResponses = recevieNotify(recevieNotifyDto,req,resp);logger.info("附加处理请求通知返回码:{}",baseResponses.getRcode());if(Constants.FUYOU_SUCCESS.equals(baseResponses.getRcode())) {logger.info("满嘉附加处理请求通知已经成功发出");}else{logger.info("满嘉附加处理请求通知发送失败!");}/*if(Constants.FUYOU_SUCCESS.equals(baseResponse.getRcode())) {break;}else{logger.info("满嘉附加处理请求通知发送失败!二维码为{}",rqCode);}*/}catch (Exception e){e.printStackTrace();logger.info("回调异常");}}};Thread thread = new Thread(runnable);thread.start();}
传递参数因人而异,大概意思就在这里,有需要的可以拿走自己修改。
8.6,payeeInfo,payerInfo,couponInfo信息的解密和展示
前面两者都是可以利用银联提供的demo进行相应的解密,后面的couponInfo优惠信息则需要先将信息进行xml转换,然后读取json里面的数组,最后转json进行读取,这个主要在查询营销的时候会进行返回,大家注意注意即可。
8.7带花括号且多空格的字符串转map数组
很想说的是,就是因为转map中的一个空格,困扰了我好久,明明转成功了就是取不出来,最后发现是空格的原因,这里将字符串转map的方法也放在这里,有需要的可以拿走自己修改。
public class StringToMapUtils {public static Map<String, String> maps(String map2){String map = map2.replace(" ", ""); if (map.startsWith("{")) {map = map.substring(1, map.length());}if (map.endsWith("}")) {map = map.substring(0, map.length() - 1);}String[] out = map.split(",");Map<String, String> map1 = new HashMap<String, String>();for (String anOut : out) {String[] inn = anOut.split("=");map1.put(inn[0], inn[1]);}System.out.println(map1);String strmap = JSONObject.toJSONString(map1);Map<String, String> maps= (Map<String, String>) JSON.parse(strmap);return maps;}}
其中考虑了去除空格的情况,至少我是不会再掉进这个坑了。。
8.8证书问题,一般情况下调用银联的仿真系统是会有问题的,需要下载测试群中以400开头的加密证书,并且需要使用仿真系统中相对应的解密证书进行验签处理,这个到时候问下就好,知道是这么一个问题。
9.测试完成,生成测试报告
将你负责的业务开发完成后,想要进行下一步,需要生成相应的测试报告提交给银联测试商务那边,审核通过后会安排专门的测试人员进行另外一个环境的测试,这里我介绍喜爱怎么生成测试报告。
整个的全貌是这样的,我们只需要选中不需要测试的接口然后跳过测试即可,最后不需要管弹出的提示消息,直接生成测试报告提交给银联那边,等待下一步的测试,而我,目前就是正在等待下一步的进行时间。
讲道理,刚拿到这个东西的时候一脸懵逼,压根不知道怎么用,但是一旦摸索出来了就会发现,这只不过是本地开了一个端口启动了一个应用配合你本地进行测试,毕竟银联是个大公司,对接全国这么多银行和企业,通过这个仿真系统可以解决很多不必要的问题,提高效率,当我会用了才发现了它的良苦用心。等我下个步骤完成后再来总结。加油。
付款方对接银联入网仿真测试系统相关推荐
- 视频图像处理仿真测试系统
视频图像处理仿真测试系统 1.仿真测试系统框架 一个完善的仿真测试系统对于图像处理算法的设计至关重要.这个测试系统至少要完成以下功能: (1)模拟可配置的视频流(单帧的视频即为一幅图像). (2)模拟 ...
- 新能源汽车VCU/HCU,BMS和MCU仿真测试系统实验室
随着新能源动力部件(电机及电机控制器.动力电池及电池管理系统.新型传动系统等)的技术日渐成熟,动力系统匹配逐渐成为新能源汽车整车性能的决定性因素之一. 一般地,动力系统匹配主要是指以整车设计指标和用户 ...
- 新能源汽车核心技术-VCU硬件在环(HiL)仿真测试系统
新能源汽车(EV/HEV)整车控制器(VCU)是新能源汽车的核心控制部件,VCU控制技术水平直接影响着整车的动力性.安全性及经济性.作为国家重点发展的技术方向,近年来随着我国大力发展新能源汽车及新能源 ...
- 基于PanoSim5.0仿真测试系统的C-NCAP主动安全试验
中国新车评价规程(英语:China-New Car Assessment Program,简称C-NCAP),是一套通过碰撞测试考察汽车产品碰撞安全性能的评价体系,它的评价标准高于国家强制性标准,按照 ...
- 系统学习车载仿真测试HiL,成为HiL测试工程师
硬件在环(HiL)仿真测试系统,目的是对新能源汽车 VCU 进行全面深入的功能测试.故障 测试及极限工况测试,并辅助工程师对测试结果分析验证.故障再现,提高测试验证及分析的手段. HiL 测试系统整体 ...
- gps卫星位置计算程序matlab_科研项目 | BD/ GPS卫星导航仿真测试系统研究
一.项目背景 在移动互联和互联网+的时代,卫星导航定位已经成为生活中不可或缺的部分.目前,我国的交通.银行.电力.采矿.测绘等部门以及大众化市场都需要大量的定位.授时服务.许多企业也形成了覆盖卫星导航 ...
- 一篇文章带你了解新能源汽车整车控制器VCU 硬件在环(HiL)仿真测试方案
1.HiL的定义: HiL(Hardware-in-the-Loop)硬件在环是计算机专业术语,也即是硬件在回路.通过使用"硬件在环"(HiL) ,可以显著降低开发时间和成本.在过 ...
- 仿真测试 | HIL测试简单介绍
HIL仿真测试是一种功能强大的测试方法,可以用于更加有效的测试嵌入式控制系统.当测试嵌入式控制系统时,从降低开发时间和成本的目的上考虑,使用全系统进行所有必要的测试是比较复杂的. 汽车HIL测试的结构 ...
- 一篇文章带你了解新能源汽车电池管理系统BMS 硬件在环(HiL)仿真测试
1.什么是BMS? BMS(Battery Management System)全称电池管理系统,是新能源汽车的核心系统之一.新能源汽车与传统燃油车存在很大的不同,以纯电动汽车为例,它是以电池包为动力 ...
- 仿真测试-HiL测试全解析
1.HiL的定义: HiL(Hardware-in-the-Loop)硬件在环是计算机专业术语,也即是硬件在回路.通过使用"硬件在环"(HiL) ,可以显著降低开发时间和成本.在过 ...
最新文章
- 爱情,真的那么奢侈吗?
- 怎么向后删除?(删除光标后的字符)(按delete键)
- hihocoder1260,1261 (HASH经典题)
- i7怎么老是显示无服务器,i7处理器真有这么差?网友:懂电脑的人都不买!
- Java生产环境下性能监控与调优详解 第2章 基于JDK命令行工具的监控
- python导入类属性不存在_为什么我会得到一个错误:我的类中不存在该属性?
- 计算机多媒体技术广泛应用于各个领域,新时期计算机多媒体技术的应用与发展趋势研究...
- 定制通达信多周期同列版面
- 中国风歌曲介绍及推荐
- 扎堆出海的抖音、今日头条、UC 头条们后来怎么样了?
- 用java 解密pdf_Java 加密、解密PDF文档(示例代码)
- 绘画和照片编辑:Artstudio Pro for mac
- Android 自定义圆角TextView控件 带边框 非shape
- 现代 opengl 的驱动安装
- 发明界泥石流!河南一小伙发明陪酒机器人,全程高能结局笑疯
- JavaScript 正则表达判断经度纬度是否符合规范。
- jupyter notebook(python)使用pycharts库实现动态地图展示
- 实时空气质量监测解决方案
- mysql 用idb文件恢复数据
- JavaScript的内存管理
热门文章
- 你们要的Echart系列,今天它来了,教你一招快速上手echarts的属性设置,手把手教程系列
- (个人笔记)EDEM耦合Recurdyn流程
- Xpose 建立新工程
- 中国象棋,源码,开发,毕业设计,go,qt,c++,gin,游戏,残局,悔棋,人机,网络对战,双人
- USB转RS232串口应用
- java流水号自增长_Java自增流水号生成
- web版ppt制作插件impress.js源码注释翻译
- SecureCRT中文汉化版和永久免费激活。
- java 梯形校正_高清投影神器 联想YOGA平板2 Pro评测
- 【论文学习之SNE-RoadSeg】跑通SNE-RoadSeg代码