Я использую следующий класс для обработки данных IPN: https://github.com/WadeShuler/PHP-PayPal-IPN (и это работает прекрасно подходит для возрастов)Paypal IPN теперь возвращает INVALID - PHP код ранее работал прекрасный
Последний успешно обработал платеж был на 28 сентября следующий платеж IPN, который пришел, хотя 5 октября вернулся ответ INVALID, как и каждый платеж с тех пор.
Если я тестирую в симуляторе IPN, сообщение успешно обрабатывается. Песочница или Live, ответ НЕВЕРНЫЙ. Я бы подумал, что у Sandbox есть объект, где я могу проверить, почему сообщение было отклонено как INVALID, но похоже, что это не так? Конечно, был бы простой способ увидеть причину отказа, я что-то упустил?
Ссылка, которая приносит вам Paypal от моего сайта:
https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_ext-enter&redirect_cmd=_xclick&[email protected]&item_name=QLD++%28Pacific+pines+secondary+Sat+25th+July+%29&item_number=FYD15000003&custom=0001000003¤cy_code=AUD&amount=0.01&no_shipping=1&image_url=http://www.fydentry.com/img/follow-your-dreams-100.jpg&return=http://www.fydentry.com/entry-test.php&cancel_return=http://www.fydentry.com/entry-test.php¬ify_url=http://www.fydentry.com/payback-test.php
Данные, размещенные назад от Paypal является:
transaction_subject = 0001000003 & txn_type = web_accept & payment_date = 07% 3A05% 3A07 + окт. + 15% 2C + 2015 + PDT & last_name = покупатель & residence_country = AU & pending_reason = multi_currency & item_name = QLD ++% 28Pacific + сосны + вторичный + СБ + двадцать пятый + июля +% 29 & payment_gross = & mc_currency = AUD & бизнес = продаж, ведущий% 40fydentry.com & payment_type = мгновенная & protection_eligibility = Ineligible & verify_sign = Acssfl2b2v1gxOK33TD2StcDhf-OAZxwix74kxFlSgpWMku6myuy.WFL & payer_status = проверен & test_ipn = 1 & налога = 0,00 & payer_email = продажа-покупатель% 40fydentry.com & txn_id = 9BV63134E20871700 & количество = 1 & receiver_email = продажа-фасилитатор% 40fydentry.com & first_name = тест & payer_id = FY3RYW98GNMXG & receiver_id = 95FC3QCK53MHC & ITEM_NUMBER = FYD15000003 & handling_amount = 0,00 & payment_status = До & доставка = 0,00 & mc_gross = 0,01 & пользовательские = 0001000003 & кодировок = окна-1252 & notify_version = 3,8 & ipn_track_id = cfbd422d97d69
ответ я отправить обратно в Paypal является:
CMD = _notify-проверки & transaction_subject = 0001000003 & txn_type = web_accept & PAYMENT_DATE = 07% 3A05% 3A07 + октября + 15% 2C + 2015 + PDT & last_name = покупатель & residence_country = AU & pending_reason = multi_currency & item_name = QLD ++% 28Pacific + сосны + вторичные + сб + 25 + июль +% 29 & payment_gross = & mc_currency = AUD & business = sales-facator% 40fydentry.ком & payment_type = мгновенная & protection_eligibility = Ineligible & verify_sign = Acssfl2b2v1gxOK33TD2StcDhf-OAZxwix74kxFlSgpWMku6myuy.WFL & payer_status = проверено & test_ipn = 1 & налог = 0,00 & payer_email = продажи-покупатель% 40fydentry.com & txn_id = 9BV63134E20871700 & количество = 1 & receiver_email = продажи-фасилитатор% 40fydentry.com & first_name = тест & payer_id = FY3RYW98GNMXG & receiver_id = 95FC3QCK53MHC & ITEM_NUMBER = FYD15000003 & handling_amount = 0,00 & payment_status = До & доставка = 0,00 & mc_gross = 0,01 & пользовательские = 0001000003 & кодировок = окна-1252 & notify_version = 3,8 & ipn_track_id = cfbd422d97d69
И код в окупаемости-test.php является:
<?php
include_once("f_common.php");
include_once("IpnListener.php");
use wadeshuler\paypalipn\IpnListener;
$listener = new IpnListener();
$listener->use_sandbox = true;
$dbh = open_db();
$res = 'UNKNOWN';
try {
$listener->requirePostMethod();
$verified = $listener->processIpn();
} catch (Exception $e) {
error_log($e->getMessage());
exit(0);
}
if ($verified) {
$res = "VERIFIED";
} else {
$res = "INVALID";
}
$stmt_debug = $dbh->prepare('INSERT INTO fyd_paypal_ipn (post_data, response_data, status, message_time) VALUES (:post_data, :response_data, :status, UTC_TIMESTAMP())');
$stmt_debug->execute(array(':post_data' => $listener->rawPostData, ':response_data' => $listener->debug_response, ':status' => $res));
?>
Обратите внимание, что для цель этого упражнения, я также изменил класс IpnListener, чтобы получить копию ответа для целей отладки.
В верхней части файла в объявлениях переменных, я сделал $ rawPostData общественности, и добавили эту переменную:
public $debug_response;
И хранить значение перед мы используем его:
$this->debug_response = $req;
if ($this->use_curl) {
$res = $this->curlPost($req);
} else {
$res = $this->fsockPost($req);
}
Я предполагаю, что что-то изменилось на стороне Paypal, чтобы остановить это в первую очередь, но я не вижу, что это такое, особенно, поскольку мой ответ кажется правильным (идентичным), и я не могу найти что-либо в сторона Sandbox, которая помогает мне определить, почему она считается недействительной? К сожалению, код отладки внизу, где я отслеживаю данные и ответные сообщения IPN, является новым, поэтому у меня нет более старого (рабочего!) Набора сообщений для сравнения содержимого.
Damb ваш сайт нуждается в серьезной работы CSS. –
Css стоит каждого цента, за который моя жена платила за него :) Да, это куда-то куда-то делать. –
Удачи и отличная идея –