php對接支付常用方法

一、獲取毫秒時間戳
方法一、
/**
 * 獲取時間戳到毫秒,並固定位數
 * @return bool|string
 */
public static function getMillisecond(){
    list($msec, $sec) = explode(' ', microtime());
    $msectime =  (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
    return $msectimes = substr($msectime,0,13);
}
方法二、
/** 獲取當前時間戳,精確到毫秒 */
function microtime_float()
{
   list($usec, $sec) = explode(" ", microtime());
   return ((float)$usec + (float)$sec);
}
二、將數組鍵值直接轉成url參數
使用http_build_query()函數
http_build_query()函數的作用是使用給出的關聯(或下標)數組生成一個經過 URL-encode 的請求字符串。
寫法格式:http_build_query ( mixed $query_data [, string $numeric_prefix [, string $arg_separator [, int $enc_type = PHP_QUERY_RFC1738 ]]] )
打個比方:$data = array("name"=>"callback" , "value"=>"test");
$rescult = http_build_query($data);
我們輸出下$rescutl可以得到:
name=callback&value=test
/**
 * 數據驗籤
 * @param array $data
 * @param string $key
 * @return string
 */
public function getSign($data,$key)
{
    $para_filter = $this->paraFilter($data);
    $para_sort   = $this->argSort($para_filter);
    $prestr      = $this->createLinkString($para_sort);

    return $this->md5Encrypt($prestr, $key);
}
/**
 * 除去數組中值爲空參數
 * @param array $data
 * @return array
 */
public function paraFilter($data)
{
    $para_filter = array();
    foreach ($data as $key=>$val)
    {
        if($key == "sign" || $val == '' || $key == "json")continue;
        else $para_filter[$key] = $data[$key];
    }
    return $para_filter;
}

/**
 * 對待簽名參數數組排序
 * @param array $para
 * @return array
 */
public function argSort($para)
{
    ksort($para);
    reset($para);
    return $para;

}

/**
 *把數組所有元素,按照“參數=參數值”的模式用“&”字符拼接成字符串
 * @param $para
 * @return bool|string
 */
public function createLinkString($para) {
    $arg  = "";
    foreach ($para as $key=>$val)
    {
        $arg.=$key."=".$val."&";
    }

    //如果存在轉義字符,那麼去掉轉義
    if(get_magic_quotes_gpc()){
        $arg = stripslashes($arg);
    }

    return $arg;
}
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章