Home  >  Article  >  Backend Development  >  PHP-Java-Bridge的使用(平安银行支付功能专版)

PHP-Java-Bridge的使用(平安银行支付功能专版)

WBOY
WBOYOriginal
2016-06-20 12:58:471362browse

去年做平安银行的时候,用到了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.jks"linux:"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

以下给出了一个实例代码,具体需要和你的项目需求进行修改

代码如下:

<?php//1、引用Java.inc  require_once($_SERVER["DOCUMENT_ROOT"]."/bridge/java/Java.inc");  //2、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;  }  //3、对数据进行组装,然后生成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);?>


6、按照以上五部操作,基本是没有问题的,如果有问题,请检查你的代码调用是否正确



关于正式上线:

如果项目要正式上线,需要替换payclient.properties文件中的khPaymentUrl=https://testebank.sdb.com.cn:461/corporbank/为平安银行的正式支付地址


备注:

1、如果你成功了,有空可以看下这篇博客:

2、如果这样没有成功,可以联系我,查看具体什么原因。





Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn