2017-03-02 44 views
0

我有这个代码工作6个月。现在,它停止工作。我花了2天的PayPal支持,Stackoverflow q/a,谷歌...我希望老实说,这不是一个重复的问题,但我真的在Stackoverflow上搜索了2天,并没有找到答案。ASP经典IPN监听器工作,现在不

通过本地测试,它产生了200个答案和INVALID,这对于沙盒来说是完美的。当我转到PayPal上的IPN模拟器时,它总是返回红色。帮助我Obi Wan Kanobi =>你是我唯一的希望!感谢您提供任何帮助。

我减少了代码:

paypal_url = "https://www.paypal.com/cgi-bin/webscr" 

    strResponse = "cmd=_notify-validate&" & Request.Form 

    set objHttp = Server.CreateObject("Msxml2.ServerXMLHTTP") 
    objHttp.open "POST", paypal_url, false 
    objHttp.setRequestHeader "Content-type", "application/x-www-form-urlencoded" 
    objHttp.Send strResponse 

    if (objHttp.status <> 200) then 
     str = "ERROR 200" 
    elseif (objHttp.responseText = "VERIFIED") then 
     str = "VERIFIED" 
    elseif (objHttp.responseText = "INVALID") then 
     str = "INVALID" 
    else 
     str = "ERROR GENERAL" 
    end if 

    set objHttp = nothing 
+0

没有承诺,但尝试'Server.CreateObject(“Msxml2.ServerXMLHTTP.6.0”)' – John

+0

此外,还有一个可能相关的专家交换问题。 https://www.experts-exchange.com/questions/28937989/Msxml2-ServerXMLHTTP-6-0-not-using-TLS1-2-in-Windows-Server-2012.html – John

+0

我认为可能有问题IPN模拟器。我注意到,如果我放入一个不存在的URL,我会得到相同的IPN未发送错误。看看你的网络日志,看看你是否从sandbox.paypal.com得到任何东西。它可能不会送你任何东西!此外,你是否尝试过做测试支付(sandbox.paypal.com)或实际支付(paypal.com),看看你是否听到了IPN消息。 – JBart

回答

0

我敢肯定的IPN模拟器不工作。我用这个创建了一个脚本

<?php 
    date_default_timezone_set('America/Los_Angeles'); 
    ini_set('error_log', 'ipn_errors.log'); 
    $fp = fopen('.log', "a"); 
    fwrite($fp, date("\tY-m-d H:i:s") . "\n"); 
    foreach ($_REQUEST as $key => $value) { 
     fwrite($fp, "$key\t$value\n"); 
    } 
    fwrite($fp, "--\n"); 
    fclose($fp); 

    header("HTTP/1.1 200 OK"); 
?> 

并指出IPN模拟器。它不写入.log,它不被调用。