先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
正文
废话有点多,下面是正题:
一、API调用环境与相关配置详细说明;
要在网上支持客户(或商城会员)使用交通银行(BOCOM,交行国际)支付方式买东西,首先公司得与交行
合作,要求其提供支付接口API(一般程序员都知道),等公司拿到API之后需要按照银行API要求调用的环
境安装一些软件(一般是由银行提供API安装包)以及配置各种参数:
从银行拿到的API安装包:
图1(图中start.bat文件是后来加的,具体作用后面会做说明)
各文件夹简要说明(我直接从doc文件夹里的技术开发说明文档拷贝过来的):
- cert 提供商户端测试环境的商户测试证书、银行端测试环境测试根证书及 银行端生产环境根证书;
- demo 存放交易演示Asp页面文件,商户可参照demo中的页面进行编程开发;起始页面:Index.htm;
- doc 存放开发编程说明文档;
- icon 交通银行logo徽标
- ini 商户端API配置文件,API初始化需指定该配置文件,配置文件内容包含地址的指定、证书的指定及日志存放目录
- 指定等。
- setup 存放API的安装文件。
- lib 提供商户编程API所需全部 DLL 文件 ;
里面会有一个安装说明(如上图的简要说明.txt),打开后内有详细API安装及环境参数配置说明:
图2
相信以上图片中白纸黑字大家都能看懂,我为大家更详细介绍下
(上图所示文本中提到的 文档 是指由交行提供的另一个技术开发指导文档,放在doc文件夹里):
注:以下各种安装配置是配置的通用版的测试环境,网上有下载的,正式调用只需修改相关配置参数即可;
1.首先在网上下载最新版本jdk,安装java运行环境:
图3
(根据自己电脑的情况选择合适版本的java运行环境,我电脑是64位系统);
2.C盘新建文件夹commjava
(可自定义,但要和后面相关参数的配置一致,不知道可不可以装在别的盘,待我后期测试再看看补起来),
将上图1中ini、cert文件夹复制进去;
3.将已经拷过去的文件夹cert中的证书文件(PFX文件)打开进行安装导入到浏览器
(支付的时候需要验证是否安装了交行提供的证书,否则无法支付,交行也会返回相关验证信息):
图4
一直点“下一步”直到填写密码处,默认密码是:12345678,再继续点“下一步”直到完成,
导入成功以后可以在浏览器中看到(Internet选项→内容→证书):
图5
4.将之前安装包里的lib文件夹下所有的文件都拷到之前安装的jdk目录 Java\jre7\lib\ext 下,
同时也要复制一份拷到之前commjava文件夹下(需先在commjava文件夹下新建lib目录),
或者干脆把整个lib文件夹拷进去,
并在commjava文件夹新建名为log和settlement的文件夹
(其中log用来存放下面提到的bat文件执行日志);
5.在任何一个文件夹新建一个.bat 批处理文件并执行;
(图中我是新建在安装包目录下,其实只要内容编辑正确放哪里都可以,内容编辑按照你之前安装的目录自行修改),
编辑内容如下:
java -jar C:\bocommjava\lib\socket_c#.jar 8080 C:\bocommjava\ini\B2CMerchant.xml C:\bocommjava\log\socket.log
这里采用8080端口,命令大致意思是:执行该批处理命令会调用jar包,读取xml配置信息,
返回执行结果日志并在log目录下生成日志文件(与执行结果日志一致)。
注:该批处理文件打开后就不要关闭,以后测试接口调用就是以这个为基础,关掉后会无法调用;
笔者注:这么一路配置下来总感觉网上银行支付接口的调用环境配置都是银行自己定义死了
(下面的页面调用很多配置也是定死的。。。),
只要有一个地方配置错误后面调用就会有问题。
二、页面调用详细说明;
以上的准备工作做好后,就可以在页面前后台代码中进行相关调用了。
1.前台配置:交行支付接口报文验证很严格,报文中不能有其他任何规定之外的参数存在,不然就会因验签失败而出错,
所以页面提交的时候,一个form是不够的,一个form用来放除支付接口所需参数外的所有页面控件HTML代码,
另一个form用来专门提交支付接口所需参数:
(1)第一个form:
1
2
3
(2)第二个form:
(注:以下各个参数安装包的开发文档中都有说明。每个参数具体注释请见后面的后台代码注释)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
(3).表单提交的js:
2.后台代码:
(1)网关传输参数初始化:
1 #region 交行网关传输参数
2 public string interfaceVersion = “1.0.0.0”; /消息版本号,固定为1.0.0.0/
3 public string orderid = DateTime.Now.ToString(“yyyyMMddHHmmss”); /订单号,商户应保证3个月以上的唯一性/
4 public string orderDate = DateTime.Now.ToString(“yyyyMMdd”); /商户订单日期,格式:yyyyMMdd/
5 public string orderTime = DateTime.Now.ToString(“HHmmss”); /商户订单时间,格式:HHmmss/
6 public string tranType = “0”; /交易类别 0 B2C/
7 public string amount = “1”; /订单金额,单位:元并带两位小数15位整数+2位小数/
8 public string curType = “CNY”; /订单币种, 人民币 CNY/
9 public string orderContent = string.Empty; /商家填写的其他订单信息,在个人客户页面显示/
10 public string orderMono = “6222600110030037084”; /不在个人客户页面显示的备注,但可在商户管理页面上显示/
11 public string phdFlag = string.Empty; /物流配送标志:0-非物流 ,1-物流配送/
12 public string notifyType = “1”; /通知方式:0-不通知,1-通知,2-转页面/
13 public string jumpSeconds = string.Empty; /自动跳转时间,等待n秒后自动跳转取货URL;若不填写则表示不自动跳转/
14 public string payBatchNo = string.Empty; /商户批次号,商家可填入自己的批次号,对账使用/
15 public string proxyMerName = string.Empty; /代理商家名称,二级商户编号/或证件号码/
16 public string proxyMerType = string.Empty; /代理商家证件类型/
17 public string proxyMercredentials = string.Empty; /代理商家证件号码/
18 public string netType = “0”; /渠道编号,固定填0:(html渠道)/
19 public string issBankNo = “BOCOM”; /发行卡机构号/
20 public string merURL = “”; /主动通知URL,为空则不发通知/
21 public string goodsURL = “…/PayRuslut/COMMPayReslut.aspx”; /取货URL,显示商户最终订单支付结果信息,为空则不显示按钮,不自动跳转/
22 public string merSignMsg = string.Empty; /发行卡机构号/
23 public string merID = “301310063009501”; /网上支付授权码,也就是上面导入的那个证书编号/
24 public string tranCode = “cb2200_sign”; /交易编号/
25 public string orderUrl = string.Empty; /订单最终的提交地址,需要从xml配置文件里获取/
26 #endregion
(2).把安装包里的demo文件下:C#\netpay\App_Code 的 config.cs 文件拷贝到系统界面层,
修改其命名空间及其类名即可,或者在你自己的代码中添加也可以,只要能够供后面调用即可;
这个类的完整代码如下:
1 using System;
2 using System.Data;
3 using System.Configuration;
4
5 using System.Web;
6 using System.Web.Security;
7 using System.Web.UI;
8 using System.Web.UI.HtmlControls;
9 using System.Web.UI.WebControls;
10 using System.Web.UI.WebControls.WebParts;
11
12 using System.Net.Sockets;
13
14 ///
15 ///config 的摘要说明
16 ///配置的系统参数和通讯方法示例
17 ///
18 ///
19 public class config
20 {
21 //商户号,就是前面导入进去的那个证书编号
22 public static string merchantID = “301310063009501”;
23 //socket bridge通讯ip,测试环境一般是本地,正式生产环境中需要修改
24 public static string ip = “127.0.0.1”;
25 //socket bridge端口
26 public static int port = 8080;
27
28 public config()
29 {
30
31 }
32
33 //与socket bridge通讯的方法示例
34 public string sendAndReceive(string sendMsg)
35 {
36 TcpClient client = new TcpClient(config.ip, config.port);
37 NetworkStream stream = client.GetStream();
38
39 Byte[] data = System.Text.Encoding.UTF8.GetBytes(sendMsg.ToString());
40 stream.Write(data, 0, data.Length);
41 data = new Byte[50 * 1024];
42 String responseData = String.Empty;
43 Int32 bytes = stream.Read(data, 0, data.Length);
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
String responseData = String.Empty;
43 Int32 bytes = stream.Read(data, 0, data.Length);
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-35WM08Lp-1713188524584)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!