去年作平安银行的时候,用到了PHP-Java-Bridge,后来写了一篇博客记录使用PHP-Java-Bridge的一些心得(链接:http://my.oschina.net/kenblog/blog/316234)。php
后来有不少陆陆续续的朋友在作平安银行接口使用PHP-Java-Bridge,看了我那篇博客也有点蛋疼(多是那个时候才开始写博客,思路、条理和描述之类的不是很清楚)。java
最近使用PHP-Java-Bridge作平安银行开发的人还挺多,好些朋友都来问过,如今抽空专门写一篇关于平安银行支付使用PHP-Java-Bridge的教程,但愿给能帮到的人。linux
使用环境:shell
PHP版本:最高为5.4,当前测试为5.4/5.3
windows
JDK:官方最新版本,当前测试为1.8和linux自带openjdk
jvm
操做系统:Windows7 32位/64位 | Linux(Centos6.5,5.9)
测试
一、使用PHP-Java-Bridgeui
下载如下文件,放到你的项目中
编码
文件下载:http://pan.baidu.com/s/1mg02WGCurl
二、正确的放置jar包
1)、将你的平安银行支付相关的jar包放到java的jar下面
2)、将php-java-bridge文件放到java的jar下面
以上全部jar文件已经打包:下载如下文件,放到安装的java的jar下面
文件下载:http://pan.baidu.com/s/1pJ3KDAz
路径以下:
windows:C:\Program Files\Java\jre1.8.0_25\lib\ext linux:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/ext
注:这个路径会根据你系统安装的java版本和路径不一样而不一样,可是大概都差很少
三、修改平安银行的配置文件
到上面两个路径下面找到classes文件夹下面的payclient.properties文件
修改"cafile="为你的merchant.jks路径,这里使用的是绝对路径,也能够使用相对路径
代码以下:
windows:"cafile=C:/Program Files/Java/jre1.8.0_25/lib/ext/classes/merchant.jks" linux:"cafile=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/ext/classes/merchant.jks"
四、开启PHP-Java-Bridge
到上面两个路径下面执行JavaBridge.jar文件
windows:直接双击jar包下面的JavaBridge.jar文件便可运行 linux:使用命令"Java -jar JavaBridge.jar SERVLET_LOCAL:8080 &"
五、在你的项目中使用PHP-Java-Bridge
如下给出了一个实例代码,具体须要和你的项目需求进行修改
代码以下:
<?php //一、引用Java.inc require_once($_SERVER["DOCUMENT_ROOT"]."/bridge/java/Java.inc"); //二、Java方法实例化 try{ $util = new Java("com.sdb.payclient.core.PayclientInterfaceUtil"); $input = new Java("com.ecc.emp.data.KeyedCollection","input"); $signDataput = new Java("com.ecc.emp.data.KeyedCollection","signDataput"); $urlEncoder = new Java("java.net.URLEncoder"); }catch(JavaException $e){ echo "错误:实例化失败:<br/>",$e; } //三、对数据进行组装,而后生成orig和签名sign try{ //组装数据到$input $input->put("masterId",$payment_masterId); $input->put("orderId",$payment_orderId); $input->put("currency",$payment_currency); $input->put("amount",$payment_amount); $input->put("paydate",$payment_paydate); $input->put("remark",$payment_remark); $input->put("objectName",$payment_objectName); $input->put("validtime",$payment_validtime); //设定初始值 $orig=""; //原始数据 $sign=""; //产生签名 $encoding = "GBK"; //得到orig与sign $signDataput = $util->getSignData($input); $orig = $signDataput->getDataValue("orig"); $sign = $signDataput->getDataValue("sign"); //对签名进行编码 $orig = $util->Base64Encode($orig, $encoding); $sign = $util->Base64Encode($sign, $encoding); $orig = $urlEncoder->encode($orig, $encoding); $sign = $urlEncoder->encode($sign, $encoding); ?>
六、按照以上五部操做,基本是没有问题的,若是有问题,请检查你的代码调用是否正确
关于正式上线:
若是项目要正式上线,须要替换payclient.properties文件中的khPaymentUrl=https://testebank.sdb.com.cn:461/corporbank/为平安银行的正式支付地址
备注:
一、若是你成功了,有空能够看下这篇博客:http://my.oschina.net/kenblog/blog/316234
二、若是这样没有成功,能够联系我,查看具体什么缘由。