<pre name="code" class="java"><pre name="code" class="java"><pre name="code" class="java"><span> </span>URL url = new URL(pathUrl);
<span> </span><strong>//httpURLConnection打开链接</strong>
HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
<span> </span><strong>//<span style="color: rgb(51, 51, 51); font-family: arial, 宋体, sans-serif, tahoma, 'Microsoft YaHei'; font-size: 14px; line-height: 24px;">是否连接遵循重定向</span></strong>
httpConn.setInstanceFollowRedirects(true);
<span> </span>//设置提交数据的编码方式,相当于form表单提交时的enctype
<span> </span>//<span style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 18px; background-color: rgb(249, 249, 249);">默认地,表单数据会编码为 "application/x-www-form-urlencoded"。就是说,在发送到服务器之前,所有字符都会进行编码(空格转换为 "+" 加号,特殊符号转换为 ASCII HEX 值)。</span>
httpConn.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
httpConn.setDoOutput(true);// 使用 URL 连接进行输出
httpConn.setDoInput(true);// 使用 URL 连接进行输入
httpConn.connect();
<span> </span>//设置请求输出流的形式,将字符串以流的形式输出
DataOutputStream dataOutputStream = new DataOutputStream(httpConn.getOutputStream());
//设置请求需要的参数,注意,提交的时候需要对参数进行unicode编码。
<span> </span>String CS = "merReqData="+URLEncoder.encode(payInfo,"UTF-8");
<span> </span>//输出字符串流
dataOutputStream.writeBytes(CS);
dataOutputStream.flush();
dataOutputStream.close();
// 获得响应状态
int responseCode = httpConn.getResponseCode();
if (HttpURLConnection.HTTP_OK == responseCode) {
// 当正确响应时处理数据
StringBuffer sb = new StringBuffer();
String readLine;
BufferedReader responseReader;
// 处理响应流,必须与服务器响应流输出的编码一致
responseReader = new BufferedReader(new InputStreamReader(httpConn.getInputStream(), "GBK"));
while ((readLine = responseReader.readLine()) != null) {
sb.append(readLine).append("\n");
}
responseReader.close();
logger.info("接受银行的数据为********************"+sb.toString());
String sign = sb.toString();
//解密的字符串
String xmlData = BJBankUtil.getVerifier(sign);
logger.info("解密之后的数据为"+xmlData);
//将返回的xml字符串解密后进行xml属性解析
Map<String, String> resMap = ParseRefundXMLUtil.getRefundResponseByBank(xmlData.getBytes());
if("0000".equals(resMap.get("value"))){
logger.info("订单生成成功正在进入手机银行支付..."+resMap.get("orderNo"));
String random = resMap.get("randomData");//获取到的随机数
//进入手机银行支付页面需提交参数
return "";
}else if("zf0110024".equals(resMap.get("value"))){
logger.info("重复提交的订单..."+resMap.get("orderNo"));
return "payResultFail";
}
else if("zf000001".equals(resMap.get("value"))){
logger.info("订单生成失败正在进入失败页面..."+resMap.get("orderNo"));
return "payResultFail";
}else{
return "payResultFail";
}
}else{
return "payResultFail";
}