2016-01-26 4 views
-1

i m using Magento ver. 1.8.1.0Не удается связаться с ошибкой PayPal

Мне не удалось связаться с шлюзом PayPal. ошибка с PayPal Express Checkout или PayPal Pay Pro в обоих случаях.

я уже Включить проверку SSL: - Нет

Можете ли вы объяснить мне об этой ошибке.

Благодаря

ответ

0

Paypal недавно выкатили некоторые обновления безопасности на песочнице (производство будет обновлен в июне) https://devblog.paypal.com/upcoming-security-changes-notice/

Самое главное, TLS 1.0 и 1.1 больше не принимаются песочнице, и Модуль Magento Paypal по умолчанию не использует 1.2. Можно ожидать, что официальный патч, чтобы исправить это в ближайшее время, но в то же время вы можете работать вокруг него перекрывая Mage/Paypal/Model/Api/Nvp.php (в локальном codepool или переписывания) с помощью следующей call функции:

public function call($methodName, array $request) 
{ 
    $request = $this->_addMethodToRequest($methodName, $request); 
    $eachCallRequest = $this->_prepareEachCallRequest($methodName); 
    if ($this->getUseCertAuthentication()) { 
     if ($key = array_search('SIGNATURE', $eachCallRequest)) { 
      unset($eachCallRequest[$key]); 
     } 
    } 
    $request = $this->_exportToRequest($eachCallRequest, $request); 
    $debugData = array('url' => $this->getApiEndpoint(), $methodName => $request); 

    try { 
     $http = new Varien_Http_Adapter_Curl(); 
     $http->addOption(CURLOPT_SSLVERSION,6);//CURL_SSLVERSION_TLSv1_2 
     $config = array(
      'timeout' => 60, 
      'verifypeer' => $this->_config->verifyPeer 
     ); 

     if ($this->getUseProxy()) { 
      $config['proxy'] = $this->getProxyHost(). ':' . $this->getProxyPort(); 
     } 
     if ($this->getUseCertAuthentication()) { 
      $config['ssl_cert'] = $this->getApiCertificate(); 
     } 
     $http->setConfig($config); 
     $http->write(
      Zend_Http_Client::POST, 
      $this->getApiEndpoint(), 
      '1.1', 
      $this->_headers, 
      $this->_buildQuery($request) 
     ); 
     $response = $http->read(); 
    } catch (Exception $e) { 
     $debugData['http_error'] = array('error' => $e->getMessage(), 'code' => $e->getCode()); 
     $this->_debug($debugData); 
     throw $e; 
    } 

    $response = preg_split('/^\r?$/m', $response, 2); 
    $response = trim($response[1]); 
    $response = $this->_deformatNVP($response); 

    $debugData['response'] = $response; 
    $this->_debug($debugData); 
    $response = $this->_postProcessResponse($response); 

    // handle transport error 
    if ($http->getErrno()) { 
     Mage::logException(new Exception(
      sprintf('PayPal NVP CURL connection error #%s: %s', $http->getErrno(), $http->getError()) 
     )); 
     $http->close(); 

     Mage::throwException(Mage::helper('paypal')->__('Unable to communicate with the PayPal gateway.')); 
    } 

    // cUrl resource must be closed after checking it for errors 
    $http->close(); 

    if (!$this->_validateResponse($methodName, $response)) { 
     Mage::logException(new Exception(
      Mage::helper('paypal')->__("PayPal response hasn't required fields.") 
     )); 
     Mage::throwException(Mage::helper('paypal')->__('There was an error processing your order. Please contact us or try again later.')); 
    } 

    $this->_callErrors = array(); 
    if ($this->_isCallSuccessful($response)) { 
     if ($this->_rawResponseNeeded) { 
      $this->setRawSuccessResponseData($response); 
     } 
     return $response; 
    } 
    $this->_handleCallErrors($response); 
    return $response; 
} 

Важным направлением является $http->addOption(CURLOPT_SSLVERSION,6);//CURL_SSLVERSION_TLSv1_2

+0

применить этот код, но такую ​​же ошибку ... вы можете объяснить мне об этом. Спасибо – ramesh

+0

Вам также понадобится OpenSSL версии 1.0.1+. попробуйте запустить «openssl version» в командной строке, чтобы проверить это. –

Смежные вопросы