Вопрос

Я провожу ужасное время, внедряя шлюз Payments Pro в Paypal, и мне интересно, сталкивались ли у кого-нибудь подобные проблемы, которые могли бы дать мне некоторое представление?

Мы используем PHP и пытаемся взаимодействовать через код paypalfunctions.php, сгенерированный на их собственном веб-сайте Integrationwizard.x.com.В оригинале была ошибка (подтвердите в отчете), из-за которой соединение пилотного проекта и действующего веб-сайта было отменено, поэтому моя уверенность в этом изначально была низкой.Однако я реализовал код, и теперь шлюз принимает живые платежи — ну, часть времени.В большом количестве случаев платеж отклоняется с сообщением о «недопустимом коде страны».

Записывая строку запроса непосредственно перед вызовом внутри собственного кода Paypal и возвращаемый результат сразу после возврата, я могу продемонстрировать, что строка, переданная в Paypal, действительно правильна.Сами PayPal это признают, но видят усеченные значения, цитирую.

«Хорошо, это действительно немного странно.Ваша строка NVP кажется правильной, но мы получаем периодическое усечение кода страны, поэтому, например, для GB мы иногда ничего не получаем, G, B или GB при успешных платежах.Это не оставляет много места для определения проблемы — можете ли вы поискать в журналах сервера запросы, поступающие к нам?"

Это также странно, потому что переданная строка содержит код страны, встроенный в ее центр - например (с измененными личными данными)

USER=ZUTRB8C4OQ&VENDOR=OSO47W6EJP&PARTNER=PayPalUK&PWD=JITCMJA8VAN6YBMP&TENDER=C&TRXTYPE=S&ACCT=XXXXXXXXXXXXXXXX&CVV2=646&EXPDATE=0512&ACCTTYPE=Visa&AMT=55.60&CURRENCY=GBP&FIRSTNAME=John&LASTNAME=Smith&STREET=9/2 Oaklands Hill&CITY=Edinburgh&STATE=&ZIP=EH11AAA&COUNTRY=GB&CLIENTIP=82.19.219.153&ORDERDESC=The  Order&VERBOSITY=MEDIUM&BUTTONSOURCE=PF-CCWizard

Это наводит меня на мысль, что проблема в том, как анализируется или обрабатывается эта строка.У нас есть примеры строк NVP, которые принимаются и отклоняются, и их макет идентичн, и даже один случай, когда одна и та же карта отклоняется на разных IP-адресах.

У кого-нибудь еще был подобный опыт?

ОБНОВЛЯТЬ:При проверке сервера (это общий хостинг) я обнаружил большой журнал ошибок, почти полностью состоящий из строк типа

[08-Jul-2009 10:14:27] PHP Warning:  PHP Startup: Unable to load dynamic library
'/usr/local/lib/php/extensions/no-debug-non-zts-20060613/sqlite.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20060613/sqlite.so: undefined symbol: php_pdo_unregister_driver in Unknown on line 0

Насколько мне известно, очевидной связи между библиотекой sqlite и Curl нет, но это означает, что PHP настроен неправильно, и может ли это вызвать какие-то случайные ошибки, где вы видите?

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

Решение

Я загрузил копию файла paypalfunctions.php, но он не отправляет строки.Вместо этого он использует Curl с параметром CURLOPT_POSTFIELDS для отправки всех переменных в виде HTTP POST (отдельные поля в теле POST) вместо длинной строки GET.

Я предлагаю использовать что-то вроде tcpdump и Викешарк чтобы зафиксировать и просмотреть то, что на самом деле отправлено на PayPal.Если вы снова столкнетесь с той же проблемой, вы можете показать им tcpdump, чтобы показать, что вы действительно отправили правильную строку.

ПС:Обратите внимание: если вы отправили его согласно журналам TCP, это еще не означает, что PayPal действительно его получит.Я хорошо помню, как выискивал странную проблему с HTTP POST у моего бывшего работодателя.Мой дамп TCP сказал, что я отправил его.Их дамп TCP сказал, что они его не получили.Спустя несколько недель выяснилось, что на полпути между нами и ними был неправильно настроенный прозрачный прокси-сервер.Он случайно включил глубокую проверку пакетов для удаления определенных частей форм HTTP POST.«Упс», — сказал сетевой провайдер.

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