淘宝API在codeigniter中的签名问题
在淘宝的API当中。。有一些只要生成md5的sign就可以了。。不过。。直接 在php 中写代码。。生成的sign就可以在淘宝中用...如果通过codeigniter的controller方法中。。调用同样的类。同样的方法。。生成的md5的sign就是不能登陆,出现
<error_response>
<code>25</code>
<msg>Invalid signature</msg>
</error_response>
<!-- v014153.cm4 -->
大家有遇过这样的问题吗!? 如果在php中生成有sign的link。。放到ci的controller中。又可以得到正常的数据..大家生成签名的方法都是一样的。。
//签名函数
function createSign ($paramArr) {
global $appSecret;
$sign = $appSecret;
ksort($paramArr);
foreach ($paramArr as $key => $val) {
if ($key !='' && $val !='') {
$sign .= $key.$val;
}
}
$sign = strtoupper(md5($sign.$appSecret));
return $sign;
}
//组参函数
function createStrParam ($paramArr) {
$strParam = '';
foreach ($paramArr as $key => $val) {
if ($key != '' && $val !='') {
$strParam .= $key.'='.urlencode($val).'&';
}
}
return $strParam;
}
都是dome中的代码 ..为什么在ci中调用生成就不一样呢!??不解 查过一下。。说参数到淘宝中会重新排序。。生成sign比较的。。难道ksort中ci中不起作用!? print_r测试一下呀 也可能你签名时签错了,只是你没发现。 这东西没有玩过 问题已经解决
问题出在
function createSign ($paramArr) {
global $appSecret;
$sign = $appSecret;
ksort($paramArr);
foreach ($paramArr as $key => $val) {
if ($key !='' && $val !='') {
$sign .= $key.$val;
}
}
$sign = strtoupper(md5($sign.$appSecret));
return $sign;
}
//生成签名
$sign = createSign($paramArr,$this->appSecret);
在php中。这样调用生成的东西正常
在ci中。。appsecret就传入不正常
页:
[1]