工商银行支付接口开发

meloveself 2009-04-13 03:31:51
现在在开发工商银行支付接口的时候出现了这样一个问题:我点击提交按钮时,工商银行则提示如下:信息代码:96112036

提示信息:对不起,系统报错,信息处理失败。

源程序如下:
<%@ Page Language="C#" %>
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Configuration" %>
<%@ Import Namespace="System.Web" %>
<%@ Import Namespace="System.Web.Security" %>
<%@ Import Namespace="System.Web.UI" %>
<%@ Import Namespace="System.Web.UI.WebControls" %>
<%@ Import Namespace="System.Web.UI.WebControls.WebParts" %>
<%@ Import Namespace="System.Web.UI.HtmlControls" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>工商银行在线支付</title>
<meta http-equiv="content-type" content="text/html;charset=GBK" />
</head>
<body>
<div>
<%
string order = "https://mybank.dccnet.com.cn/servlet/ICBCINBSEBusinessServlet";//工商银行提交地址
string interfaceName = "ICBC_PERBANK_B2C";
string interfaceVersion = "1.0.0.3";
//以下是Order Infomation
string orderDate=DateTime.Now.ToString("yyyyMMddhhmmss");
string orderID="20070725105014-2134062548";
string amount="20";
string curType="001";//人民币
string merID = "0200EC20006972";
string merAcct = "0200004519000100173";
string merCert = "";//证书公钥
//以下是Custom Information
string verifyJoinFlag="1";
string language="ZH_CN";

//以下是Goods Information
string goodsID="001";
string goodsName="abc";
string goodsNum="2";
string carriageAmt="20";
string merHint="efa";
string remark1="";
string remark2="";
string merURL="http://www.bjetc.cn";
string merVAR="test";
string transData="<?xml version="+"\"1.0\""+" encoding="+"\"GBK\""+" standalone="+"\"no\" ?><B2CReq><interfaceName>"+interfaceName+"</interfaceName><interfaceVersion>"+interfaceVersion+"</interfaceVersion><orderInfo><orderDate>"+orderDate+"</orderDate><orderid>"+orderID+"</orderid><amount>"+amount+"</amount><curType>"+curType+"</curType><merID>"+merID+"</merID><merAcct>"+merAcct+"</merAcct></orderInfo><custom><verifyJoinFlag>"+verifyJoinFlag+"</verifyJoinFlag><Language>"+language+"</Language></custom><message><goodsID>"+goodsID+"</goodsID><goodsName>"+goodsName+"</goodsName><goodsNum>"+goodsNum+"</goodsNum><carriageAmt>"+carriageAmt+"</carriageAmt><merHint>"+merHint+"</merHint><remark1>"+remark1+"</remark1><remark2>"+remark2+"</remark2><merURL>"+merURL+"</merURL><merVAR>"+merVAR+"</merVAR></message></B2CReq>";
//string path1 = @"D:\user.crt";
string path1 = @"D:\ebb2cpublic.crt";//银行测试证书路径
string path2=@"D:\user.crt";//拆分pfx后缀的证书后的公钥路径
string path3=@"D:\user.key";//拆分pfx后缀的证书后的私鈅路径
string key="12345678";
string merSignMsg="";//加密后的字符串,下面赋值
//ICBCEBANKUTILLib.B2CUtil obj = new ICBCEBANKUTILLib.B2CUtilClass();
ICBCEBANKUTILLib.B2CUtilClass obj = new ICBCEBANKUTILLib.B2CUtilClass();
//ICBCEBANKUTILLib.B2CUtil obj = new ICBCEBANKUTILLib.B2CUtil();
if (obj.init(path1, path2, path3, key) == 0)//加载公钥,私鈅,如果返回0则表示加载成功
{
merSignMsg = obj.signC(transData,transData.Length);//加密明文
if (obj.verifySignC(transData, transData.Length, merSignMsg, merSignMsg.Length) == 0)
{
merCert = obj.getCert(1);//提取证书
}
}
else//失败的处理方法
{
Response.Write(obj.getRC());
}

%>
</div>
<form id="order" method="post" action="<%= order %>">
<input name="interfaceName" type="hidden" value="ICBC_PERBANK_B2C" />
<input name="interfaceVersion" type="hidden" value="1.0.0.3" />
<input name="tranData" type="hidden" value="<%= transData %>" />
<input name="merSignMsg" type="hidden" value="<%= merSignMsg %>" />
<input name="merCert" type="hidden" value="<%= merCert %>" />
<input type="submit" value="工商银行进行支付" />
</form>
</body>
</html>


...全文
1921 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tAction2007 2010-01-13
  • 打赏
  • 举报
回复
楼主,你的问题解决了吗?
是不是下面这句不需要的原因呀,这句应该是在查询接口中使用的吧:
if (obj.verifySignC(transData, transData.Length, merSignMsg, merSignMsg.Length) == 0)
yanm7788 2009-06-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xiaomin_li3 的回复:]
ICBCEBANKUTILLib
是什么东西啊


就是这个东西出的错
[/Quote]

这是工行提供的接口吧...
xiaomin_li3 2009-06-01
  • 打赏
  • 举报
回复
ICBCEBANKUTILLib
是什么东西啊


就是这个东西出的错
wangchao813 2009-05-20
  • 打赏
  • 举报
回复
XML没发现问题呀?学习。。。
<?xml version="+"\"1.0\""+" encoding="+"\"GBK\""+" standalone="+"\"no\" ?>
<B2CReq>
<interfaceName>"
+interfaceName+
"
</interfaceName>
<interfaceVersion>"+
interfaceVersion+
" </interfaceVersion>
<orderInfo>
<orderDate>"+orderDate+" </orderDate>
<orderid>"+orderID+" </orderid>
<amount>"+amount+" </amount>
<curType>"+curType+"</curType>
<merID>"+merID+"</merID>
<merAcct>"+merAcct+"</merAcct>
</orderInfo>
<custom>
<verifyJoinFlag>"+verifyJoinFlag+" </verifyJoinFlag>
<Language>"+language+" </Language>
</custom>
<message>
<goodsID>"+goodsID+" </goodsID>
<goodsName>"+goodsName+"</goodsName>
<goodsNum>"+goodsNum+"</goodsNum>
<carriageAmt>"+carriageAmt+" </carriageAmt>
<merHint>"+merHint +" </merHint>
<remark1>"+remark1+"</remark1>
<remark2>"+remark2+" </remark2>
<merURL>"+merURL+" </merURL>
<merVAR>"+merVAR+" </merVAR>
</message>
</B2CReq>";
shmily851206 2009-05-20
  • 打赏
  • 举报
回复
学习下 但是这些非要在页面中来写吗 放在c#文件中不行吗
特制蛋炒饭 2009-05-20
  • 打赏
  • 举报
回复
学习中。。。
meloveself 2009-04-29
  • 打赏
  • 举报
回复
我的那句xml应该没有问题,我曾尝试着更改xml当中的东西,如果格式方面稍有改动就不能转到工商银行的网站页面上去了,直接在提交的时候就报错,我估计可能是下面的语句出现问题,但不清楚应该如何修改,测试。我无论如何调整obj.init()函数中间的参数的顺序什么的,返回值都是0,不清楚是怎么回事。
ICBCEBANKUTILLib.B2CUtilClass obj = new ICBCEBANKUTILLib.B2CUtilClass();
//ICBCEBANKUTILLib.B2CUtil obj = new ICBCEBANKUTILLib.B2CUtil();
if (obj.init(path1, path2, path3, key) == 0
newredhat2 2009-04-29
  • 打赏
  • 举报
回复
关注...............
xutao888 2009-04-15
  • 打赏
  • 举报
回复
估计你那一句XML有问题,生成了放在XML文件里面看有无报错
tsp860901 2009-04-15
  • 打赏
  • 举报
回复
关注。。
freewind0521 2009-04-15
  • 打赏
  • 举报
回复
有点晕,呵呵

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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