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

[HELP] 关于ci框架整合支付宝接口同步调用的问题

[复制链接]
发表于 2015-2-12 19:58:35 | 显示全部楼层 |阅读模式
最近做项目需要对接支付宝,根据支付宝官网提供的demo整合完成,遇到一个问题,异步回调正常,同步回调提示验证失败。
第一感觉是否整合代码的问题,讲demo原封不动扔进系统,还是一样的问题。
论坛,网站找了好多都没有找到合适答案。只有跟代码 ,后来发现原来是支付宝和ci框架联合起来挖的坑。
说问题:
1.跟代码发现alipay_notify.class.ph/getSignVeryfy/ $para = paraFilter($para_temp);过滤掉了订单号导致生成验证签名失败
继续跟alipay_core.function.ph:
function paraFilter($para) {
        $para_filter = array();
        while (list ($key, $val) = each ($para)) {
                if($key == "sign" || $key == "sign_type" || $val == "")continue;
                else        $para_filter[$key] = $para[$key];
        }
        return $para_filter;
}

用each 循环的
echo current($para) 发现直接从指针从第二位开始;原因找到了。问题就好解决了


2.跟ci框架代码CI/system/core/Input.php/_sanitize_globals方法对get请求参数进行校验时(代码如下)将数组指针指向第二位
if (is_array($_GET) AND count($_GET) > 0)
                        {
                                foreach ($_GET as $key => $val)
                                {
                                        $_GET[$this->_clean_input_keys($key)] = $this->_clean_input_data($val);
                                }
                }
我勒个擦 问题就这样,怎么改看个人爱好。
希望能帮到ci的同学们,以后ci中再不敢用
each 循环。


发表于 2015-12-25 10:31:48 | 显示全部楼层
我也遇到相同问题,折腾了半天愣是没发现问题,google 到这才解决,谢谢分享

本版积分规则