isEmpty()) && ($map->size() > 0)) { $keys = $map->keys(); foreach ($keys as $key) { //sign_type 不需要参与RAS签名 $paramter[$key . "=" . urlencode(trim($map->get($key)))] = $key . "=" . urlencode(trim($map->get($key))); } //字母a到z排序后的数组 $sort_array = StringUtil::arg_sort($paramter); while (list ($key, $val) = each($sort_array)) { $arg .= $val . "&"; } $arg = substr($arg, 0, count($arg) - 2); //去掉最后一个&字符 return $arg; } else { die ("[UMF SDK]获取请求参数明文字符串失败:传入参数为空!"); } } /** * @param $map HashMap 使用&符号组织签名明文串排序a-z 去除sign_type字段 不做urlencode * @return string */ public static function getPlainSortByAndWithoutSignType($map) { $arg = ""; $paramter = array(); if ((!$map->isEmpty()) && ($map->size() > 0)) { $keys = $map->keys(); foreach ($keys as $key) { //sign_type 不需要参与RAS签名 if ("sign_type" != $key) { $paramter[$key . "=" . trim($map->get($key))] = $key . "=" . trim($map->get($key)); } } //字母a到z排序后的数组 $sort_array = StringUtil::arg_sort($paramter); foreach($sort_array as $v){ if($arg){ $arg .= "&".$v; }else{ $arg .= $v; } } // while (list ($key, $val) = each($sort_array)) { // $arg .= $val . "&"; // } // $arg = substr($arg, 0, count($arg) - 2); //去掉最后一个&字符 return $arg; } else { die ("[UMF SDK]获取请求参数明文字符串失败:传入参数为空!"); } } /** * 去除字符串前后空格,如果字符串为null则返回空串"" */ public static function trim($str){ if ($str == null) { return ""; } else { return trim($str); } } /** * @param $array array() 对数组进行a-z升序排列 * @return mixed */ public static function arg_sort($array){ asort($array); return $array; } public static function String2Hex($string){ $hex=''; for ($i=0; $i < strlen($string); $i++){ $hex .= dechex(ord($string[$i])); } return $hex; } public static function Hex2String($hex){ $string=''; for ($i=0; $i < strlen($hex)-1; $i+=2){ $string .= chr(hexdec($hex[$i].$hex[$i+1])); } return $string; } }