Выпуск сертификата SSL с Omnipay и CI

Я пытаюсь сделать простой платеж через песочницу PayPal с моего локального компьютера. Я использую библиотеку Omnipay в Codeigniter.

Я настроил учетную запись песочницы на сайте developer.paypal.com и тестовое приложение. Это код, который я использую:

$gateway = GatewayFactory::create('PayPal_Express');
$gateway->setUsername([username]);
$gateway->setPassword([password]);
$gateway->setSignature([signature]);
$gateway->setTestMode(true);

$params = array(
    'amount' => '1.00',
    'currency' => 'USD',
    'description' => 'test purchase',
    'transactionId' => '123',
    'transactionReference' => '123ref',
    'returnUrl' => [returnUrl],
    'cancelUrl' => [cancelUrl],
);

$response = $gateway->purchase($params);

Я получаю следующую ошибку:

Неустранимая ошибка: необработанное исключение «Buzz\Exception\ClientException» с сообщением «Проблема с сертификатом SSL, убедитесь, что сертификат ЦС в порядке. Подробности: ошибка: 14090086: процедуры SSL: SSL3_GET_SERVER_CERTIFICATE: ошибка проверки сертификата в...

Я установил omnipay с помощью composer с чем-то под названием BUZZ. Я новичок в проведении транзакций PayPal в Интернете и не уверен, нужно ли мне настраивать локальный сертификат ssl. Если я это сделаю, может ли кто-нибудь указать мне направление для настройки этого?

Спасибо.


person pfunc    schedule 26.11.2013    source источник


Ответы (2)


Это звучит довольно хитроумно. Omnipay использует Guzzle для выполнения HTTPS-запросов к PayPal, а Guzzle объединяет для вас последние корневые SSL-сертификаты. Таким образом, вы не должны видеть никаких предупреждений HTTPS.

Это работает локально для вас? Вы пробовали разные сервера? Если вы находитесь на общем хостинге, возможно, ваш веб-хост пытается передать ваши запросы через прокси, что означает, что они, по сути, выполняют атака "человек посередине", потенциально делающая ваш сайт небезопасным.

РЕДАКТИРОВАТЬ: Только что заметил, что ошибка на самом деле исходит от Buzz, а не от Guzzle. Как ты это установил? Как выглядит ваш файл composer.json? Какую версию Omnipay вы используете? Если вы обновитесь до последней версии Omnipay (2.0), он будет использовать Guzzle внутри, и это должно исправить ошибку SSL.

person Adrian Macneil    schedule 27.11.2013
comment
Мне пришлось установить последнюю версию omnipay, и я неправильно установил версию в файле композитора. Это привело к тому, что мне пришлось обновить php до более новой версии, но теперь все работает. Спасибо. - person pfunc; 05.12.2013

Я нашел ответ на странице проблем omnipay (по крайней мере, для тестирования): https://github.com/omnipay/omnipay/issues/13

Только для локального тестирования:

Добавьте эти строки в файл /buzz/lib/Buzz/Client/Curl.php непосредственно перед методом curl_exec...

curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);

person pfunc    schedule 26.11.2013
comment
Обратите внимание, что это противоречит единственной цели сертификатов SSL: проверка того, что вы разговариваете с сервером, который вы ожидаете. Будьте особенно осторожны, чтобы не использовать это в продакшне, или знайте, какие последствия это имеет, и боритесь с последствиями. По сути, отключение проверки SSL позволяет проводить атаки «человек посередине», поэтому любой сможет подделать ваши платежи, пока вы их отправляете. - person Sven; 27.11.2013