我使用Aliexpress的附属API来检索产品价格并将链接转换为附属链接。
我可以得到产品信息没有任何问题,但当我试图把我的链接到加盟链接,我得到以下错误消息:
{"error_response":{"type":"ISV","code":"IncompleteSignature","msg":"The request signature does not conform to platform standards","request_id":"210101cd17036054742456317"}}
字符串
我使用与其他API方法完全相同的签名方法,但对于这个特定的方法,它不起作用。
这是我用途:
$url = "https://api-sg.aliexpress.com/sync";
$appKey = "***";
$appSecret = "***";
$appName = "***";
$param = array();
$param["app_key"] = $appKey;
$param["format"] = "json";
$param["promotion_link_type"]=0;
$param["source_values"]="***";
$param["method"] = "aliexpress.affiliate.link.generate";
$param["sign_method"] = "md5";
$param["timestamp"] = time();
ksort($param);
foreach ($param as $key=>$value)
{
if (!isset($parameters))
{
$parameters = $key."=".$value;
}
else
{
$parameters = $parameters."&".$key."=".utf8_encode($value);
}
}
$final = $url."?".$parameters."&sign=".strtoupper(md5($appSecret.$parameters.$appSecret));
$ch = curl_init($final);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded;charset=utf-8'));
$response = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error: ' . curl_error($ch);
}
curl_close($ch);
echo $response;
型
我也尝试了sha256和hmac,但我得到相同的错误消息.在MD5的签名工作正常使用全球速卖通.会员.产品.查询方法.我检查文档和唯一的强制性参数是:promotion_link_type,source_values,tracking_id.(doc here:https://developers.aliexpress.com/en/doc.htm?docId=45804&docType=2)
我错过了什么吗?
谢谢
1条答案
按热度按时间wxclj1h51#
感谢@MarkusZeller找到了解决方案
修改代码:
字符串
foreach($param as $key=>$value){(!isset($parameters)){ $parameters = $key."=".$value; } else { $parameters = $parameters."&".$key."=".utf8_encode($value); } } $sign = str_replace(“&","",$parameters); $sign = str_replace(“&","",$sign); $sign = str_replace(“=","",$sign); $final = $url."?".$parameters."&sign=".strtoupper(md5($appSecret.$sign.$appSecret));
型
响应函数= curl_exec($ch);
其余的代码保持不变。我不得不使用一些存储在$sign中的修改,这些修改没有添加到最终的参数中。