Что вызывает сбой моего сценария IPP PayPal? - PullRequest
4 голосов
/ 25 января 2010

Я получаю следующее из сценария PayPal IPN. Из следующего видно, что вызывает сбой транзакции IPN? Если нет, то как я могу исследовать проблему дальше?

[01/25/2010 7:49 PM] - FAIL: IPN Validation Failed.
IPN $_POST variables from PayPal:
mc_gross=25.00
protection_eligibility=Ineligible
address_status=unconfirmed
payer_id=AEVB83JZKDRCL
tax=0.00
address_street=1 Main Terrace
payment_date=10:49:52 Jan 25, 2010 PST
payment_status=Pending
charset=windows-1252
address_zip=W12 4LQ
first_name=Test
address_country_code=GB
address_name=Test User
notify_version=2.9
custom=
payer_status=unverified
address_country=United Kingdom
address_city=Wolverhampton
quantity=1
verify_sign=A0I1KzEZadt6mIDXxQkkIQCQKPTMAGvCuZ8RKXsOCujIi.RoMxAnbZXi
payer_email=test1_1263505944_per@mcbwebdesign.co.uk
txn_id=38A45069EV5838100
payment_type=instant
last_name=User
address_state=West Midlands
receiver_email=martin@mcbwebdesign.co.uk
pending_reason=unilateral
txn_type=web_accept
item_name=Ultimate Challenge UK Ressurection  Standard Seating (25.00 GBP)
mc_currency=GBP
item_number=
residence_country=GB
test_ipn=1
handling_amount=0.00
transaction_subject=Ultimate Challenge UK Ressurection  Standard Seating (25.00 GBP)
payment_gross=
shipping=0.00


IPN response from PayPal server:
 HTTP/1.1 200 OK
Date: Mon, 25 Jan 2010 18:49:56 GMT
Server: Apache
Set-Cookie: cwrClyrK4LoCV1fydGbAxiNL6iG=_hMqg4cipUMV6RnPhXQ-05S5HEZk2hx2Yc87bjkBg5dZZLYqHTsxqiYwvU9Hjas5YeKTg9jnkbQYomER3_bjuAIW9f15003nc2FYPzIYqFuCc-Jfz1B8byXHhtrJ6OHyiPlmo0%7cGRbawzJR-iAiebJ1pZJZ3DzypAO4untXvofHa07UaqPHkeOZNQTSoCfMobgODGnxgP6jHW%7cf29zaCIP63s4TuzaT12cEiU-aih_kOHju4cqZ4KPV18bl-LTNlFzFLLGmr_DOhyXznq--m%7c1264445397; domain=.paypal.com; path=/
Set-Cookie: cookie_check=yes; expires=Thu, 23-Jan-2020 18:49:57 GMT; domain=.paypal.com; path=/
Set-Cookie: navcmd=_notify-validate; domain=.paypal.com; path=/
Set-Cookie: navlns=0; expires=Sun, 20-Jan-2030 18:49:57 GMT; domain=.paypal.com; path=/
Vary: Accept-Encoding
Keep-Alive: timeout=5, max=92
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

7
INVALID
0

Ответы [ 4 ]

4 голосов
/ 23 июля 2010

Любой, кто использует класс интеграции PHP Paypal IPN от Мика Каррик и имеет ту же проблему: Переменным и значениям IPN должен предшествовать cmd = _notify-validate. В файле paypal.class.php все наоборот.

Итак, просто замените $post_string = ''; в строке 179 на
$post_string="cmd=_notify-validate";
замена
$post_string .= $field.'='.urlencode(stripslashes($value)).'&';

в строке 181 $post_string .= '&' . $field.'='.urlencode(stripslashes($value));

затем удалите $post_string.="cmd=_notify-validate"; в строке 184, и ваша проблема должна быть решена.

4 голосов
/ 25 января 2010

Вы пробовали инструмент тестирования IPN , чтобы исследовать проблему?

Вы можете использовать его, чтобы воспроизвести форму, которую вы отправляете, и посмотреть, получите ли вы последовательные результаты.

Возможно, вы получите более точные ответы, если точно укажете, в каком контексте он терпит неудачу.

2 голосов
/ 02 июля 2012

Для подключения к песочнице Paypal используйте эту строку:

$fp = fsockopen ('ssl://www.sandbox.paypal.com', 443, $errno, $errstr, 30); 

а не: $fp = fsockopen($url_parsed['host'],"80",$err_num,$err_str,30);

и в ответном IPN отправьте слово " ПРОВЕРЕНО "

Если вы тестируете Paypal IPN через SSL, вам придется использовать ssl://www.sandbox.paypal.com на port 443

0 голосов
/ 30 ноября 2011

@ Доминик, похоже, это тоже решает мои проблемы! Я использовал PHP-класс Md Emran Hasan . И закончил срывать мои волосы в течение недели с этим вопросом!

Так что мое редактирование выглядело так ... где $postString .="cmd=_notify-validate"; // раньше было после цикла while! Этот код был обернут в функцию validateIPN.

    $postString .= "cmd=_notify-validate"; // append ipn command

    foreach ($_POST as $field=>$value)
    {
        $this->ipnData["$field"] = $value;
        $postString .= '&' . $field .'=' . urlencode(stripslashes($value));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...