rain16881 发表于 2011-10-13 08:56:25

淘宝API在codeigniter中的签名问题

在淘宝的API当中。。有一些只要生成md5的sign就可以了。。不过。。直接 在php 中写代码。。生成的sign就可以在淘宝中用...
如果通过codeigniter的controller方法中。。调用同样的类。同样的方法。。生成的md5的sign就是不能登陆,出现
<error_response>
<code>25</code>
<msg>Invalid signature</msg>
</error_response>
<!-- v014153.cm4 -->
大家有遇过这样的问题吗!?

rain16881 发表于 2011-10-13 09:35:20

如果在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中调用生成就不一样呢!??不解

rain16881 发表于 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

这东西没有玩过

rain16881 发表于 2011-10-13 10:04:39

问题已经解决

问题出在
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]
查看完整版本: 淘宝API在codeigniter中的签名问题