2014-09-15 5 views
0

У меня есть проблема, что я надеюсь, что кто-то там сможет мне помочь, так как поддержка SagePay была так же полезна, как шоколадный чайник. У меня есть специальное решение для электронной коммерции с SagePay Server Integration, некоторые из которых работают v2.23 others v3.00. У нас было несколько веб-сайтов, которые вдруг перестали работать.SagePay Notification Blank

Уведомление от SagePay пустое, совершенно и совершенно пустое. На обоих сайтах нет данных для публикации. Однако у нас есть два других сайта, где ничего другого не так, все работает нормально.

Единственная разница между четырьмя сайтами - это версия, которая потребовала незначительных изменений в том, что отправлено в 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); 

ответ

0

Оказывается, это было вызвано Htaccess перенаправление не-WWW для WWW, и URL уведомления Ждут» t включает www. Это было исправлено, проверив URL-адрес и добавив WWW спереди, если его еще не было.