问题描述:
签名已经按文档要求对 [ "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