工行B2C的DEMO程序_第1頁
工行B2C的DEMO程序_第2頁
工行B2C的DEMO程序_第3頁
工行B2C的DEMO程序_第4頁
工行B2C的DEMO程序_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

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%>工商銀行網(wǎng)上支付接口PHP的demo(原創(chuàng)) - 發(fā)送篇 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系統(tǒng) 剛剛調(diào)試完成,不過我用的是asp做的, 由于我不會,這里只把我的過程說出來,希望對樓主有所幫助 接口環(huán)境ASP語言,工行網(wǎng)上支付接口步驟 1)搭建java環(huán)境及java環(huán)境測試: 參見文檔:“ICBC   API配置使用方法.doc”(這個工行應(yīng)該提供給你了的)

36、Win32平臺下API配置使用方法 安裝、使用方法 1.將dll目錄下的.dll文件拷貝到系統(tǒng)的WinNT/System32或Windows/System32下; 2.各個接口的具體使用方法:c版請參見demo.c,     java版請參見Test.java; java測試 1.Windows2000,JDK1.3   (jdk包可以網(wǎng)上下載,請注意必須是1.3及其以上版本) 2.在C:盤建立目錄test,放入新老證書new.crt,   old.cert和對應(yīng)的私鑰文件new.key,old.key;測試用的所有證書我是都放這里的   3.

37、將編譯ReutrnValue.java得到的.infosec.icbc.ReturnValue.class拷到系統(tǒng)的classpath里; 4.將編譯Test.java得到的Test.class拷到系統(tǒng)的classpath里,使用命令行運行 "java     Test ",程序依次允許API中的所有的方法,并將結(jié)果輸出值終端;           證書就用工行所提供的就可以了。第3點提到的系統(tǒng)的classpath是指在環(huán)境變量中所列出的任一個目錄都可以,當(dāng)然這對懂一點java的閱者而言是無需多說了。ja

38、va   Test能順得輸出的話(java可是區(qū)分大小寫的吆),環(huán)境就搭建完成了 2)接下來的事就只要看asp開發(fā)包就是了 當(dāng)然運行這段代碼前可別忘了注冊ICBCEBANKUTIL.B2CUtil(運行:regsvr32ICBCEBANKUTIL.dll),還要就是 (rc=bb.init   ( "d:user.crt ", "d:user.crt ", "d:user.key ", "12345678 "))這里所指出的路徑必須要和實際證書存放的路徑一致,千萬注意別把密碼弄錯了,對了,應(yīng)該好

39、像應(yīng)該先把密鑰導(dǎo)入的。 運行一下這段asp代碼,如果沒有錯誤的話就可以寫訂單提交頁面和信息接收的頁面了 3)訂單提交頁面:(參見“中國工商銀行網(wǎng)上銀行系統(tǒng)B2C子系統(tǒng)商戶接口規(guī)范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%> "   >                     <!-接收工行支付結(jié)果信息的程序名稱和地址->                     <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%> "   >                     <!-信息發(fā)送類型->                     <input   type= "hidden "   name= "signMsg "   value= " <%=ssrc%> &q

50、uot;   >                     <!-BASE64編碼后的交易數(shù)據(jù)簽名信息->                     <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= "工行網(wǎng)上支付 ">                 </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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論