Я внедряю PayPal IPN & PDT. После некоторой головной боли и времени в песочнице IPN работает хорошо, и PDT возвращает правильные данные $ _GET. Реализация выглядит следующим образом:
- Передать идентификатор пользователя в форме в PayPal
- Пользователь покупает продукт и запускает IPN, который обновляет базу данных для данного идентификатора пользователя
- PDT возвращает идентификатор транзакции, когда пользователь возвращается на сайт
- На странице возврата написано «пожалуйста, подождите» и повторите Ajax-проверки статуса транзакции
- Пользователь перенаправлен на страницу успеха / неудачи
Все работает хорошо, за исключением того, что при использовании PHP-кода, готового для PayPal, для PDT, чтобы выполнить возврат POST, страница зависает. Пользователь никогда не вернется на мой сайт. Я не получаю статус провала, просто ничего. Самое смешное, что при возникновении неизвестной ошибки мой тестовый домен на короткое время перестает отвечать.
Код (PHP): https://www.paypal.com/us/cgi-bin/webscr?cmd=p/xcl/rec/pdt-code-outside
Если я закомментирую POST обратно, все будет нормально. Я могу определить проблему, как только код входит в цикл while {}. К сожалению, я недостаточно опытен, чтобы написать замену для кода PayPal с нуля, поэтому буду очень признателен за любые идеи о том, что может быть не так.
POST возвращается на ssl: //www.sandbox.paypal.com, и я использую код кнопки и токен авторизации, которые были созданы с помощью тестовой учетной записи песочницы.
Заранее спасибо.
UPDATE:
Я сузил задачу до этой строки: $line = fgets($fp, 1024);
Он просто зависает, и я не знаю, почему.