銀行支付接口Webservice之一

需求:PHPJAVA做交互,PHP傳遞支付信息給JAVA簽名後反饋給PHP,然後提交給工商銀行。

大體思路如下圖:

 

 

蘋果巴士

準備技術:webservice,json,php,java

最近在做一個工商銀行支付接口的項目,雖然是小項目,但是做了很久了,總結原因,並非技術因素,而是溝通問題,因爲方面給予的回覆效率太低,每次都要等上幾天的時間。

剛開始向對方索要簽名擴展,因爲我們使用的語言是PHP,所以一定要對應我們服務器上的PHP版本才能使用擴展,而經過幾番協調之後,對方終於給了回覆,但是對方給的so文件無法與我們的PHP版本對應,這就導致程序開發依然無法進展下去了。

幾經反覆協調,最後對方在半個月以後給了一套java的簽名跳轉程序讓我們自己研究(汗!我不會java,沒辦法,爲了兌現客戶的承諾,我們只好硬着頭皮上了。

研究了幾個小時的java之後,開始看起了銀行給的程序,基本上都能看懂,但是後來依然無法做跳轉,後來銀行提醒說,提交支付商品的時間要向銀行索要,不是自己寫的,因爲銀行的測試服務器時間和實際的不同的。此問題後來也解決了,但是後面想到PHP如何與JAVA交互呢,因爲PHP要提交數據給JAVA,然後JAVA簽名,最後把數據返回給PHPPHP在提交POST給工商銀行,這就是總體的思路。因爲多年的經驗,所以一下子想到了webservice,但是很久沒做了,最後花了些時間又熟悉了熟悉。下面分別是PHPJAVA建立webservice與調用webservice數據的細節。

首先開啓soap擴展extension=php_soap.dll

然後重啓apache,如果是LINUX的話,需要重編譯PHP或用phpize也可以。

然後建立一個test.php的文件,代碼如下:

PHP:

 

 

  1. <?php 
  2. //蘋果巴士www.ipukbus.com [email protected]
  3. ini_set("soap.wsdl_cache_enabled""0"); // disabling WSDL cache 
  4. $wsdl="http://localhost:8080/test/myservicePort?wsdl"; //webservice地址 
  5. $soap=new SoapClient($wsdlarray('trace'=>true,'cache_wsdl'=>WSDL_CACHE_NONE, 'soap_version'   => SOAP_1_1)); 
  6. $method="SayHi"
  7. $params = array('arg0'=>json_encode(array("hello111","測試")));//傳入數據,並編碼爲json 
  8. try{ 
  9.     $result=$soap->$method($params); 
  10. }catch(Exception $e) { 
  11.     echo "Exception: " . $e->getMessage(); 
  12. //$result爲stdClass類型,因此不能使用 echo $result的方式輸出,會報錯的。 
  13. echo $result->return
  14.  
  15. ?> 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章