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 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路径,这里使用的是绝对路径,也可以使用相对路径
代码如下:
|
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的使用(平安银行支付功能专版)的更多相关文章
- 【Java EE 学习 21 下】【 使用易宝支付接口实现java网上支付功能】
一.网上支付分为两种情况,一种方法是使用直接和银行的支付接口,另外一种方法是使用第三方支付平台和银行对接完成支付. 1.直接和银行对接. 2.使用第三方支付平台 3.常见的第三方支付平台 二.使用易宝 ...
- 聊一聊Java如何接入招行一网通支付功能
1.前提条件 相比较于支付宝和微信的支付功能接入这一块,银行相对来说更加严格,比如说支付宝,在你签约之前可以进行一些测试.但是银行来说就不是这样了,如果您现在要进行招行的支付功能开发的话,请务必先让相 ...
- java实现网站paypal支付功能并且异步修改订单的状态
java实现网站paypal支付功能并且异步修改订单的状态:步骤如下 第一步:去paypal的官网https://www.paypal.com注册一个个人账号,在创建沙箱测试账号时需要用到 第二步:p ...
- SSH架构实现在线支付功能
在线支付是指卖方与卖方通过因特网上的电子商务网站进行交易时,银行为其提供网上资金结算服务的一种业务,她为企业和个人提供了一个安全.快捷.方便的电子商务应用环境和网上资金结算工具,在线支付不仅帮助企业实 ...
- java 支付宝 第三方即时到账支付 接口
alipay 的几个内核功能文件:=================================================================================== ...
- [5] 微信公众号开发 - 微信支付功能开发(网页JSAPI调用)
1.微信支付的流程 如下三张手机截图,我们在微信网页端看到的支付,表面上看到的是 "点击支付按钮 - 弹出支付框 - 支付成功后出现提示页面",实际上的核心处理过程是: 点击支付按 ...
- 微信公众号开发 [05] 微信支付功能开发(网页JSAPI调用)
1.微信支付的流程 如下三张手机截图,我们在微信网页端看到的支付,表面上看到的是 "点击支付按钮 - 弹出支付框 - 支付成功后出现提示页面",实际上的核心处理过程是: 点击支付按 ...
- SpringBoot2.0小程序支付功能实现weixin-java-pay
SpringBoot2.0小程序支付功能实现weixin-java-pay WxJava - 微信开发 Java SDK(开发工具包); 支持包括微信支付.开放平台.公众号.企业微信/企业号.小程序等 ...
- Java实现微信小程序支付(准备)
Java语言开发微信小程序支付功能: 1.通过https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1路径到官方下载Java的支付SD ...
随机推荐
- ok6410的LCD裸机范例
/****************************************** 实验步骤 1.配置引脚功能,将其GPI.GPJ引脚设置为VD数据输出模式,及GPJ后几位设置成LCD时钟输出: ...
- LaTeX中无法显示中文问题
- try-catch-finally中return语句的执行
catch里return后还会执行finally吗??在java里,是的.但是值得注意的是,在存在try-catch-finally的方法中,return可能出现的位置有4个,在try中,在catch ...
- android线程间通讯
近来找了一些关于android线程间通信的资料,整理学习了一下,并制作了一个简单的例子. andriod提供了 Handler 和 Looper 来满足线程间的通信.例如一个子线程从网络上下载了一副图 ...
- Windows Phone性能优化建议
使用background thread解码图片 在Windows Phone中支持的图片格式有jpg和png,微软建议使用jpg格式的图片,因为jpg格式的图片在解码速度上要比png快.那么我们怎么来 ...
- 转载:监控每个节点(jvm部分)
操作系统和进程部分 操作系统和进程部分的含义是很清楚的,这里不会描述的很详细.他们列出了基本的资源统计,例如CPU和负载.操作系统部分描述了整个操作系统的情况,进程部分只是描述了Elasticsear ...
- UIBezierPath 的使用介绍
使用UIBezierPath类可以创建基于矢量的路径.此类是Core Graphics框架关于path的一个封装.使用此类可以定义简单的形状,如椭圆或者矩形,或者有多个直线和曲线段组成的形状 ...
- .net 使用validator做数据校验
概述 在把用户输入的数据存储到数据库之前一般都要对数据做服务端校验,于是想到了.net自带的数据校验框架validator.本文对validator的使用方法进行介绍,并分析下校验的的原理. 使用va ...
- [DHCP服务]——一个验证DHCP原理实验(VMware)
大致实验拓扑图 DHCP Server端的配置 1. 安装DHCP # yum -y install dhcp 2. 拷贝配置文件 # /dhcpd.conf.sample /etc/dhcp/dhc ...
- objective-c自学总结(三)---面向对象的封装,继承与多态
面向对象的三大特性 封装 继承 多态 1.封装: 隐藏属性,方法或实现细节的过程称为封装 信息隐藏,隐藏对象的实现细节,不允许用户看到 将东西包装在一 然后以新的完整形式呈现出来 例如,两种或多种化学 ...