|
5精币
- 签名生成方法:
- 示例:
- $post_data = array("user_name"=>'xxx',"price"=>"20",'buy_click_count'=>'1000','speed_type'=>1,'url'=>'xxxx'); //原有接口需要提交的post数据数组
- $post_data ["AccessKeyId"] = $this->Keyid;//post提交数据里添加AccessKeyId参数,值为系统分配给您的key
- $post_data ["SignatureNonce"] = uniqid ();//post提交数据里添加SignatureNonce参数,值为13位随机字符串
- $post_data ["Timestamp"] = time();//post提交数据里添加Timestamp参数,值为当前请求的时间戳
- ksort ( $post_data );//对以上数组按照键名进行升序排序(Standard ASCII)
- $QueryString = '';
- foreach ( $post_data as $key => $value ) {
- $QueryString .= '&' . $this->percentEncode ( $key ) . '=' . $this->percentEncode ( $value );
- }
- //循环上面排序完的数组,拼接字符串(结果类似"&user_name=xxx&price=20")
- /*percentEncode($str) 方法说明:
- $res = urlencode ( $str );
- $res = preg_replace ( '/\+/', '%20', $res ); 替换字符“+”
- $res = preg_replace ( '/\*/', '%2A', $res );替换字符“*”
- $res = preg_replace ( '/%7E/', '~', $res );替换“%7E”
- return $res;
- */
- $stringToSign = $this->percentencode ( substr ( $QueryString, 1 ) );//截取生成的str 把字符串开始的第一个&去掉
- $hash_str = hash_hmac ( 'sha256', $stringToSign, $accessKeySecret, true );//上面的拼接字符串做内容,HMAC 生成一串散列值(sha256) $accessKeySecret是系统给你分配的Secret
- $signature = base64_encode ( $hash_str );//base64 生成的字符串
- $post_data ["Signature"] = $signature;//添加签名到post数组里
- 请求到此就可以 curl 接口地址,然后post 以上数组
- 新加返回错误信息码说明:
- '101', '传递参数格式错误请POST提交'
- '102', '传递必要参数Signature、AccessKeyId、Timestamp 缺失'
- '103', '传递的系统分配的key不存在'
- '104', '签名验证错误'
- '105', '时间戳超时'
- '106', '您发起请求的ip地址未在白名单中'
- '107', '渠道不存在'
- '108', '传递的key对应的渠道user_name与传递的user_name不匹配'
复制代码 易语言该咋写?
|
最佳答案
查看完整内容
感觉跟亚马逊的很像,猜想应该是这样的
用下面的js传入拼接好的值跟key 值是提交的内容拼接排序好的 类似aaa=11&bb=2&qq=3
|