解决magento1.4.0.1使用gspay接口用ie8浏览器报错不能跳转的问题

目前公司站群magentog使用spay支付接口有两大大问题还未解决:

1. 初次注册用户下单不能采集用户信息到支付页面

2. 用ie8或ie系列浏览器使用gspay支付接口下单的时候,在跳转页面会报错:Notice: Undefined index:  HTTP_REFERER  in /app/code/local/Mage/Gspay/Block/Standard/Redirect.php on line 97

第一个问题尚在研究,第二个问题在下午闲下来的时候给解决了

起因:magento1.4.0.1 在下单页面选择gspay付款方式的时候,在跳转页面/Gspay/standard/redirect/
如果使用的是ie系列浏览器,会出现notice级别的错误:Notice: Undefined index:  HTTP_REFERER  in /app/code/local/Mage/Gspay/Block/Standard/Redirect.php on line 97

跟踪代码发现在app/code/local/Mage/Gspay/Block/Standard/Redirect.php 第97行gspay获取url并解析是采用:$host=parse_url($_SERVER['HTTP_REFERER']);这样的方式,这样在火狐完全可以正常,但用ie8的时候就取不到HTTP_REFERER
的值了(貌似是bug),最后动手完善代码,经测试正常可用!

把第97行的$host=parse_url($_SERVER['HTTP_REFERER']);替换成如下代码:

$http    = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') ? 'https' : 'http';
if( empty($_SERVER['HTTP_REFERER']) ){
    $host    = array(
            'scheme'    => $http,
            'host'        => $_SERVER['HTTP_HOST']
        );
}else{
    $host    = parse_url($_SERVER['HTTP_REFERER']);
}

留此帮助其他遇到相同情况的朋友,嘿嘿·~