您的位置:首页 > 其它

银行支付接口Webservice之一

2012-12-15 16:00 246 查看
需求:PHP与JAVA做交互,PHP传递支付信息给JAVA签名后反馈给PHP,然后提交给工商银行。
大体思路如下图:





准备技术:webservice,json,php,java
最近在做一个工商银行支付接口的项目,虽然是小项目,但是做了很久了,总结原因,并非技术因素,而是沟通问题,因为方面给予的回复效率太低,每次都要等上几天的时间。
刚开始向对方索要签名扩展,因为我们使用的语言是PHP,所以一定要对应我们服务器上的PHP版本才能使用扩展,而经过几番协调之后,对方终于给了回复,但是对方给的so文件无法与我们的PHP版本对应,这就导致程序开发依然无法进展下去了。
几经反复协调,最后对方在半个月以后给了一套java的签名跳转程序让我们自己研究(汗!我不会java),没办法,为了兑现客户的承诺,我们只好硬着头皮上了。
研究了几个小时的java之后,开始看起了银行给的程序,基本上都能看懂,但是后来依然无法做跳转,后来银行提醒说,提交支付商品的时间要向银行索要,不是自己写的,因为银行的测试服务器时间和实际的不同的。此问题后来也解决了,但是后面想到PHP如何与JAVA交互呢,因为PHP要提交数据给JAVA,然后JAVA签名,最后把数据返回给PHP,PHP在提交POST给工商银行,这就是总体的思路。因为多年的经验,所以一下子想到了webservice,但是很久没做了,最后花了些时间又熟悉了熟悉。下面分别是PHP和JAVA建立webservice与调用webservice数据的细节。
首先开启soap扩展extension=php_soap.dll
然后重启apache,如果是LINUX的话,需要重编译PHP或用phpize也可以。
然后建立一个test.php的文件,代码如下:
PHP:

<?php
//苹果巴士www.ipukbus.com jeffxie@gmail.com
ini_set("soap.wsdl_cache_enabled", "0"); // disabling WSDL cache
$wsdl="http://localhost:8080/test/myservicePort?wsdl"; //webservice地址
$soap=new SoapClient($wsdl, array('trace'=>true,'cache_wsdl'=>WSDL_CACHE_NONE, 'soap_version'   => SOAP_1_1));
$method="SayHi";
$params = array('arg0'=>json_encode(array("hello111","测试")));//传入数据,并编码为json
try{
$result=$soap->$method($params);
}catch(Exception $e) {
echo "Exception: " . $e->getMessage();
}
//$result为stdClass类型,因此不能使用 echo $result的方式输出,会报错的。
echo $result->return;

?>


本文出自 “python中国python培训” 博客,请务必保留此出处http://jeffxie.blog.51cto.com/1365360/1090452
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: