工行B2C的DEMO程序_第1页
工行B2C的DEMO程序_第2页
工行B2C的DEMO程序_第3页
工行B2C的DEMO程序_第4页
工行B2C的DEMO程序_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、<?<?php/=/ FileName :send.php/ Summary :工行接口程序/ CreateTime :2007-12-14 10:08/ Author :Yang Zhao cpuyz/=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 = m

2、ysql_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="

3、;no"?><B2CReq> <interfaceName>ICBC_PERBANK_B2C</interfaceName> <interfaceVersion></interfaceVersion> <orderInfo> <orderDate>20080131105721</orderDate> <orderid>'.$orderid.'</orderid> <amount>'.$amount.'&

4、lt;/amount> <curType>001</curType> <merID>1304EC20001331</merID> <merAcct>1304002919300042726</merAcct> </orderInfo> <custom> <verifyJoinFlag>0</verifyJoinFlag> <Language>ZH_CN</Language> </custom> <message> <g

5、oodsID></goodsID> <goodsName>'.$subject.'</goodsName> <goodsNum></goodsNum> <carriageAmt></carriageAmt> <merHint>商城提示</merHint> <remark1></remark1> <remark2></remark2> <merURL>90/rczx/rece

6、ave.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=bas

7、e64_encode($dll->signC($text,strlen($text);$cert=base64_encode($dll->getCert(1);?><form action=" method="POST" name="send"><INPUT TYPE="hidden" NAME="interfaceName" value="ICBC_PERBANK_B2C"><INPUT TYPE="hidden"

8、NAME="interfaceVersion" value=""><INPUT TYPE="hidden" NAME="tranData" value="<?=$base64_tranData?>"><INPUT TYPE="hidden" NAME="merSignMsg" value="<?=$stext?>"><INPUT TYPE="hidden

9、" NAME="merCert" value="<?=$cert?>"><INPUT type="submit"></form><script language="JavaScript" type="text/JavaScript"> send.submit() </script>下面是工行提供的ASP的DEMO程序:<% Dim bb,rc Set bb =CreateObject("ICBCEBANK

10、UTIL.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 "签

11、名失败,错误原因:<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

12、 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>

13、" response.write cert End If%>工商银行网上支付接口PHP的demo(原创) - 发送篇 send.php<?phpdate_default_timezone_set('PRC');include_once("icbc.php");if(!empty($_POST'hide') $fdir = $_SERVER'DOCUMENT_ROOT'."/key/" /商户证书所放路径$target = "http:/localhost/test.php&q

14、uot;$payAPI'interfaceName' = "ICBC_PERBANK_B2C" /接口方式$payAPI'interfaceVersion' = "" /接口版本$payAPI'merID' = "0200EC20000012" /商户ID$payAPI'merAcct' = "0200029109000030106" /商户银行帐号$payAPI'merURL' = "http:/localho

15、st/get.php" /接收银行通知路径$payAPI'notifyType' = "HS" /接口通知方式$payAPI'orderid' = $_POST'orderid'$payAPI'amount' = $_POST'amount'$payAPI'curType' = "001" /货币类型 001为人民币$payAPI'resultType' = "0"$payAPI'orderDate'

16、; = date("YmdHis");$payAPI'verifyJoinFlag' = "0"$icbc = new icbcpay();$icbc->init($payAPI,$fdir);$icbc->Send();?><html><head><title>模拟B2C交易</title></head><body leftmargin="0" topmargin="0"><table cellpadd

17、ing="1" cellspacing="1" bgcolor="#E5E5E5" width="800" align="center"><tr bgcolor="#F5F5F5"><td height="50" align="center">交易平台</td></tr><form action="b2c.php" method="post&quo

18、t;><tr bgcolor="#FFFFFF"><td height="440" align="center"><table cellpadding="1" cellspacing="1" bgcolor="#E5E5E5" width="600"><tr bgcolor="#F5F5F5">   <td height="30" ali

19、gn="center" width="120">订 单 号</td>   <td bgcolor="#FDFDFD" width="580">&nbsp;   <input type="text" name="orderid" value="000000001" style="width:300px" />   </td&

20、gt;</tr><tr bgcolor="#F5F5F5">   <td height="30" align="center" width="120">商品金额</td>   <td bgcolor="#FDFDFD" width="580">&nbsp;   <input type="text" name="am

21、ount" value="100" style="width:300px" />   </td></tr><tr bgcolor="#FAFAFA">   <td colspan="2" height="30">   <input type="hidden" name="hide" value="1" /&g

22、t;   <input type="submit" value="提交" />   </td></tr></table></td></tr></form></table></body></html>icbc.php<?phpclass icbcpayprivate $payAPI = Array();private $fdir;private $LongString;private $POS

23、TString;private $target;public function init($api,$fdir)   $this->payAPI = $api;   $this->fdir = $fdir;   $this->target = $target;   $this->getCOMAPI();private function getCOMAPI()   $icbc = new COM("ICBCEBANKUTIL.B2CUtil");

24、0;  $crt = $this->fdir."user.crt"   $key = $this->fdir."user.key"   $rc = $icbc->init($crt, $crt, $key, '11111111');   $this->setString();   if($rc = 0)     $this->payAPI'merSignMsg' = $icb

25、c->signC($this->LongString, strlen($this->LongString);    $this->payAPI'merCert' = $icbc->getCert(1);   private function setString()   $payAPI = $this->payAPI;   $this->LongString.= ""   foreach ($payAPI as

26、 $key => $value)     $this->LongString.= $value;   private function setPOSTString()   $payAPI=$this->payAPI;   $this->POSTString = ""   foreach ($payAPI as $key => $value)     if($key = "interfaceName

27、")      $this->POSTString.=$key."=".$value;    else      $this->POSTString.="&".$key."=".$value;       private function setFromTxt()   $payAPI = $this->payAPI;

28、60;    foreach ($payAPI as $key => $value)     $header.= '<input type="hidden" readonly="readonly" name="'.$key.'" value="'.$value.'">'      $header.= '</form>'

29、60;  return $header;public function Send()     $url = "http:/localhost/test.php"   $header = '<form action="'.$url.'" id="sendform" method="post" name="order">'   $header.= $this->

30、setFromTxt();   $header.= "<script type="text/javascript">"   $header.= "document.getElementById("sendform").submit();"   $header.= "</script>"   echo $header;     /$referrer = &

31、quot;"   /$url_info = parse_url($url);   /if($referrer = "")    /$referrer = $_SERVER'SCRIPT_URI'   /$this->setPOSTString();   /$POSTString = $this->POSTString;   /$data_string = $POSTString;  

32、60;  /$request = "POST ".$url_info"path"." HTTP/1.1n"   /$request.= "Host: ".$url_info"host"."n"   /$request.= "Referer: $referrern"   /$request.= "Content-type: application/x-www-form-urlen

33、codedn"   /$request.= "Content-length: ".strlen($data_string)."n"   /$request.= "Connection: closen"   /$request.= "n"   /$request.= $data_string."n"   /$fp = fsockopen($url_info'host', 8

34、0);   /fputs($fp, $request);   /while (!feof($fp)     /$request .= fgets($fp, 128);   /   /echo $request;   /fclose($fp);   /header("location:$url");   /printf('<script type="text/javascript&qu

35、ot;>');   /printf('window.location="'.$url.'"');   /printf('</script>');?>我前几天也正在做这个工行的B2C系统 刚刚调试完成,不过我用的是asp做的, 由于我不会,这里只把我的过程说出来,希望对楼主有所帮助 接口环境ASP语言,工行网上支付接口步骤 1)搭建java环境及java环境测试: 参见文档:“ICBC   API配置使用方法.doc”(这个工行应该提供给你了的)

36、Win32平台下API配置使用方法 安装、使用方法 1.将dll目录下的.dll文件拷贝到系统的WinNT/System32或Windows/System32下; 2.各个接口的具体使用方法:c版请参见demo.c,     java版请参见Test.java; java测试 1.Windows2000,JDK1.3   (jdk包可以网上下载,请注意必须是1.3及其以上版本) 2.在C:盘建立目录test,放入新老证书new.crt,   old.cert和对应的私钥文件new.key,old.key;测试用的所有证书我是都放这里的   3.

37、将编译ReutrnValue.java得到的.infosec.icbc.ReturnValue.class拷到系统的classpath里; 4.将编译Test.java得到的Test.class拷到系统的classpath里,使用命令行运行 "java     Test ",程序依次允许API中的所有的方法,并将结果输出值终端;           证书就用工行所提供的就可以了。第3点提到的系统的classpath是指在环境变量中所列出的任一个目录都可以,当然这对懂一点java的阅者而言是无需多说了。ja

38、va   Test能顺得输出的话(java可是区分大小写的吆),环境就搭建完成了 2)接下来的事就只要看asp开发包就是了 当然运行这段代码前可别忘了注册ICBCEBANKUTIL.B2CUtil(运行:regsvr32ICBCEBANKUTIL.dll),还要就是 (rc=bb.init   ( "d:user.crt ", "d:user.crt ", "d:user.key ", "12345678 "))这里所指出的路径必须要和实际证书存放的路径一致,千万注意别把密码弄错了,对了,应该好

39、像应该先把密钥导入的。 运行一下这段asp代码,如果没有错误的话就可以写订单提交页面和信息接收的页面了 3)订单提交页面:(参见“中国工商银行网上银行系统B2C子系统商户接口规范20030106V3.4.doc”) <%   Set   bb   =CreateObject( "ICBCEBANKUTIL.B2CUtil ") rc=bb.init   ( "d:icbcuser.crt ", "d:icbcuser.crt ", "d:icbcuser.key ",

40、"123456 ") orderid=rs( "orderid ") payment=payment*100 merchantid= "120300010002 " interfaceType= "HS " curType= "001 " hsmsgType= "0 " merURL= " " '接收信息Url src=merchantid&merURL&interfaceType&orderid&payment&a

41、mp;curType&hsmsgtype ssrc   =   bb.signC(src,   Len(src) cert=bb.getCert(1) %> <table   width=300   align= "center ">     <tr> <td> <form   name= "   sendOrder   "   method= "post "  

42、; action= " ">                 <div   align= "center ">                     <input   type= "hidden "   name= "merchantid "   value= "

43、 <%=merchantid%> "   >                     <!-商城代码->                     <input   type= "hidden "   name= "interfaceType "   value= "

44、; <%=interfaceType%> "   >                     <!-接口类型->                     <input   type= "hidden "   name= "merURL "   value= " &

45、lt;%=merURL%> "   >                     <!-接收工行支付结果信息的程序名称和地址->                     <input   type= "hidden "   name= "orderid "   value= &qu

46、ot; <%=orderid%> "   >                     <!-订单号->                     <input   type= "hidden "   name= "amount "   value= " <%=

47、payment%> "   >                     <!-订单总金额(以分为单位)->                     <input   type= "hidden "   name= "curType "   value= " <%=

48、curType%> "   >                     <!-币种->                     <input   type= "hidden "   name= "hsmsgType "   value= " <%=hsmsgTyp

49、e%> "   >                     <!-信息发送类型->                     <input   type= "hidden "   name= "signMsg "   value= " <%=ssrc%> &q

50、uot;   >                     <!-BASE64编码后的交易数据签名信息->                     <input   type= "hidden "   name= "cert "   value= " <%=cert%> &q

51、uot;   >                     <!-BASE64编码后的商户证书->                     <input   type= "hidden "   name= "comment1 "   value= " "   >

52、                     <!-备注字段2->                     <input   type= "hidden "   name= "comment2 "   value= " "   >       

53、60;             <!-备注字段3->                     <input   type= "submit "   value= "工行网上支付 ">                 </div>     

54、60;       </form> </tb> </tr> </table> 4)接收页: 这个页面中只提供一个处理信息的页面的地址,其他没有任何东西 以下是dealinfo.asp中的部分代码 UserID=request.form( "UserID ") OrderNum=request.form( "orderNum ") Orderid=ordernum amount=request.form( "amount ") payment=amount/1

55、00 TranDate=request.form( "tranDate ") Transerialnum=request.form( "transerialnum ") AuthNum=request.form( "authNum ") SuccMark=request.form( "succMark ")     '0   -成功;1   -失败;2-可疑交易 Comment=request.form( "comment ") CurType=request.form( "curType ") HsmsgType=request.form( "hsmsgTy

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论