wemall app商城源碼Android之支付寶接口公用函數

wemall-mobile是基於WeMall的Android app商城,只須要在原商城目錄下上傳接口文件便可完成服務端的配置,客戶端可定製修改。本文分享wemall app商城源碼Android之 支付寶接口公用函數,該類是請求、通知返回兩個文件所調用的公用函數核心處理文件,供技術員參考學習。php

如下代碼只是爲了方便商戶測試而提供的樣例代碼,商戶能夠根據本身網站的須要,按照技術文檔編寫,並不是必定要使用該代碼,該代碼僅供學習和研究支付寶接口使用,只是提供一個參考。
把數組全部元素,按照「參數=參數值」的模式用「&」字符拼接成字符串數據庫

<?php

function createLinkstring($para) {
    $arg  = "";
    while (list ($key, $val) = each ($para)) {
        $arg.=$key."=".$val."&";
    }
    //去掉最後一個&字符
    $arg = substr($arg,0,count($arg)-2);
    
    //若是存在轉義字符,那麼去掉轉義
    if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
    
    return $arg;
}
/**
 * 把數組全部元素,按照「參數=參數值」的模式用「&」字符拼接成字符串,並對字符串作urlencode編碼
 * @param $para 須要拼接的數組
 * return 拼接完成之後的字符串
 */
function createLinkstringUrlencode($para) {
    $arg  = "";
    while (list ($key, $val) = each ($para)) {
        $arg.=$key."=".urlencode($val)."&";
    }
    //去掉最後一個&字符
    $arg = substr($arg,0,count($arg)-2);
    
    //若是存在轉義字符,那麼去掉轉義
    if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}
    
    return $arg;
}
/**
 * 除去數組中的空值和簽名參數
 * @param $para 簽名參數組
 * return 去掉空值與簽名參數後的新簽名參數組
 */
function paraFilter($para) {
    $para_filter = array();
    while (list ($key, $val) = each ($para)) {
        if($key == "sign" || $key == "sign_type" || $val == "")continue;
        else    $para_filter[$key] = $para[$key];
    }
    return $para_filter;
}
/**
 * 對數組排序
 * @param $para 排序前的數組
 * return 排序後的數組
 */
function argSort($para) {
    ksort($para);
    reset($para);
    return $para;
}
/**
 * 寫日誌,方便測試(看網站需求,也能夠改爲把記錄存入數據庫)
 * 注意:服務器須要開通fopen配置
 * @param $word 要寫入日誌裏的文本內容 默認值:空值
 */
function logResult($word='') {
    $fp = fopen("log.txt","a");
    flock($fp, LOCK_EX) ;
    fwrite($fp,"執行日期:".strftime("%Y%m%d%H%M%S",time())."\n".$word."\n");
    flock($fp, LOCK_UN);
    fclose($fp);
}

/**
 * 遠程獲取數據,POST模式
 * 注意:
 * 1.使用Crul須要修改服務器中php.ini文件的設置,找到php_curl.dll去掉前面的";"就好了
 * 2.文件夾中cacert.pem是SSL證書請保證其路徑有效,目前默認路徑是:getcwd().'\\cacert.pem'
 * @param $url 指定URL完整路徑地址
 * @param $cacert_url 指定當前工做目錄絕對路徑
 * @param $para 請求的數據
 * @param $input_charset 編碼格式。默認值:空值
 * return 遠程輸出的數據
 */
function getHttpResponsePOST($url, $cacert_url, $para, $input_charset = '') {

    if (trim($input_charset) != '') {
        $url = $url."_input_charset=".$input_charset;
    }
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL證書認證
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//嚴格認證
    curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//證書地址
    curl_setopt($curl, CURLOPT_HEADER, 0 ); // 過濾HTTP頭
    curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 顯示輸出結果
    curl_setopt($curl,CURLOPT_POST,true); // post傳輸數據
    curl_setopt($curl,CURLOPT_POSTFIELDS,$para);// post傳輸數據
    $responseText = curl_exec($curl);
    //var_dump( curl_error($curl) );//若是執行curl過程當中出現異常,可打開此開關,以便查看異常內容
    curl_close($curl);
    
    return $responseText;
}

/**
 * 遠程獲取數據,GET模式
 * 注意:
 * 1.使用Crul須要修改服務器中php.ini文件的設置,找到php_curl.dll去掉前面的";"就好了
 * 2.文件夾中cacert.pem是SSL證書請保證其路徑有效,目前默認路徑是:getcwd().'\\cacert.pem'
 * @param $url 指定URL完整路徑地址
 * @param $cacert_url 指定當前工做目錄絕對路徑
 * return 遠程輸出的數據
 */
function getHttpResponseGET($url,$cacert_url) {
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HEADER, 0 ); // 過濾HTTP頭
    curl_setopt($curl,CURLOPT_RETURNTRANSFER, 1);// 顯示輸出結果
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true);//SSL證書認證
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);//嚴格認證
    curl_setopt($curl, CURLOPT_CAINFO,$cacert_url);//證書地址
    $responseText = curl_exec($curl);
    //var_dump( curl_error($curl) );//若是執行curl過程當中出現異常,可打開此開關,以便查看異常內容
    curl_close($curl);
    
    return $responseText;
}

/**
 * 實現多種字符編碼方式
 * @param $input 須要編碼的字符串
 * @param $_output_charset 輸出的編碼格式
 * @param $_input_charset 輸入的編碼格式
 * return 編碼後的字符串
 */
function charsetEncode($input,$_output_charset ,$_input_charset) {
    $output = "";
    if(!isset($_output_charset) )$_output_charset  = $_input_charset;
    if($_input_charset == $_output_charset || $input ==null ) {
        $output = $input;
    } elseif (function_exists("mb_convert_encoding")) {
        $output = mb_convert_encoding($input,$_output_charset,$_input_charset);
    } elseif(function_exists("iconv")) {
        $output = iconv($_input_charset,$_output_charset,$input);
    } else die("sorry, you have no libs support for charset change.");
    return $output;
}
/**
 * 實現多種字符解碼方式
 * @param $input 須要解碼的字符串
 * @param $_output_charset 輸出的解碼格式
 * @param $_input_charset 輸入的解碼格式
 * return 解碼後的字符串
 */
function charsetDecode($input,$_input_charset ,$_output_charset) {
    $output = "";
    if(!isset($_input_charset) )$_input_charset  = $_input_charset ;
    if($_input_charset == $_output_charset || $input ==null ) {
        $output = $input;
    } elseif (function_exists("mb_convert_encoding")) {
        $output = mb_convert_encoding($input,$_output_charset,$_input_charset);
    } elseif(function_exists("iconv")) {
        $output = iconv($_input_charset,$_output_charset,$input);
    } else die("sorry, you have no libs support for charset changes.");
    return $output;
}
?>

wemall官網地址:http://www.wemallshop.com
原文詳情地址:http://Git.oschina.NET/zzunet...
wemall doraemonAndroid app商城詳情地址:http://www.koahub.com/home/pr...
WeMall - 開源微商城 微信商城 商城源碼 分銷商城 b2b2c商城系統數組

wemall

相關文章
相關標籤/搜索