SagePay通知空白

时间:2014-09-15 12:20:12

标签: php post sagepay

我有一个问题,我希望有人可以帮助我,因为SagePay的支持与巧克力茶壶一样有用。我有一个定制的电子商务解决方案与SagePay服务器集成,一些运行v2.23其他v3.00。我们有几个网站突然停止工作。

SagePay的通知是空白的,完全是空的。两个网站都没有可用的帖子数据。然而,我们还有另外两个网站没有其他错误,一切正常。

4个站点之间的唯一区别是版本,这需要对发送给SagePay的内容以及托管位置进行一些细微的更改。这两个工作站点由HeartInternet托管,而两个不工作的站点由不同的主机托管,一个使用123reg,另一个使用未知的美国主机。

SagePay已经将他们的日志发送给我进行了几次交易,两者都显示了通知数据,因此他们担心他们会把它发送给我,这是一个服务器问题。我甚至不确定从哪里开始调试这个。

不确定它是否相关,但我已在通知方法的开头添加:

public function Notify() {

    $this->Load();
    define('LOG_FILE', ROOT_LIB . 'sagepaylog-v2.23.txt');
    error_log(date('c') . " NEW NOTIFICATION" . PHP_EOL, 3, LOG_FILE);
    $input = file_get_contents('php://input');
    $query = $response = array();
    $exp = explode('&', $input);
    foreach($exp as $keyVal) {
        $e = explode('=', $keyVal, 2);
        $response[$e[0]] = urldecode($e[1]);
    }
    /* Comment out the above code and uncomment below when testing using POSTMAN.
    foreach($_POST as $key => $val) {
        $response[$key] = $val;
    }*/

    error_log("Notification Post Data" . PHP_EOL . "-------------------------" . PHP_EOL, 3, LOG_FILE);
    foreach($response as $key => $val) {
        error_log("$key: $val" . PHP_EOL, 3, LOG_FILE);
    }

    //We record the transaction during the initial registration. We need to load the details of that transaction, and of the order for the specified order ID, and make sure they match the details sent to us by SagePay.
    $valid = FALSE;
    $orders = $this->glob->order->LoadOrderHistory("WHERE ordId = " . (int)$response['VendorTxCode'], TRUE);
    if(count($orders)) {
        $order = $orders[$response['VendorTxCode']];
    } else {
        $order = new Order($this->glob);
    }
    $transaction = new Transaction($this->glob, $order->txnId);

1 个答案:

答案 0 :(得分:0)

原来这是由于htaccess将非www重定向到www,并且通知网址没有包含www。这是通过检查URL并在前面添加www来解决的,如果还没有。