用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4454|回复: 6
收起左侧

[讨论/交流] 淘宝API在codeigniter中的签名问题

[复制链接]
发表于 2011-10-13 08:56:25 | 显示全部楼层 |阅读模式
在淘宝的API当中。。有一些只要生成md5的sign就可以了。。不过。。直接 在php 中写代码。。生成的sign就可以在淘宝中用...
如果通过codeigniter的controller方法中。。调用同样的类。同样的方法。。生成的md5的sign就是不能登陆,出现
<error_response>
<code>25</code>
<msg>Invalid signature</msg>
</error_response>
<!-- v014153.cm4 -->
大家有遇过这样的问题吗!?
 楼主| 发表于 2011-10-13 09:35:20 | 显示全部楼层
如果在php中生成有sign的link。。放到ci的controller中。又可以得到正常的数据..大家生成签名的方法都是一样的。。
PHP复制代码
 
//签名函数
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中调用生成就不一样呢!??不解
 楼主| 发表于 2011-10-13 09:40:29 | 显示全部楼层
查过一下。。说参数到淘宝中会重新排序。。生成sign比较的。。难道ksort中ci中不起作用!?
发表于 2011-10-13 09:45:45 | 显示全部楼层
print_r测试一下呀
发表于 2011-10-13 09:46:24 | 显示全部楼层
也可能你签名时签错了,只是你没发现。
发表于 2011-10-13 10:03:54 | 显示全部楼层
这东西没有玩过
 楼主| 发表于 2011-10-13 10:04:39 | 显示全部楼层
问题已经解决

问题出在
PHP复制代码
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;
}
复制代码

PHP复制代码
//生成签名
                $sign = createSign($paramArr,$this->appSecret);
复制代码

在php中。这样调用生成的东西正常
在ci中。。appsecret就传入不正常

本版积分规则