wemall-mobile是基於WeMall的Android app商城,只需要在原商城目錄下上傳介面檔案即可完成服務端的配置,客戶端可自訂修改。本文分享wemall app商城源碼Android之 支付寶接口公用函數,該類是請求、通知返回兩個文件所調用的公用函數核心處理文件,供技術員參考學習。
以下程式碼只是為了方便商家測試而提供的範例程式碼,商家可以根據自己網站的需要,按照技術文件編寫,並非一定要使用該程式碼,該程式碼僅供學習和研究支付寶介面使用,只是提供一個參考。
把陣列所有元素,依照「參數=參數值」的模式用「&」字元拼接成字串
<?php <br />
<br>
function createLinkstring($para) {<br>
$arg = "";<br>
while (list ($key, $val) = each ($para)) {<br>
$arg.=$key."=".$val."&";<br>
}<br>
//去掉最後一個&字符<br>
$arg = substr($arg,0,count($arg)-2);<br>
<br>
//如果有轉義字符,那麼去掉轉義<br>
if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}<br>
<br>
return $arg;<br>
}<br>
/**<br>
* 把陣列所有元素,依照「參數=參數值」的模式用「&」字元拼接成字串,並對字串做urlencode編碼<br>
* @param $para 需要拼接的陣列<br>
* return 拼接完成以後的字串<br>
*/<br>
function createLinkstringUrlencode($para) {<br>
$arg = "";<br>
while (list ($key, $val) = each ($para)) {<br>
$arg.=$key."=".urlencode($val)."&";<br>
}<br>
//去掉最後一個&字符<br>
$arg = substr($arg,0,count($arg)-2);<br>
<br>
//如果有轉義字符,那麼去掉轉義<br>
if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}<br>
<br>
return $arg;<br>
}<br>
/**<br>
* 除去陣列中的空值和簽章參數<br>
* @param $para 簽章參數組<br>
* return 去掉空值與簽章參數後的新簽章參數組<br>
*/<br>
function paraFilter($para) {<br>
$para_filter = array();<br>
while (list ($key, $val) = each ($para)) {<br>
if($key == "sign" || $key == "sign_type" || $val == "")continue;<br>
else $para_filter[$key] = $para[$key];<br>
}<br>
return $para_filter;<br>
}<br>
/**<br>
* 對數組排序<br>
* @param $para 排序前的陣列<br>
* return 排序後的陣列<br>
*/<br>
function argSort($para) {<br>
ksort($para);<br>
reset($para);<br>
return $para;<br>
}<br>
/**<br>
* 寫日誌,方便測試(看網站需求,也可以改成把記錄存入資料庫)<br>
* 注意:伺服器需要開立fopen設定<br>
* @param $word 要寫入日誌裡的文字內容 預設值:空白值<br>
*/<br>
function logResult($word='') {<br>
$fp = fopen("log.txt","a");<br>
flock($fp, LOCK_EX) ;<br>
fwrite($fp,"執行日期:".strftime("%Y%m%d%H%M%S",time())."n".$word."n");<br>
flock($fp, LOCK_UN);<br>
fclose($fp);<br>
}<br>
<br>
/**<br>
* 遠端取得數據,POST模式<br>
* 注意:<br>
* 1.使用Crul需要修改伺服器中php.ini檔案的設置,找到php_curl.dll去掉前面的";"就行了<br>
* 2.資料夾中cacert.pem是SSL憑證請保證其路徑有效,目前預設路徑是:getcwd().'\cacert.pem'<br>
* @param $url 指定URL完整路徑位址<br>
* @param $cacert_url 指定目前工作目錄絕對路徑<br>
* @param $para 請求的資料<br>
* @param $input_charset 編碼格式。預設值:空值<br> * return 遠端輸出的資料<br>
*/<br>
function getHttpResponsePOST($url, $cacert_url, $para, $input_charset = '') {<br>
<br>
if (trim($input_charset) != '') {<br>
$url = $url."_input_charset=".$input_charset;<br>
}<br>
$curl = curl_init($url);<br>
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL憑證認證<br>
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//嚴格認證<br>
curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//憑證位址<br>
curl_setopt($curl, CURLOPT_HEADER, 0 ); // 過濾HTTP頭<br>
curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 顯示輸出結果<br>
curl_setopt($curl,CURLOPT_POST,true); // post傳送資料<br>
curl_setopt($curl,CURLOPT_POSTFIELDS,$para);// post傳送資料<br>
$responseText = curl_exec($curl);<br>
//var_dump( curl_error($curl) );//如果執行curl過程中出現異常,可開啟此開關,以便查看異常內容<br>
curl_close($curl);<br>
<br>
return $responseText;<br>
}<br>
<br>
/**<br>
* 遠端取得數據,GET模式<br>
* 注意:<br>
* 1.使用Crul需要修改伺服器中php.ini檔案的設置,找到php_curl.dll去掉前面的";"就行了<br>
* 2.資料夾中cacert.pem是SSL憑證請保證其路徑有效,目前預設路徑是:getcwd().'\cacert.pem'<br>
* @param $url 指定URL完整路徑位址<br>
* @param $cacert_url 指定目前工作目錄絕對路徑<br>
* return 遠端輸出的資料<br>
*/<br>
function getHttpResponseGET($url,$cacert_url) {<br>
$curl = curl_init($url);<br>
curl_setopt($curl, CURLOPT_HEADER, 0 ); // 過濾HTTP頭<br>
curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 顯示輸出結果<br>
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL憑證認證<br>
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//嚴格認證<br>
curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//憑證位址<br>
$responseText = curl_exec($curl);<br>
//var_dump( curl_error($curl) );//如果執行curl過程中出現異常,可開啟此開關,以便查看異常內容<br>
curl_close($curl);<br>
<br>
return $responseText;<br>
}<br>
<br>
/**<br>
* 實現多種字元編碼方式<br>
* @param $input 需要編碼的字串<br>
* @param $_output_charset 輸出的編碼格式<br>
* @param $_input_charset 輸入的編碼格式<br>
* return 編碼後的字串<br>
*/<br>
function charsetEncode($input,$_output_charset ,$_input_charset) {<br>
$output = "";<br>
if(!isset($_output_charset) )$_output_charset = $_input_charset;<br>
if($_input_charset == $_output_charset || $input ==null ) {<br>
$output = $input;<br>
} elseif (function_exists("mb_convert_encoding")) {<br>
$output = mb_convert_encoding($input,$_output_charset,$_input_charset);<br>
} elseif(function_exists("iconv")) {<br>
$output = iconv($_input_charset,$_output_charset,$input);<br>
} else die("sorry, you have no libs support for charset change.");<br>
return $output;<br>
}<br>
/**<br>
* 實現多種字元解碼方式<br>
* @param $input 需要解碼的字串<br>
* @param $_output_charset 輸出的解碼格式<br> * @param $_input_charset 輸入的解碼格式<br>
* return 解碼後的字串<br>
*/<br>
函數 charsetDecode($input,$_input_charset,$_output_charset) {<br>
$輸出=「」;<br>
if(!isset($_input_charset) )$_input_charset = $_input_charset ;<br>
if($_input_charset == $_output_charset || $input ==null ) {<br>
$輸出=$輸入;<br>
} elseif (function_exists(“mb_convert_encoding”)) {<br>
$output=mb_convert_encoding($input,$_output_charset,$_input_charset);<br>
} elseif(function_exists(“iconv”)) {<br>
$output = iconv($_input_charset,$_output_charset,$input);<br>
} else die(「抱歉,你沒有對字元集變更的庫支援。」);<br>
回$輸出;<br>
}<br>
?>
wemall官網網址:http://www.wemallshop.com