工行的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
%>可有高手看看是怎么一回事?