去年做平安银行的时候,用到了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 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版本和路径不同而不同,但是大概都差不多

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、如果这样没有成功,可以联系我,查看具体什么原因。

PHP-Java-Bridge的使用(平安银行支付功能专版)的更多相关文章

  1. 【Java EE 学习 21 下】【 使用易宝支付接口实现java网上支付功能】

    一.网上支付分为两种情况,一种方法是使用直接和银行的支付接口,另外一种方法是使用第三方支付平台和银行对接完成支付. 1.直接和银行对接. 2.使用第三方支付平台 3.常见的第三方支付平台 二.使用易宝 ...

  2. 聊一聊Java如何接入招行一网通支付功能

    1.前提条件 相比较于支付宝和微信的支付功能接入这一块,银行相对来说更加严格,比如说支付宝,在你签约之前可以进行一些测试.但是银行来说就不是这样了,如果您现在要进行招行的支付功能开发的话,请务必先让相 ...

  3. java实现网站paypal支付功能并且异步修改订单的状态

    java实现网站paypal支付功能并且异步修改订单的状态:步骤如下 第一步:去paypal的官网https://www.paypal.com注册一个个人账号,在创建沙箱测试账号时需要用到 第二步:p ...

  4. SSH架构实现在线支付功能

    在线支付是指卖方与卖方通过因特网上的电子商务网站进行交易时,银行为其提供网上资金结算服务的一种业务,她为企业和个人提供了一个安全.快捷.方便的电子商务应用环境和网上资金结算工具,在线支付不仅帮助企业实 ...

  5. java 支付宝 第三方即时到账支付 接口

    alipay 的几个内核功能文件:=================================================================================== ...

  6. [5] 微信公众号开发 - 微信支付功能开发(网页JSAPI调用)

    1.微信支付的流程 如下三张手机截图,我们在微信网页端看到的支付,表面上看到的是 "点击支付按钮 - 弹出支付框 - 支付成功后出现提示页面",实际上的核心处理过程是: 点击支付按 ...

  7. 微信公众号开发 [05] 微信支付功能开发(网页JSAPI调用)

    1.微信支付的流程 如下三张手机截图,我们在微信网页端看到的支付,表面上看到的是 "点击支付按钮 - 弹出支付框 - 支付成功后出现提示页面",实际上的核心处理过程是: 点击支付按 ...

  8. SpringBoot2.0小程序支付功能实现weixin-java-pay

    SpringBoot2.0小程序支付功能实现weixin-java-pay WxJava - 微信开发 Java SDK(开发工具包); 支持包括微信支付.开放平台.公众号.企业微信/企业号.小程序等 ...

  9. Java实现微信小程序支付(准备)

    Java语言开发微信小程序支付功能: 1.通过https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1路径到官方下载Java的支付SD ...

随机推荐

  1. EXCLE中快速插入图片

    在excle中怎么快速插入图片呢,一张一张点实在比较麻烦 解决办法: <table><img src="D:\A.png" width="60" ...

  2. ios中怎么样调节占位文字与字体大小在同一高度

    在设置好字体以后,在占位文字中设置leading这个字体属性,用leading来乘以一个比例(CGFloat)来调节位置.

  3. 从此不再惧怕URI编码:JavaScript及C# URI编码详解

    混乱的URI编码 JavaScript中编码有三种方法:escape.encodeURI.encodeURIComponent C#中编码主要方法:HttpUtility.UrlEncode.Serv ...

  4. Go channel同步

    我们可以使用Channel来同步不同goroutines的执行.看下面的代码: package main import "fmt" import "time" ...

  5. Go语言工程结构

    Go是一门推崇软件工程理念的编程语言. Go的代码必须放在GOPATH目录下,它应该包含三个子目录: src:用于以代码包的形式组织并保存Go源码文件.应该分为三类:库源码文件.命令源码文件.测试源码 ...

  6. Extjs-工具条和菜单 Ext.menu和Ext.Toolbar

    转载自:http://blog.csdn.net/itlwc/article/details/7878002 1.创建一个简单工具条效果图 <script type="text/jav ...

  7. SQL Server数据库学习笔记-设计表时应该考虑的因素

    设计数据库其实就是设计数据库中的表.到底要注意些什么才能够设计好一个数据库呢?一个宗旨,8个建议. 一个宗旨“尽量少的表,每个表中尽量少的列,合理的表结构”. 8个建议: 第一个,首先要考虑的是咱们这 ...

  8. [原]项目进阶 之 集群环境搭建(二)MySQL集群

    上次的博文中我们介绍了一下集群的相关概念,今天的博文我们介绍一下MySQL集群的相关内容. 1.MySQL集群简介 MySQL群集技术在分布式系统中为MySQL数据提供了冗余特性,增强了安全性,使得单 ...

  9. 深入浅出Spring(五) SpringMVC

    上一篇深入浅出Spring(四) Spring实例分析的博文中,咱们已经可以了解Spring框架的运行原理和实现过程,接下来咱们继续讲解Spring的一个延伸产品——Spring MVC 1.Spri ...

  10. JS全局屏蔽回车事件

    window.onload = function (){ document.body.onkeydown=function(event){ if(event.keyCode==13){ event.k ...