>  기사  >  백엔드 개발  >  PHP-Java-Bridge的使用(平安银行支付功能专版)

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

WBOY
WBOY원래의
2016-06-20 12:58:471362검색

去年做平安银行的时候,用到了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、如果这样没有成功,可以联系我,查看具体什么原因。





성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.