java軟件開發ea介紹_開發說明 — Eacloud 1.0 documentation

PHP 代碼示例( Linux 版)?

解壓后,參考 phplinux/v3.4.0.1/文檔/PHP版服務器端工具包(Linux版)軟件使用手冊.pdf

Demo 運行

1.安裝對應版本的 PHP

2.安裝運行時環境(glibc 庫等)

3.修改 PHP 的配置文件 php.ini

修改 php.ini,使 php 允許加載擴展,并將當前擴展添加到其擴展列表中

enable_dl = On

extension=libSADKExtension.so.3.4.0.1

4.在 DemoRSA 目錄下替換證書和 cer 文件

pfx 為私鑰文件請妥善保管不要泄露給他人

cer 文件為頒發者公鑰,用來驗證匯付公鑰

5.配置 cfcalog.conf cfca 日志文件

6.通過命令行終端運行 Demo 文件

php huifuCFCALinuxDemo.php

Msg PKCS7-attached Sign

為使用 pfx 證書加簽

PKCS7-attached-Verify

為驗證匯付的簽名

cfca_verifyCertificate

為驗證證書鏈合法性

cfca_getCertificateInfo

為獲取證書信息(非必要)

php

class HuifuCFCA

{

private $apiUrl = 'https://eacloud.testpnr.com/api/publicRequests'; //企賬通商戶交易接口,此處使用的是聯調環境地址

private $strSignAlg = 'RSA'; //RSA證書類型

private $strPfxPassword = '888888'; //導出時設置的密碼

private $strHashAlg = 'SHA-256'; //加簽算法

private $strPfxFilePath = './RSA/AS0381.pfx'; //匯付下發的證書,此處換成商戶自己的證書 .pfx 格式 加簽使用

private $strTrustedCACertFilePath = './RSA/CFCA_ACS_TEST_OCA31.cer|./RSA/CFCA_ACS_TEST_CA.cer'; //匯付下發的.cer證書 ,需要一對證書 解簽使用

private $strLogCofigFilePath = './cfcalog.conf'; //CFCA log 目錄

public function __construct()

{

$this->getCFCAInitialize(); //CFCA工具初始化

}

/**

* CFCA工具初始化

*/

private function getCFCAInitialize()

{

$nResult = cfca_initialize($this->strLogCofigFilePath);

if (0 != $nResult) {

//記錄log

echo new Exception("\n cfca_Initialize error:".$nResult."\n");

}

}

/**

* 調用接口 此處是企賬通的接口請求

*

* @return string

*/

public function apiRequest(){

//請求參數,依據商戶自己的參數為準

$requestParam['version'] = '10';

$requestParam['cmd_id'] = 'Q01'; //交易訂單查詢

$requestParam['mer_cust_id'] = '6666000000002619';

$requestParam['user_cust_id'] = '6666000000054387';

$requestParam['order_date'] = '20180918';

$requestParam['order_id'] = '201809189000001';

$requestParam['trans_type'] = '01';

$requestParam['mer_priv'] = '';

//加簽

$strSignSourceData = json_encode($requestParam);

$cfcaSign = $this->CFCASignature($strSignSourceData);

//接口請求參數

$param = [

'requestData' => [

'cmd_id' => $requestParam['cmd_id'],

'mer_cust_id' => $requestParam['mer_cust_id'],

'version' => $requestParam['version'],

'check_value' => $cfcaSign,

],

'headers' => ['Content-type' => 'application/x-www-form-urlencoded;charset=UTF-8']

];

$requestData = $this->requestData($param);

$checkValue = json_decode($requestData['body'],1)['check_value'];

//驗證接口返回的簽名數據

$sourceData = $this->getCFCASignSourceData($checkValue);

$SignCertContent = !empty($sourceData['strMsgP7AttachedSignCertContent']) ? $sourceData['strMsgP7AttachedSignCertContent'] : '';

//驗證返回數據的CFCA證書有效性

$verifyCertificat = $this->verifyCertificat($SignCertContent);

$signSourceData = '';

if(!empty($sourceData['strMsgP7AttachedSource']) && $verifyCertificat){ //校驗證書有效性

$signSourceData = $sourceData['strMsgP7AttachedSource'];

}

return $signSourceData;

}

/**

* CFCA 加簽方法

*

* @param $strSignSourceData base64 encode 加簽原串

* @return string base64 encode 加簽串

*/

private function CFCASignature($strSignSourceData){

$strMsgPKCS7AttachedSignature = '';//加簽生成串 ,輸出變量,無需傳值

try{

//調用加簽方法

$nResult = cfca_signData_PKCS7Attached($this->strSignAlg, $strSignSourceData,

$this->strPfxFilePath, $this->strPfxPassword, $this->strHashAlg,$strMsgPKCS7AttachedSignature);

//加簽方法異常判斷及記錄

if (0 != $nResult) {

//記錄log

echo new Exception("\n cfca_signData_PKCS7Attached error:".$nResult."\n");

}

}catch (Exception $e){

throw new Exception("\n cfca_verifyCertificate error:".$e."\n");

}

return base64_encode($strMsgPKCS7AttachedSignature);

}

/**

* CFCA 驗證簽名數據

*

* @param $signature

* @return array

*/

private function getCFCASignSourceData($signature){

$strMsgP7AttachedSignCertContent = ''; //PKCS#7 中的簽名證書 輸出變量,無需傳值

$strMsgP7AttachedSource = ''; //簽名原文字符串 輸出變量,無需傳值

try{

//調用驗證簽名數據方法

$nResult = cfca_verifyDataSignature_PKCS7Attached($this->strSignAlg, base64_decode($signature),

$strMsgP7AttachedSignCertContent,$strMsgP7AttachedSource);

//驗證簽名方法異常判斷及記錄

if (0 != $nResult) {

//記錄log

echo new Exception("cfca_verifyDataSignature error:".$nResult);

}

}catch (Exception $e){

//記錄log

throw new Exception("cfca_verifyDataSignature_PKCS7Attached error:".$e);

}

return array(

'strMsgP7AttachedSource' => $strMsgP7AttachedSource,

'strMsgP7AttachedSignCertContent' => $strMsgP7AttachedSignCertContent,

);

}

/**

* CFCA 證書有效性驗證

*

* @param $strMsgP7AttachedSignCertContent PKCS#7 中的簽名證書 base64

* @return int

*/

private function verifyCertificat($strMsgP7AttachedSignCertContent = ''){

$nCertVerifyFlag = '4'; //驗證證書鏈完整性

$strTrustedCACertFilePath = $this->strTrustedCACertFilePath;

$isVerify = false;

try{

//調用驗證方法

$nResult = cfca_verifyCertificate($strMsgP7AttachedSignCertContent, $nCertVerifyFlag, $strTrustedCACertFilePath,"");

if (0 == $nResult) { // 0 為驗證通過 ,其他驗證失敗

$isVerify = true;

}else{

//記錄log

echo new Exception("cfca_verifyCertificate error:".$nResult);

}

}catch (Exception $e){

//記錄log

throw new Exception("cfca_verifyCertificate error:".$e);

}

return $isVerify;

}

/**

* 請求接口返回數據

* @param $param

* @return array

*/

private function requestData($param)

{

try{

// 請求接口所以參數初始化

$data = [

'url' => $this->apiUrl, // 接口 url

'requestData' => $param['requestData'], // 請求接口參數

'headers' =>$param['headers']

];

$res = $this->httpPostRequest($data['url'],$data['headers'],$data['requestData']);

} catch (\Exception $e) {

//記錄log

throw new Exception("api requestData error :".$e);

}

return [

'status' => $res['info']['http_code'],

'body' => $res['body']

];

}

/**

* curl post 請求方法

*

* @param string $url

* @param array $header

* @param array $requestData

* @return array

*/

private function httpPostRequest($url = '',$header = array(),$requestData = array()){

$curl = curl_init();

curl_setopt ( $curl, CURLOPT_HTTPHEADER,$header);

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl, CURLOPT_POST, true);

curl_setopt($curl, CURLOPT_POSTFIELDS,http_build_query($requestData));

$res = curl_exec($curl);

$info = curl_getinfo($curl);

$error = curl_error($curl);

curl_close($curl);

return [

'body' => $res,

'info' => $info,

'error' => $error,

];

}

/**

*CFCA工具結束

*/

public function __destruct()

{

cfca_uninitialize();

}

}

//調用

$demoObj = new HuifuCFCA();

$data = $demoObj->apiRequest();

print_r('

');

print_r($data);

?>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/530299.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/530299.shtml
英文地址,請注明出處:http://en.pswp.cn/news/530299.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java中operationBox_Java使用PDFBox開發包實現對PDF文檔內容編輯與保存

pdfbox開發包下載地址:http://pdfbox.apache.org/程序實現了PDF文檔的創建,讀入,與修改PDF內容并保存。可能有個前提,PDF文檔不是加密的,如果加密怎么辦,我沒研究過!源代碼如下:pack…

java訪問權限最高_java 訪問權限

Java語言中的訪問權限修飾符有4種,但是僅有3個關鍵字,因為不寫訪問權限,在Java中被稱為默認權限,或同包權限,本文中以(default)代替。下面按照權限從小到大的順序對4中訪問權限分別介紹。class我個人,我有很…

java中 queryparam_java – 何時使用@QueryParam和@PathParam

我不是問這里已經問過的問題:What is the difference between PathParam and QueryParam這是一個“最佳實踐”或常規問題。什么時候使用PathParam和QueryParam。我可以想到的是,決定可能使用兩者來區分信息模式。讓我在下面說明我的LTPO – 不完美的觀察…

java中fork函數_java中的forkjoin框架的使用

fork join框架是java 7中引入框架,這個框架的引入主要是為了提升并行計算的能力。fork join主要有兩個步驟,第一就是fork,將一個大任務分成很多個小任務,第二就是join,將第一個任務的結果join起來,生成最后…

Java h264起始碼_h.264 – 使用H264視頻的起始碼

有兩種H.264流格式,有時也稱為>附件B(在原始H.264流中找到)> AVCC(在像MP4這樣的容器中找到)H.264流由NAL(包裝單位)組成(1)附件B:在每個NAL單元的字節[x00] [x00] [x00] [x01]之前有4字節的起始碼.[start code]--[NAL]--[start code]--[NAL] etc(2)AVCC&…

java中已定義類型car_Java 8 習慣用語(8):Java 知道您的類型

Java?8是第一個支持類型推斷的 Java 版本,而且它僅對 lambda 表達式支持此功能。在 lambda表達式中使用類型推斷具有強大的作用,它將幫助您做好準備以應對未來的 Java版本,在今后的版本中還會將類型推斷用于變量等更多可能。這里的訣竅在于恰…

ATM柜員機JAVA課程設計_ATM柜員機學年論文設計(Java課程設計)

內容簡介:ATM柜員機學年論文設計(Java課程設計),共23頁,4599字,附源程序。一. 程序介紹3二. 開發環境搭建31. MyEclipse 5.5.1 GA安裝32. MyEclipse Designer 圖形設計插件安裝33. MySQL數據庫安裝4三&…

mysql 結果集什么意思_結果集中的mysql“和”邏輯

假設我有一個類似以下的數據集:table fooid | employeeType | employeeID-------------------------1 | Developer | 12 | Developer | 23 | Developer | 34 | Manager | 15 | Manager | 46 | Manager | 57 | CEO | 18 | CEO | 6我想運行一個查詢,該查詢將返回所有e…

opencv java 去干擾_java - OpenCV Java修補圖像格式要求 - 堆棧內存溢出

一直試圖讓修復工作在Android上進行,int height (int) viewMat.size().height;int width (int) viewMat.size().width;Mat maskMat new Mat();maskMat.create(viewMat.size(), CvType.CV_8U);maskMat.setTo(bColor);Point r1 new Point(width/2-width/10, heigh…

java中 set集合_第8篇 Java中的集合(Set)

Java 集合的 Set 接口Set類型與List類型的區別Set: 無序、不可重復List: 有序、可重復1、HashSetHashSet的存儲結構:HashMap特點:HashSet通過比較存放的哈希碼(hashCode)來確定對象存放的位置當兩個對象的哈希值相等時&#xff0c…

android mysql實現登錄注冊_android簡單登陸和注冊功能實現+SQLite數據庫學習

android簡單登陸和注冊功能實現SQLite數據庫學習發布時間&#xff1a;2018-07-04 17:23,瀏覽次數&#xff1a;1027, 標簽&#xff1a;androidSQLite這里我只是建立了一個用簡單的存儲用戶名和密碼的表單MyDBHelper.java<>public class MyDBHelper extends SQLiteOpenHelp…

java web 來源頁_Java:Java Web--分頁效果

先來看一看分頁的實現原理萬能公式.jpg項目目錄.PNG首先,新建Java Web項目一. 梳理業務邏輯重定向到URL(跳轉到StudentViewAction頁面)//index.jsp頁面1.從頁面接收可變的值2.接收值有問題時,初始化為13.如果沒有問題,把String類型接收值強轉成Integer4.實例DAO方法,調用findSt…

java 瀏覽器 安全_安全策略-IE瀏覽器防黑十大秘籍

1.管理好Cookie在IE6.0中&#xff0c;打開“工具”→“Internet選項”→“隱私”對話框&#xff0c;這里設定了“阻止所有Cookie”、“高”、“中高”、“中”、“低”、“接受所有Cookie”六個級別&#xff0c;你只要拖動滑塊就可以方便地進行設定&#xff0c;而點擊下方的“編…

什么是java中的枚舉法_enum枚舉javajava,enum枚舉使用詳解+,總結

enum 的全稱為 enumeration&#xff0c; 是 JDK 1.5 中引入的新特性&#xff0c;存放在 java.lang 包中。下面是我在使用 enum 過程中的一些經驗和總結。原始的接口定義常量語法(定義)創建枚舉類型要使用 enum 關鍵字&#xff0c;隱含了所創建的類型都是 java.lang.Enum 類的子…

java 審計 漏洞函數_Java Web代碼審計流程與漏洞函數

常見框架與組合常見框架Struts2SpringMVCSpring Boot框架執行流程View層&#xff1a;視圖層Controller層&#xff1a;表現層Service層&#xff1a;業務層Dom層&#xff1a;持久層常見組合SpringStruts2HibernateSpringSpringMVCMybatisSpring BootMybatis代碼審計方法根據業務功…

java前期_【JAVA】前期環境配置

一、java的環境配置及在eclipse中如何安裝JRE或JDK環境eclipse下載地址&#xff1a;JDK下載地址&#xff1a;1)安裝JDK或JRE注&#xff1a;JDK使用與開發者運用&#xff0c;其中包含了開發環境和運行環境。而JRE只包含了java的運行環境。2)配置設置執行路徑UNiX&#xff1a;在C…

php截取指定字符串之后,php截取字符串(截取指定字符串之間的字符串)

一、PHP截取兩個指定字符后邊的字符$a "123abc#456";$b (strpos($a,""));$c (strpos($a,"#"));echo substr($a,$b1,$c-1);二、常用截取字符串技巧。//構造字符串$str "ABCDEFGHIJKLMNOPQRSTUVWXYZ";echo "原字符串&#xff1a;…

php 日志按天截取,Laravel 日志管理:按日期切割日志

日志存儲Laravel 默認的錯誤文件記錄在一個文件里&#xff0c;隨著時間的推移&#xff0c;此文件將會變得巨大&#xff0c;不方便查閱。我們可以通過修改 config/app.php 配置文件中的 log 選項來配置 Laravel 使用的存儲機制。如果你希望每天產生日志都存放在不同的文件中&…

php xcache 方法,php xcache 解密

NO.2 /index.php?actionmd5webcrack 很強大,需要登陸論壇才能解密,點擊右上角的“register”進行注冊,都是一些簡單的單詞,應該能看懂吧?...() A.PHP B.JSP D.Ajax 4.配置 ...假設$aarray(‘x’,’y’);,則$aarray_pad...xcache 15 四個模塊 Admin Common Member Article 用戶…

ecshop category.php?id=4,categoryall.php

//by 瑯琊源碼 QQ:27392236define(IN_ECS, true);require dirname(__FILE__) . /includes/init.php;if ((DEBUG_MODE & 2) ! 2) {$smarty->caching true;}require ROOT_PATH . /includes/lib_area.php;$area_info get_area_info($province_id);$area_id $area_info[r…