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


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

    下载以下文件,放到你的项目中

    文件下载:http://pan.baidu.com/s/1mg02WGC

    2、正确的放置jar包

    1)、将你的平安银行支付相关的jar包放到java的jar下面

    2)、将php-java-bridge文件放到java的jar下面

    以上所有jar文件已经打包:下载以下文件,放到安装的java的jar下面

    文件下载:http://pan.baidu.com/s/1pJ3KDAz

    路径如下:

    1
    2
    windows:C:Program FilesJavajre1.8.0_25libext
    linux:/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路径,这里使用的是绝对路径,也可以使用相对路径

    代码如下:

    1
    2
    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文件

    1
    2
    windows:直接双击jar包下面的JavaBridge.jar文件即可运行
    linux:使用命令"Java -jar JavaBridge.jar SERVLET_LOCAL:8080 &"

    5、在你的项目中使用PHP-Java-Bridge

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

    代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    <?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、如果你成功了,有空可以看下这篇博客:http://my.oschina.net/kenblog/blog/316234

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

  • 相关阅读:
    洛谷 P3366 【模板】最小生成树
    洛谷 P2820 局域网
    一本通【例4-10】最优布线问题
    洛谷 P1546 最短网络 Agri-Net
    图论模板
    洛谷 AT667 【天下一人力比較】
    刷题记录
    洛谷P1553 数字翻转(升级版)
    tornado硬件管理系统-网络与磁盘的实现(7)
    tornado硬件管理系统-内存与swap的实现(6)
  • 原文地址:https://www.cnblogs.com/archoncap/p/5034809.html
Copyright © 2020-2023  润新知