2013-03-08 7 views
-1

Вчера утром, до того как Paypal обновил свой сайт-разработчик, я смог успешно отправить тестовые сообщения IPN с помощью симулятора, когда работал над созданием сценария прослушивания IPN. После того, как они изменили сайт, симулятор теперь возвращает ошибки http 401 для одного и того же сценария. Я ничего не менял в конце и даже пытался позвонить в службу поддержки Paypal. Техник сказал, что он не знал о каких-либо проблемах или изменениях в IPN, когда они обновляли свой сайт. Мой скрипт - классический asp.Инициатор IPN, возвращающий ошибку 401

Я также попытался использовать один из демо-скриптов, доступных на сайте dev как в PHP, так и в ASP.NET, и получил тот же код ошибки 401. Я хостинг с GoDaddy на платформе Windows, но, как я уже сказал, все отлично работало до изменения сайта.

У кого-нибудь еще была эта проблема? Любые рекомендации? Ниже приведен код, который я использую на своей странице.

<%@LANGUAGE="VBScript"%> 
<% 
Dim Item_name, Item_number, Payment_status, Payment_amount 
Dim Txn_id, Receiver_email, Payer_email 
Dim objHttp, str 

'read post from PayPal system and add 'cmd' 
str = Request.Form & "&cmd=_notify-validate" 

'post back to PayPal system to validate 
'PayPal Sandbox settings 
set objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP") 
'set objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP.4.0") 
'set objHttp = Server.CreateObject("Microsoft.XMLHTTP") 
'PayPal Sandbox settings 
objHTTP.Open "POST", "https://www.sandbox.paypal.com/cgi-bin/webscr" , false 
objHTTP.setRequestHeader "Host", "www.sandbox.paypal.com" 
objHttp.setRequestHeader "Content-type", "application/x-www-form-urlencoded" 
objHttp.Send str 


'assign posted variables to local variables 
Item_name = Request.Form("item_name") 
Item_number = Request.Form("item_number") 
Payment_status = Request.Form("payment_status") 
Payment_amount = Request.Form("mc_gross") 
Payment_currency = Request.Form("mc_currency") 
Txn_id = Request.Form("txn_id") 
Receiver_email = Request.Form("receiver_email") 
Payer_email = Request.Form("payer_email") 

'Check notification validation 
if (objHttp.status <> 200) then 
'HTTP error handling 
elseif (objHttp.responseText = "VERIFIED") then 
'check that Payment_status=Completed 
'check that Txn_id has not been previously processed 
'check that Receiver_email is your Primary PayPal email 
'check that Payment_amount/Payment_currency are correct 
'process payment 
elseif (objHttp.responseText = "INVALID") then 
'log for manual investigation 
else 
'error 
end if 
Set objHttp = nothing 
%> 
+0

Я просто хотел поделиться тем, что проблема была решена со стороны Paypal. После исправления проблем, связанных с симулятором Sandbox и IPN, мои ошибки HTTP 401 исчезли. Надеюсь, это поможет и другим. –

ответ

0

Да, это проблема, которая в настоящее время изучается. Данные, генерируемые симулятором IPN, по-видимому, вызывают ответ HTTP 400 на www.paypal.com/www.sandbox.paypal.com, когда вы проверяете данные IPN против него. Держитесь крепко, пока мы это фиксируем. Извиняюсь за любые проблемы, которые это вызывает для вас.

Редактировать:
Причина, по-видимому, является неправильной «cmd =» внутри данных IPN POST. Это приводит к тому, что наша служба проверки IPN возвращает HTTP 400.
Вы можете либо удалить только « cmd =» из ваших данных POST IPN, либо если вы можете немного подождать, мы выталкиваем исправление для это для производства как можно скорее.

+0

Спасибо за полезный ответ. Моя проблема, однако, связана с ошибками 401, а не с 400 ошибками. Я попробовал ваше временное исправление с удалением «& cmd =» из моего сценария, и я все еще получаю несанкционированную ошибку 401. У меня не было этой проблемы до изменения сайта разработчика. Это что-то, что мне нужно будет ждать, пока PP фиксирует их конец? Еще раз спасибо. –

+0

Ах, извинения. Я предположил, что это опечатка. Можете ли вы изменить свой вопрос, чтобы включить полный HTTP-запрос и ответ, пожалуйста? – Robert

+0

Честно говоря, я не уверен, как включить полный HTTP-запрос и ответ. Я просто использовал этот скрипт перед обновлением, чтобы проверить работу функции IPN. Я был бы рад включить информацию, в которой вы нуждаетесь, я просто не знаю, как отдать ее вам. –

0

Тот же вопрос здесь,

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

Смежные вопросы