根据文档需要自己配置的内容
支付
path.properties
中的地址,还需要修改Tomcat端口为80端口否则报如下错误
- 上面问题解决以后,现在提交订单会提示缺少必备参数,要参考该文档最下面的附录C.目前是
这个要让银联那边查出来
<%--自己根据接口文档添加的数据--%>
<tr>
<td>
产品类型
</td>
<td>
<input type="text" name="ProductType" value="00020004" maxlength="8"> (4位数字,00020004=Secure Pay香港子公司)
</td>
</tr>
//商户发送的报文key值中添加ProductType
String params = "TranReserved;MerBgUrl;BusiType;CurryNo;MerSplitMsg;MerId;AccessType;AcqCode;SplitType;Signature;TranDate;TranTime;OriTranDate;TranType;ProductType;Version;MerResv;SplitMethod;MerOrderNo;OriOrderNo;RefundAmt";
- 收单机构号不必填写
- 交易币种目前是写USD
退款
退款功能中的退款订单号是自动生成的,不需要管
- 以下两个,就是订单提交时间
- 原支付交易订单号就是,点支付时候自动生成的订单号
查询
- demo中多了交易时间会导致 签名验证失败,所以不要填写交易时间
- 出现以下错误是因为查询要加ip白名单的,这个要联系银联的运营帮忙加下,自己的公网ip在百度上就可以查到
- 订单号是支付时候生成的订单号
/**TODO 转发操作,地址是requestDispatcherPath的值
* requestDispatcherPath这个一个变量,上面定义了变量的值,这个值是根据dispatchMap.get(tranType)方法
* dispatchMap.get用来通过key拿到value值,key值是根据页面传过来的tranType
*/
request.getRequestDispatcher(requestDispatcherPath).forward(request, response);
第一种是request.getRequestDispatcher().forward(request,response):
1、属于转发,也是服务器跳转,相当于方法调用,在执行当前文件的过程中转向执行目标文件,两个文件(当前文件和目标文件)属于同一次请求,前后页共用一个request,可以通过此来传递一些数据或者session信息,request.setAttribute()和request.getAttribute()。
2、在前后两次执行后,地址栏不变,仍是当前文件的地址。
3、不能转向到本web应用之外的页面和网站,所以转向的速度要快。
4、URL中所包含的“/”表示应用程序(项目)的路径。
b2cPay.jsp
- 是传给银联的,这里可以在客户端界面只显示订单号,订单金额,交易时间,交易日期,交易币种
- 点击 “提交订单”,会跳转到银联支付页面,当前页也会通过SignServlet转发到b2cPaySend.jsp页面,地址栏会显示的是signServlet.do
b2cPaySend.jsp
- 这个页面是如果浏览器没有弹出支付页面时候的操作
- 点"提交订单"会根据
form的action值跳转
<%
String pay_url = PathUtil.getValue("pay_url");
%>
<form name="payment" action="<%= pay_url %>" method="POST" target="_blank">
会通过PathUtil获取path.properties中的pay_url
的值