app_sign 生成规则

所有接口调用都必须在URL的query中附带randomtimestampsign三个参数,以验证请求的合法性。

query参数说明

名称 类型 说明
random string 随机字符串,长度8-20
timestamp int 当前请求unix时间戳,长度10。将与北京时间相比较,允许60分钟误差,超过60分钟则判定请求无效。若实现语言为php5,请将timestamp改为atimestamp
sign string 请求参数数据签名

生成算法

query参数+body参数(不包括sign)+random+timestamp,ascii排序后&连接,在加上app_secretascii排序后使用特殊字符 & 拼接(key1=val1&key2=val2..)后再MD5加密。

优先进行app_sign签名,再进行sign签名,sign签名时app_secret不参与签名。

请求方式说明

  • PUT请求请以x-www-form-urlencoded方式提交
  • 若PUT请求需提交文件,请以POST方式+参数中添加_method=PUT的形式提交,_method参与签名
demo

测试环境可用 appKey = '9b437adc87a98d3ffaad4747588e30f4'; appSecret = 'ec2b65c0da8e7193bffabc75b733ea57';

参数:

query参数:test1=a&test2=b&app_key=9b437adc87a98d3ffaad4747588e30f4

body参数:test3=c&test4=d

系统参数 : random=radomstring&timestamp=1525510814

PHP代码

$appKey = '9b437adc87a98d3ffaad4747588e30f4';
$appSecret = 'ec2b65c0da8e7193bffabc75b733ea57';

$requestQueryApp = ['app_key'=>$appKey];
$requestQueryBiz = ['a'=>'one','b'=>'two'];
$requestBody = ['c'=>'three','d'=>'four'];
$random = uniqid();
$timestamp = time();
$requestQuerySys = ['random'=>$random,'timestamp'=>$timestamp];

$signParams = $requestQueryApp + $requestQueryBiz + $requestBody + $requestQuerySys;
ksort($signParams);
array_walk($signParams, function(&$v){
    $v === null && $v = '';
});
$signString = urldecode(http_build_query($signParams)).$appSecret;
md5($signString);

results matching ""

    No results matching ""