按要求加签后还是返回签名错误
260 浏览2019年04月19日作者:18028791588

问题描述:

签名已经按文档要求对 [ "app_id", "format", "charset", "sign_type", "timestamp", "version", "merchant_id", "uid", "biz_content", "method" ] 八个字段进行MD5加签,返回签名错误该怎么处理?

报错截图、相关bug:


{"response":{"code":"40001","msg":"Params Error","sub_code":"GW.SIGN_ERROR","sub_msg":"Sign Error"},"sign":"ao0UNbqEak66L8oT/WZigfpWGLs2XkNoCk6NlAaJxpSsWIrhWJUKEXJ8FNyIcGQ7cNbfojMP0weFRIJkCUvy5ilQhSxjwoIzLC2Ph37RSLFxx8paGczQNYOuNOIeazlIvqkHPqE3rVOslxQyZqWrzHzNLCbZ1KkD9pbOZV13eeg="}

复现步骤:


```php

public function MakeSign($data, $salt=CONFIG::MCHSECRET)

{

$sign_fields = [ "app_id", "format", "charset", "sign_type", "timestamp", "version", "merchant_id", "uid", "biz_content", "method" ];

// $sign_fields = [ "app_id", "method", "charset", "sign_type", "timestamp", "version", "biz_content", "format" ];

foreach ($data as $key => $value) {

if( !in_array($key, $sign_fields) ) unset($data[$key]);

}

//签名步骤一:按字典序排序参数

ksort($data);

if(isset($data['sign'])) unset($data['sign']);

foreach ($data as $key => $value) {

if( !$value && $value!==0 ) unset($data[$key]);

}

//签名步骤二:在string后加入KEY"&salt=".$this->SHSecret

$string = (http_build_query($data)).$salt;

//签名步骤三:MD5加密

$string = md5($string);

//签名步骤四:所有字符转为大写

// $result = strtoupper($string);

return $result;

}

```


联系方式:

WX: jeangowhy

最后一次编辑于 2021 年 07 月 17 日
16 条评论

相关文章

专题推荐

热门文章

热门问答