標籤:
去年做平安銀行的時候,用到了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、如果你成功了,有空可以看下這篇部落格:http://my.oschina.net/kenblog/blog/316234
2、如果這樣沒有成功,可以聯絡我,查看具體什麼原因。
PHP-Java-Bridge的使用(平安銀行支付功能專版)