支付宝sign值生成

/**
	 * 生成签名
	 * @param  [type] $Arr [进行签名的数组]
	 * @param  [type] $key [key值]
	 * @return [type]      [description]
	 */
	function getSign($Arr,$key){
		foreach ($Arr as $k => $v)
		{
			$Parameters[$k] = $v;
		}
		//签名步骤一:按字典序排序参数
		ksort($Parameters);
		$String = formatBizQueryParaMap($Parameters, false);
		//echo '【string1】'.$String.'</br>';
		//签名步骤二:在string后加入KEY
		if(!empty($key)){
			$String = $String."&key=".$key;
		}
		//echo "【string2】".$String."</br>";
		//签名步骤三:MD5加密
		
		$String = md5($String);
		//echo "【string3】 ".$String."</br>";
		//签名步骤四:所有字符转为大写
		$result_ = strtoupper($String);
		//echo "【result】 ".$result_."</br>";
		return $result_;
	}
	
	/**
	 * 	作用:格式化参数,签名过程需要使用
	 */
	function formatBizQueryParaMap($paraMap, $urlencode){
		$buff = "";
		ksort($paraMap);
		foreach ($paraMap as $k => $v)
		{
		    if($urlencode)
		    {
			   $v = urlencode($v);
			}
			//$buff .= strtolower($k) . "=" . $v . "&";
			$buff .= $k . "=" . $v . "&";
		}
		$reqPar;
		if (strlen($buff) > 0) 
		{
			$reqPar = substr($buff, 0, strlen($buff)-1);
		}
		return $reqPar;
	}

	/**
	 * 	作用:产生随机字符串,不长于32位
	 */
	function createNoncestr( $length = 32 ){
		$chars = "abcdefghijklmnopqrstuvwxyz0123456789";  
		$str ="";
		for ( $i = 0; $i < $length; $i++ )  {  
			$str.= substr($chars, mt_rand(0, strlen($chars)-1), 1);  
		}  
		return $str;
	}

猜你喜欢

转载自blog.csdn.net/zhangchb/article/details/80431489
今日推荐