调支付宝接口发现的诡异问题

昨天调试支付宝快捷支付接口, 先跑支付宝提供的demo, 本地测试一切正常。 然后集成进网站。 网站php 框架是 codeigniter。这时出现问题, log显示"return_url_log:isSign=false", isSign=false 标示签名认证失败。 这里就很奇怪了, 签名验证算法是支付宝提供的, 支付成功, 参数也是支付宝返回的。偶
 
比较 demo 和 集成环境的 参数, 正常。
 
比较 签名算法的字符串参数, 发现有问题。
 
    $para = $_GET
     while (list ($key, $val) = each ($para)) {
if($key == "sign" || $key == "sign_type" || $val == "")continue;
else $para_filter[$key] = $para[$key];
     }
 
$_GET 中第一个参数丢失了
 
CI 版本  2.0.2
var_dump( $_GET) 正常
 
foreach( $_GET as  $key=>$value){  正常
     echo $key ;
}
 
$arr["p1"]= "p1";
$arr["p2"]= "p2";
while(list($key, $value) = each ($arr)){  正常
echo $key ;
}
 
while(list($key, $value) = each ($_GET)){  不正常丢失第一个参数
  echo $key ;
}
 
目前没找到原因, 只能怀疑是 CI 对 $_GET有什么处理, 和 each 函数有什么不兼容

猜你喜欢

转载自sb122k.iteye.com/blog/1849310