Вопрос

Я относительную PHP Newbie, реализующую слушатель PayPal IPN, и все, кажется, работает нормально, за исключением того, что я не знаю, как проверить код ответа.

Я пробовал что-то уродливое с завитым, но это вообще не работает (я не понимаю Curl).

Я попробовал этот кусок кода, который я схватил от где-то в сети:

$fp = fsockopen('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30);
$response_headers = get_headers($fp);
$response_code = (int)substr($response_headers[0], 9, 3);

... но это не работает (возвращает $ resping_code = 0).

Так что прямо сейчас я отладки свой IPN-код без проверки ответа 200.

Может ли у кого-нибудь более опытный совет посоветую мне, какой правильный / простой способ проверить это?

Спасибо

Это было полезно?

Решение

Это get_headers ($ URL.), не Get_Headers ($ FP). Если я не читаю это совершенно неправильно (и есть какой-то другой режим, который я никогда не видел), вам нужно пройти его URL, которого вы читаете, а не ручка сокета. На самом деле, это, по-видимому, делает свой собственный получить, поэтому он был бы бесполезным для вашей текущей задачи.

Fsockopen (...) - это функция более низкого уровня (TCP / IP). Он возвращает ручку сокета, а не ручку скручиваемости. Вот почему вы не можете использовать Curl_GetInfo (...) на нем. Вы хотите что-то вроде этого ...

$fp = curl_init('https://www.sandbox.paypal.com/cgi-bin/webscr');
curl_setopt($fp, CURLOPT_POST, true);
curl_setopt($fp, CURLOPT_POSTFIELDS, $_POST);
curl_setopt($fp, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($fp);

$response_code = curl_getinfo($fp, CURLINFO_HTTP_CODE);

За исключением случаев, когда я помню, вам нужно добавить «CMD = _notify-Validate» на полей полей.

Не используйте Fsockopen (...). Да, я знаю, вот что делает код пример PayPal. Но это предназначено для везде и не может полагаться на установленное скручивание. Вы можете, поэтому используйте его.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top