Вчера утром, до того как 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
%>
Я просто хотел поделиться тем, что проблема была решена со стороны Paypal. После исправления проблем, связанных с симулятором Sandbox и IPN, мои ошибки HTTP 401 исчезли. Надеюсь, это поможет и другим. –