首頁 >php教程 >php手册 >支付寶介面公用函數

支付寶介面公用函數

WBOY
WBOY原創
2016-12-05 13:27:461407瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn