2016-08-23 5 views
0

Я построил приложение на OpenShift Online, и теперь я пытаюсь интегрироваться с PayPal. Я запускаю ошибки SSL cURL, которые я не знаю, как обращаться. Я просмотрел SO, OpenShift Online, PayPal и в других местах, но не могу решить эту проблему.Интеграция PayPal с OpenShift Online - SSL IPN Issue

фона:

  • PHP-приложение на основе работает на OpenShift Online v2
  • установки как https: //*******.rhcloud.com/test/test_IPN.php - - так что я могу использовать их * .rhcloud.com групповой сертификат
  • Использование PayPal «Купить сейчас» кнопку с PayPal Payments Standard, тестирование в песочнице
  • Использование IPN образец кода найден в https://github.com/paypal/ipn-code-samples/blob/master/paypal_ipn.php

Вот часть кода, который, кажется, в корне моей проблемы:

// CONFIG: Please download 'cacert.pem' from "http://curl.haxx.se/docs/caextract.html" and set the directory path 
// of the certificate as shown below. Ensure the file is readable by the webserver. 
// This is mandatory for some environments. 

//$cert = __DIR__ . "./cacert.pem"; 
//curl_setopt($ch, CURLOPT_CAINFO, $cert); 

Проблема:

[1], используя код «как есть» (строки 79-80 прокомментировал ошибку): «Ошибка подключения SSL»

[2] используя строки 79-80 без комментирования (и cacert.pem, помещенные в том же каталоге, что и скрипт php) вызывает ошибку curl: «Проблема с сертификатом SSL CA (дорожка? ?. Права доступа)»

Вполне вероятно, что я что-то просто здесь отсутствую какая-либо помощь, чтобы это правильно работать на OpenShift онлайн очень ценятся Спасибо

ответ

0

Решение:

Force использование TLS 1.2

Комментирование выходы линии 79-80 и добавление

curl_setopt($ch, CURLOPT_SSLVERSION, 6); // Force TLS 1.2 

сделал трюк для меня. Надеюсь, это помогает кому-то другому.

P.S. Потребность в TLS 1.2 исходила из этой статьи PayPal https://www.paypal-knowledge.com/infocenter/index?page=content&widgetview=true&id=FAQ1914&viewlocale=en_US

0

Эта линии довольно подозреваемый:.!

$cert = __DIR__ . "./cacert.pem"; 

В принципе, у вас получилось бы что-то вроде $ cert equaling /home/path./cacert.pem, которое, я уверен, не то, что вы хотите, и почему вы получаете ошибку ssl, он не может найти сертификат . Это может быть исправлено до:

$cert = __DIR__ . "/cacert.pem"; 

Это также может быть лучше хранить cacert.pem в вашем $ OPENSHIFT_DATA_DIR и ссылаться на него как таковой:

$cert = getenv("OPENSHIFT_DATA_DIR")."cacert.pem"; 

И убедитесь, что разрешения на cacert.pem, по крайней мере 0644

chmod 0644 $OPENSHIFT_DATA_DIR/cacert.pem 
+0

Спасибо за сообщение. Похоже, мне не нужен файл cacert.pem.PayPal повысила безопасность в среде тестирования тестовой среды, потребовав TLS 1.2 в июле 2016 года. К сожалению, их документы и рекомендуемый образец кода PHP IPN, похоже, пока не отражают изменения. – Bob

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