谁做过icbc的b2b开发,帮忙看看

cemoi 2010-02-08 08:24:02
以下是代码,无法运行,提交后就提示:会话过期

<%

SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
Date now=new Date();
String strdate = formatter.format(now);


String signMsg = "";
String certMsg = "";

String orderid = ""+System.currentTimeMillis();


String APIName="B2B";
String APIVersion="001.001.001.001";
String Shop_code="1809EC13356183";
String MerchantURL ="http://localhost/app/gateway/icbcbank.jsp";
String ContractNo=orderid;
String ContractAmt="100";
String Account_cur="001";
String JoinFlag="2";
String SendType="1";
String TranTime=strdate;
String Shop_acc_num ="";
String PayeeAcct ="1234567890123456789";
String tranData = "APIName="+APIName+"&APIVersion="+APIVersion+"&Shop_code="+Shop_code+"&MerchantURL="+MerchantURL+"&ContractNo="+ContractNo
+ "&ContractAmt="+ContractAmt+"&Account_cur="+Account_cur+"&JoinFlag="+JoinFlag+"&SendType="+SendType+"&TranTime="+TranTime
+ "&Shop_acc_num="+Shop_acc_num+"&PayeeAcct="+PayeeAcct;

System.out.println(tranData);
String password = "12345678";

try{
byte[] byteSrc = tranData.getBytes();
char[] keyPass = password.toCharArray();

FileInputStream in1 = new FileInputStream("d:\\user.crt");
byte[] bcert = new byte[in1.available()];
in1.read(bcert);
in1.close();
FileInputStream in2 = new FileInputStream("d:\\user.key");
byte[] bkey = new byte[in2.available()];
in2.read(bkey);
in2.close();


byte[] sign =ReturnValue.sign(byteSrc,byteSrc.length,bkey,keyPass);
if (sign==null) {
out.println("<font face='Arial' size='4' color='Red'>签名失败,签名返回为空。<br>请检查证书私钥和私钥保护口令是否正确。</font><br>");
}else{
//out.println("<font face='Arial' size='4' color='Green'>签名成功</font><br>");

byte[] EncSign = ReturnValue.base64enc(sign);
String SignMsgBase64=new String(EncSign).toString();
signMsg = SignMsgBase64 ;
//out.println("<font face='Arial' size='4' color='Green'>签名信息BASE64编码:</font>"+SignMsgBase64.substring(0,100)+"...<br>");

byte[] EncCert=ReturnValue.base64enc(bcert);
String CertBase64=new String(EncCert).toString();
certMsg = CertBase64;
//out.println("<font face='Arial' size='4' color='Green'>证书公钥BASE64编码:</font>"+CertBase64.substring(0,100)+"...<br>");

byte[] DecSign = ReturnValue.base64dec(EncSign);
if (DecSign!=null){
//out.println("<font face='Arial' size='4' color='Green'>签名信息BASE64解码成功</font><br>");
byte[] DecCert = ReturnValue.base64dec(EncCert);
if (DecCert!=null){
//out.println("<font face='Arial' size='4' color='Green'>证书公钥BASE64解码成功</font><br>");
int a=ReturnValue.verifySign(byteSrc,byteSrc.length,DecCert,DecSign);
if (a==0){
//out.println("<font face='Arial' size='4' color='Green'>验签成功</font><br>");
}else{
//out.println("<font face='Arial' size='4' color='Red'>验签失败<br>验证返回码:</font><br>"+a);
}
}else{
//out.println("<font face='Arial' size='4' color='Red'>证书BASE64解码失败</font><br>");
}
}else{
//out.println("<font face='Arial' size='4' color='Red'>签名信息BASE64解码失败</font><br>");
}
}

}catch (Exception e){
out.println(e);
}

%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>b2b</title>
</head>

<body onload="MM_preloadImages('../images/btn_buy_wy_q_2.gif','../images/btn_buy_wy_g_2.gif')">
<Form id=form1 action=https://corporbank3.dccnet.com.cn/servlet/ICBCINBSEBusinessServlet method=post target="_blank">
<input type=hidden name="APIName" value="B2B">
<input type=hidden name="APIVersion" value="<%=APIVersion%>">
<input type=hidden name="Shop_code" value="<%=Shop_code%>">
<input type=hidden name="MerchantURL" value="<%=MerchantURL%>">
<input type=hidden name="ContractNo" value="<%=ContractNo%>">
<input type=hidden name="ContractAmt" value="<%=ContractAmt%>">
<input type=hidden name="Account_cur" value="<%=Account_cur%>">
<input type=hidden name="JoinFlag" value="<%=JoinFlag%>">
<input type=hidden name="Mer_Icbc20_signstr" value="<%=signMsg%>">
<input type=hidden name="Cert" value="<%=certMsg%>">
<input type=hidden name="SendType" value="<%=SendType%>">
<input type=hidden name="TranTime" value="<%=TranTime%>">
<input type=hidden name="Shop_acc_num" value="<%=Shop_acc_num%>">
<input type=hidden name="PayeeAcct" value="<%=PayeeAcct%>">
<input type=hidden name="GoodsCode" value="001">
<input type=hidden name="GoodsName" value="<%=request.getParameter("appid")%>">
<input type=hidden name="Amount" value="1">
<input type=hidden name="TransFee" value="1">
<input type=hidden name="ShopRemark" value="">
<input type=hidden name="ShopRem" value="">
</Form>
</body>
</html>
<script language="javascript">
function doB2B(){
form1.submit();
}
doB2B();
</script>
...全文
107 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mimangshamo 2011-03-11
  • 打赏
  • 举报
回复
我正在做ICBC的B2B支付,你需要弄个测试U盾插上电脑,你点支付后应该是先让你输入U盾密码的,然后才继续。
myj870517 2010-02-08
  • 打赏
  • 举报
回复
好难,貌似没看见有session的地方

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧