У меня есть код, который выполняет POST запрос и успешно получает ответ от песочницы Paypal.
Как только я меню адрес на живой адрес Paypal запрос начинает выполняться бесконечно и в итоге ответ не приходит.
Что я делаю неправильно?
// Init cURL
$request = curl_init();
// Set request options
curl_setopt_array($request, array
(
CURLOPT_URL => 'https://www.paypal.com/cgi-bin/webscr',
CURLOPT_POST => TRUE,
CURLOPT_POSTFIELDS => http_build_query(array
(
'cmd' => '_notify-synch',
'tx' => [$GET['tx']],
'at' => $this->token,
)),
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_HEADER => FALSE,
// CURLOPT_SSL_VERIFYPEER => TRUE,
// CURLOPT_CAINFO => 'cacert.pem',
));
// Execute request and get response and status code
$response = curl_exec($request);
$status = curl_getinfo($request, CURLINFO_HTTP_CODE);
// Close connection
curl_close($request);
var_dump($response);
Попробуйте добавить такие параметры
//curl_setopt($ch, CURLOPT_SSLCERT, $sslcert);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); //0
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); //0
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));
Ваш хост работает через https?
В итоге заработал вот такой код:
if (isset($GET['tx'])) {
$query_data = [
'cmd' => '_notify-synch',
'tx' => $GET['tx'],
'at' => $this->token
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_USERAGENT, 'PayPal');
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($query_data));
curl_setopt($ch, CURLOPT_URL, $this->url);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
Сборка персонального компьютера от Artline: умный выбор для современных пользователей