/** |
* 请求组装验证串 |
* |
* @param array $req 请求参数 |
* @param string $appsecret 验证秘钥 |
*/ |
static protected function makeSign(& $req , $appsecret ) |
{ |
ksort( $req ); |
$arr = array (); |
foreach ( $req as $key => $val ) { |
if ( $key == 'sign' ) continue ; |
if ( $val === null) { |
$val = "" ; |
$req [ $key ] = "" ; |
} |
if ( count ( $arr )) |
$arr [] = ';' ; |
$arr [] = sprintf( "%02d" , iconv_strlen( $key , 'UTF-8' )); |
$arr [] = '-' ; |
$arr [] = $key ; |
$arr [] = ':' ; |
$arr [] = sprintf( "%04d" , iconv_strlen( $val , 'UTF-8' )); |
$arr [] = '-' ; |
$arr [] = $val ; |
} |
$sign = md5(implode( '' , $arr ) . $appsecret ); |
$req [ 'sign' ] = $sign ; |
} |
例子: |
$req = array (name=> 'lengmo' ,gender=> 'male' ,sign=> 'qwert' ) |
ksort( $req ) |
$req = array (gender=> 'male' ,name=> 'lengmo' ,sign=> 'qwert' ) |
$arr [ '06' , '-' , 'gender' , ':' , '0004' , '-' , 'male' , ';' , '04' , '-' , 'name' , ':' , '0006' , '-' , 'lengmo' , ';' , '04' , '-' , 'sign' , ':' , '0005' , '-' , 'qwert' ] |
md5(06-gender:0004-male;04-name:0006-lengmo;04-sign:0005-qwert. $appsecret ) |