2

因此,我阅读了 IPN 文档,并且阅读了我找到的大量示例。我尝试了几种不同的解决方案,但在它们不起作用后,我只是简单地复制并粘贴了 PayPal IPN 页面上记录的内容。因此,它仍然无法正常工作。我的 IPN 历史显示它正在继续重新发送消息。下面的代码 - 缺少什么?

protected void Page_Load(object sender, EventArgs e)
    {
        const string postUrl = "https://www.paypal.com/cgi-bin/webscr";
        var req = (HttpWebRequest)WebRequest.Create(postUrl);

        //Set values for the request back
        req.Method = "POST";
        req.ContentType = "application/x-www-form-urlencoded";
        var param = Request.BinaryRead(HttpContext.Current.Request.ContentLength);
        var strRequest = Encoding.ASCII.GetString(param);
        var ipnPost = strRequest;
        strRequest += "&cmd=_notify-validate";
        req.ContentLength = strRequest.Length;

        //for proxy
        //WebProxy proxy = new WebProxy(new Uri("http://url:port#"));
        //req.Proxy = proxy;

        //Send the request to PayPal and get the response
        var streamOut = new StreamWriter(req.GetRequestStream(), Encoding.ASCII);
        streamOut.Write(strRequest);
        streamOut.Close();

        // ReSharper disable AssignNullToNotNullAttribute
        var streamIn = new StreamReader(req.GetResponse().GetResponseStream());
        // ReSharper restore AssignNullToNotNullAttribute
        var strResponse = streamIn.ReadToEnd();
        streamIn.Close();

        // logging ipn messages... be sure that you give write
        // permission to process executing this code
        //

        if (strResponse == "VERIFIED")
        {
            //check the payment_status is 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
            var mailer = new Emailer();
            mailer.SendMail("from@domain.com", "to@domain.com", "Thank you!",
                            "Thank you for your sponsorship. Good luck on your results!<br /><br />" + ipnPost);
        }
        else if (strResponse == "INVALID")
        {
            //log for manual investigation
        }
    }
4

1 回答 1

0

原来这是我的电子邮件发件人的错误。我发送的地址未在我的 AWS 账户中验证。

于 2012-08-29T13:48:27.780 回答