去年做平安银行的时候,用到了php-java-bridge,后来写了一篇博客记录使用php-java-bridge的一些心得(连接:http://my.oschina.net/kenblog/blog/316234)。
后来有很多陆陆续续的朋友在做平安银行接口使用php-java-bridge,看了我那篇博客也有点蛋疼(可能是那个时候才开始写博客,思路、条理和描述之类的不是很清楚)。
最近使用php-java-bridge做平安银行开发的人还挺多,好些朋友都来问过,现在抽空专门写一篇关于平安银行支付使用php-java-bridge的教程,希望给能帮到的人。
使用环境:
php版本:最高为5.4,当前测试为5.4/5.3
jdk:官方最新版本,当前测试为1.8和linux自带openjdk
操作系统:windows7 32位/64位 | linux(centos6.5,5.9)
1、使用php-java-bridge
下载以下文件,放到你的项目中
文件下载:https://kanbox.com/f/ha0a4
2、正确的放置jar包
1)、将你的平安银行支付相关的jar包放到java的jar下面
2)、将php-java-bridge文件放到java的jar下面
下载以下文件,放到安装的java的jar下面
文件下载:https://kanbox.com/f/rs0a5
路径如下:
windows:c:\program files\java\jre1.8.0_25\lib\extlinux:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/ext
注:这个路径会根据你系统安装的java版本和路径不同而不同,但是大概都差不多
3、修改平安银行的配置文件
到上面两个路径下面找到classes文件夹下面的payclient.properties文件
修改cafile=为你的merchant.jks路径,这里使用的是绝对路径,也可以使用相对路径
代码如下:
windows:cafile=c:/program files/java/jre1.8.0_25/lib/ext/classes/merchant.jkslinux:cafile=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.65.x86_64/jre/lib/ext/classes/merchant.jks
4、开启php-java-bridge
到上面两个路径下面执行javabridge.jar文件
windows:直接双击jar包下面的javabridge.jar文件即可运行linux:使用命令java -jar javabridge.jar servlet_local:8080 &
5、在你的项目中使用php-java-bridge
以下给出了一个实例代码,具体需要和你的项目需求进行修改
代码如下:
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);?>
6、按照以上五部操作,基本是没有问题的,如果有问题,请检查你的代码调用是否正确
关于正式上线:
如果项目要正式上线,需要替换payclient.properties文件中的khpaymenturl=https://testebank.sdb.com.cn:461/corporbank/为平安银行的正式支付地址
备注:
1、如果你成功了,有空可以看下这篇博客:
2、如果这样没有成功,可以联系我,查看具体什么原因。