日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java chinapay_通过PHP/Java Bridge来实现ecshop的chinapay支付接口

發(fā)布時間:2024/9/19 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java chinapay_通过PHP/Java Bridge来实现ecshop的chinapay支付接口 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

背景:

最近弄ecshop網(wǎng)上商城這個系統(tǒng),需要提供對中國銀聯(lián)支付支持,從網(wǎng)上查了一些資料,發(fā)現(xiàn)chinapay對php支持并不是十分友好。需要擴展編譯啥的,似乎很麻煩。網(wǎng)上資料不是很多,php實現(xiàn)chinapay接口,網(wǎng)上流傳三種解決方案,1.參照chianpay官方文檔,來對php進行擴展編譯,似乎很麻煩而且可移值性差。2.php的自帶java橋,網(wǎng)上說不是很穩(wěn)定3.linys提供的解決方案,但沒有找到源代碼。

chinapy提供的java版jar包,在windows下和linux下應(yīng)該都沒有問題。我在網(wǎng)上發(fā)現(xiàn)php調(diào)用java,還可以通過PHP/Java Bridge來實現(xiàn)這個功能。于是采用PHP/Java Bridge來調(diào)用java實現(xiàn)chinapay支付接口。

材料說明:

1.PHP/Java Bridge安裝文件

從其官方網(wǎng)站下載http://php-java-bridge.sourceforge.net/pjb/download.php

我下載的是Binary版本的。具體的為JavaBridgeTemplate554experimental.war.zip

2. chinapay提供的java版NetPayClinet2.5 for java包

3. Jdk6,tomcat6安裝文件

下載地址分別為:http://download.java.net/jdk6/和http://archive.apache.org/dist/tomcat/tomcat-6/

步 驟:

1.安裝jdk和部署tomcat

這一步不多述,如果不是熟悉可以問問您身邊的java朋友或上網(wǎng)google,資料很多。

2.安裝PHP/Java Bridge

將下載安裝文件JavaBridgeTemplate554experimental.war.zip解壓,并將文件夾重命名為JavaBridge,方便記憶。

再將NetPayClinet2.5 for java包中的netpayclient.jar包搞到JavaBridge/WEB-INF/lib文件下。

然后將JavaBridge這個文件夾整個拷到tomcat根目錄下webapps文件下。

然后進入tomcat根目錄下bin文件夾,啟動tomcat。

在瀏覽器中輸入http://localhost:8080/JavaBridge 顯示頁面。注 我用的時候在windows下有些異常,但不影響php調(diào)用應(yīng)該沒有什么問題,在linux下則是正常。

3.配置php.ini

找到php.ini這個文件,將里面的allow_url_include參數(shù)改為on,如果沒有找到這個參數(shù),自己添加一下就行了。具體如下:

; Whether to allow include/require to open URLs (like http:// or ftp://) as files.

allow_url_include = on

1

2

3

;Whethertoallowinclude/requiretoopenURLs(likehttp:// or ftp://) as files.

allow_url_include=on

寫一個簡單測試php調(diào)用java文件test.php

其代碼如下:

<?php

require_once("http://localhost:8080/JavaBridge/java/Java.inc");

$System = java("java.lang.System");

echo $System->getProperties();

?>

1

2

3

4

5

<?php

require_once("http://localhost:8080/JavaBridge/java/Java.inc");

$System=java("java.lang.System");

echo$System->getProperties();

?>

將其放在htdocs下面,在瀏覽器中輸入http://localhost/test.php 如果出現(xiàn)一些環(huán)境信息,則說明環(huán)境配對了.

4.php調(diào)用chianpay的jar包實現(xiàn)signOrder和verifyTransResponse兩個函數(shù)。

其signOrder函數(shù)核心代碼如下:

/*

*php通過JavaBridge遠程調(diào)用java的chinapay組件獲取簽名。

*/

function signOrder($MerId,$OrdId,$TransAmt,$CuryId,$TransDate,$GateId,$merkey_file,$java_inc_file){

//加載javainc文件,初始化java環(huán)境

require_once(“http://localhost:8080/JavaBridge/java/Java.inc”);

//導(dǎo)入私鑰文件

$objectKey = new java("chinapay.PrivateKey");

$buildKeyResult = $objectKey->buildKey($MerId,0,$merkey_file);

//生成簽名值

if($buildKeyResult==true){

$chinapayLink = new java("chinapay.SecureLink",$objectKey);

$checkValue = $chinapayLink->signOrder($MerId,$OrdId,$TransAmt,$CuryId,$TransDate,$GateId);

}else{

return false;

}

return $checkValue;

}

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

/*

*php通過JavaBridge遠程調(diào)用java的chinapay組件獲取簽名。

*/

functionsignOrder($MerId,$OrdId,$TransAmt,$CuryId,$TransDate,$GateId,$merkey_file,$java_inc_file){

//加載javainc文件,初始化java環(huán)境

require_once(“http://localhost:8080/JavaBridge/java/Java.inc”);

//導(dǎo)入私鑰文件

$objectKey=newjava("chinapay.PrivateKey");

$buildKeyResult=$objectKey->buildKey($MerId,0,$merkey_file);

//生成簽名值

if($buildKeyResult==true){

$chinapayLink=newjava("chinapay.SecureLink",$objectKey);

$checkValue=$chinapayLink->signOrder($MerId,$OrdId,$TransAmt,$CuryId,$TransDate,$GateId);

}else{

returnfalse;

}

return$checkValue;

}

其verifyTransResponse函數(shù)核心代碼如下:

/*

*php通過JavaBridge遠程調(diào)用java的chinapay組件驗證簽名。

*/

function verifyTransResponse($merId, $ordId,$transAmt,$curyId,$transDate,$transType, $orderStatus, $chkValue){

$payment = get_payment(basename(__FILE__, '.php'));

//加載javainc文件,初始化java環(huán)境

require_once(“http://localhost:8080/JavaBridge/java/Java.inc”);

$pubkey = $payment['chinapay_pubkey_file'];

//導(dǎo)入公鑰文件 重新計算密鑰的值

$objectKey = new java("chinapay.PrivateKey");

$buildKeyResult = $objectKey->buildKey("999999999999999",0,$pubkey);

//驗證簽名

if($buildKeyResult==true){

$chinapayLink = new java("chinapay.SecureLink",$objectKey);

$verifyTransResponseResult = $chinapayLink->verifyTransResponse($merId, $ordId,$transAmt,$curyId,$transDate,$transType, $orderStatus, $chkValue);

return $verifyTransResponseResult;

}else{

return false;

}

}

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

/*

*php通過JavaBridge遠程調(diào)用java的chinapay組件驗證簽名。

*/

functionverifyTransResponse($merId,$ordId,$transAmt,$curyId,$transDate,$transType,$orderStatus,$chkValue){

$payment=get_payment(basename(__FILE__,'.php'));

//加載javainc文件,初始化java環(huán)境

require_once(“http://localhost:8080/JavaBridge/java/Java.inc”);

$pubkey=$payment['chinapay_pubkey_file'];

//導(dǎo)入公鑰文件 重新計算密鑰的值

$objectKey=newjava("chinapay.PrivateKey");

$buildKeyResult=$objectKey->buildKey("999999999999999",0,$pubkey);

//驗證簽名

if($buildKeyResult==true){

$chinapayLink=newjava("chinapay.SecureLink",$objectKey);

$verifyTransResponseResult=$chinapayLink->verifyTransResponse($merId,$ordId,$transAmt,$curyId,$transDate,$transType,$orderStatus,$chkValue);

return$verifyTransResponseResult;

}else{

returnfalse;

}

}

5.php的調(diào)用java版ecshop chinapay插件源代碼

chinapay主要參數(shù)配置及完整實現(xiàn)代碼?? 見附件

總結(jié)

以上是生活随笔為你收集整理的java chinapay_通过PHP/Java Bridge来实现ecshop的chinapay支付接口的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。