工行的DEMO程序里提供了ASP等语言,我现在用PHP来开发,代码如下:
//==============================================================
<?
<?php
//===================================================
// FileName :send.php
// Summary :工行接口程序
// CreateTime :2007-12-14 10:08
// Author :Yang Zhao [email protected]
//====================================================
session_start();
require_once('config.php');
$link_id = mysql_connect($dbhost,$dbuser,$dbpwd);
mysql_select_db($dbname);
$str = "SELECT * FROM rc_examinee WHERE id=4";
$result = mysql_query($str,$link_id);
$rs = mysql_fetch_array($result);
$orderDate = date("YmdHms",time());
$orderid =$rs['orderid'];
$amount =$rs['amount'];
$subject = $rs['subject'];
mysql_close($link_id);
$text ='<?xml version="1.0" encoding="GBK" standalone="no"?>
<B2CReq>
<interfaceName>ICBC_PERBANK_B2C</interfaceName>
<interfaceVersion>1.0.0.3</interfaceVersion>
<orderInfo>
<orderDate>20080131105721</orderDate>
<orderid>'.$orderid.'</orderid>
<amount>'.$amount.'</amount>
<curType>001</curType>
<merID>1304EC20001331</merID>
<merAcct>1304002919300042726</merAcct>
</orderInfo>
<custom>
<verifyJoinFlag>0</verifyJoinFlag>
<Language>ZH_CN</Language>
</custom>
<message>
<goodsID></goodsID>
<goodsName>'.$subject.'</goodsName>
<goodsNum></goodsNum>
<carriageAmt></carriageAmt>
<merHint>商城提示</merHint>
<re1></re1>
<re2></re2>
<merURL>http://192.168.8.190/rczx/receave.php</merURL>
<merVAR>test</merVAR>
</message>
</B2CReq>';
$base64_tranData=base64_encode($text);
$dll = new COM("ICBCEBANKUTIL.B2CUtil");
$rc=$dll->init("d:\user.crt","d:\user.crt","d:\user.key","11111111");
$stext=base64_encode($dll->signC($text,strlen($text)));
$cert=base64_encode($dll->getCert(1));
?>
<form action="https://mybank.dccnet.com.cn/servlet/ICBCINBSEBusinessServlet" method="POST" name="send">
<INPUT TYPE="hidden" NAME="interfaceName" value="ICBC_PERBANK_B2C">
<INPUT TYPE="hidden" NAME="interfaceVersion" value="1.0.0.3">
<INPUT TYPE="hidden" NAME="tranData" value="<?=$base64_tranData?>">
<INPUT TYPE="hidden" NAME="merSignMsg" value="<?=$stext?>">
<INPUT TYPE="hidden" NAME="merCert" value="<?=$cert?>">
<INPUT type="submit">
</form>
<script language="JavaScript" type="text/JavaScript">
send.submit()
</script>上面标记红色的代码是我认为是可能出错的地方,
发送过去后工行那边显示的结果是:信息代码:32158
提示信息:对不起!系统报错,交易处理失败下面是工行提供的ASP的DEMO程序:
<%
Dim bb,rc
Set bb =CreateObject("ICBCEBANKUTIL.B2CUtil")
rc=bb.init ("d:\user.crt","d:\user.crt","d:\user.key","11111111")
if rc=0 then
response.write "初始化成功.<br>"
end if
src = "this is a test"
ssrc = bb.signC(src, Len(src))
If ssrc = "" Then
response.write "签名失败,错误原因:<br>"
response.write bb.getRC
else
response.write "签名成功:<br>签名为:"
response.write ssrc
End If
response.write "<br>"
rc=bb.verifySignC(src, Len(src), ssrc, Len(ssrc))
If rc<>0 Then
response.write "验证签名失败,错误原因:<br>"
response.write rc
else
response.write "验证签名成功:<br>"
End If
response.write "<br>"
response.write "商户证书:"
cert=bb.getCert(1)
If cert = "" Then
response.write "获取商户证书失败,错误原因:<br>"
response.write bb.getRC
else
response.write "获取商户证书成功:<br>"
response.write cert
End If
%>可有高手看看是怎么一回事?
//==============================================================
<?
<?php
//===================================================
// FileName :send.php
// Summary :工行接口程序
// CreateTime :2007-12-14 10:08
// Author :Yang Zhao [email protected]
//====================================================
session_start();
require_once('config.php');
$link_id = mysql_connect($dbhost,$dbuser,$dbpwd);
mysql_select_db($dbname);
$str = "SELECT * FROM rc_examinee WHERE id=4";
$result = mysql_query($str,$link_id);
$rs = mysql_fetch_array($result);
$orderDate = date("YmdHms",time());
$orderid =$rs['orderid'];
$amount =$rs['amount'];
$subject = $rs['subject'];
mysql_close($link_id);
$text ='<?xml version="1.0" encoding="GBK" standalone="no"?>
<B2CReq>
<interfaceName>ICBC_PERBANK_B2C</interfaceName>
<interfaceVersion>1.0.0.3</interfaceVersion>
<orderInfo>
<orderDate>20080131105721</orderDate>
<orderid>'.$orderid.'</orderid>
<amount>'.$amount.'</amount>
<curType>001</curType>
<merID>1304EC20001331</merID>
<merAcct>1304002919300042726</merAcct>
</orderInfo>
<custom>
<verifyJoinFlag>0</verifyJoinFlag>
<Language>ZH_CN</Language>
</custom>
<message>
<goodsID></goodsID>
<goodsName>'.$subject.'</goodsName>
<goodsNum></goodsNum>
<carriageAmt></carriageAmt>
<merHint>商城提示</merHint>
<re1></re1>
<re2></re2>
<merURL>http://192.168.8.190/rczx/receave.php</merURL>
<merVAR>test</merVAR>
</message>
</B2CReq>';
$base64_tranData=base64_encode($text);
$dll = new COM("ICBCEBANKUTIL.B2CUtil");
$rc=$dll->init("d:\user.crt","d:\user.crt","d:\user.key","11111111");
$stext=base64_encode($dll->signC($text,strlen($text)));
$cert=base64_encode($dll->getCert(1));
?>
<form action="https://mybank.dccnet.com.cn/servlet/ICBCINBSEBusinessServlet" method="POST" name="send">
<INPUT TYPE="hidden" NAME="interfaceName" value="ICBC_PERBANK_B2C">
<INPUT TYPE="hidden" NAME="interfaceVersion" value="1.0.0.3">
<INPUT TYPE="hidden" NAME="tranData" value="<?=$base64_tranData?>">
<INPUT TYPE="hidden" NAME="merSignMsg" value="<?=$stext?>">
<INPUT TYPE="hidden" NAME="merCert" value="<?=$cert?>">
<INPUT type="submit">
</form>
<script language="JavaScript" type="text/JavaScript">
send.submit()
</script>上面标记红色的代码是我认为是可能出错的地方,
发送过去后工行那边显示的结果是:信息代码:32158
提示信息:对不起!系统报错,交易处理失败下面是工行提供的ASP的DEMO程序:
<%
Dim bb,rc
Set bb =CreateObject("ICBCEBANKUTIL.B2CUtil")
rc=bb.init ("d:\user.crt","d:\user.crt","d:\user.key","11111111")
if rc=0 then
response.write "初始化成功.<br>"
end if
src = "this is a test"
ssrc = bb.signC(src, Len(src))
If ssrc = "" Then
response.write "签名失败,错误原因:<br>"
response.write bb.getRC
else
response.write "签名成功:<br>签名为:"
response.write ssrc
End If
response.write "<br>"
rc=bb.verifySignC(src, Len(src), ssrc, Len(ssrc))
If rc<>0 Then
response.write "验证签名失败,错误原因:<br>"
response.write rc
else
response.write "验证签名成功:<br>"
End If
response.write "<br>"
response.write "商户证书:"
cert=bb.getCert(1)
If cert = "" Then
response.write "获取商户证书失败,错误原因:<br>"
response.write bb.getRC
else
response.write "获取商户证书成功:<br>"
response.write cert
End If
%>可有高手看看是怎么一回事?
这是工行的API开发文档及DEMO程序,很全的,给大家研究下