Paypal PDT向我的HTTP post请求C#MVC返回Fail always

本文关键字:C#MVC 返回 Fail always 请求 post PDT 我的 HTTP Paypal | 更新日期: 2024-10-23 22:18:19

我面临着一个非常奇怪的问题,在成功的支付交易后,我无法获得带有returningUrl的TransactionId。由于Paypal自动将我重定向到我在PDT设置页面中提到的ReturnUrl,并且Paypal将traactionId附加到这个名为tx的returningUrl,并使用该traactionId向这个Url 发出Post请求

https://www.sandbox.paypal.com/cgi-bin/webscr

但问题是我无法获得交易ID?在这个问题上,任何一个帮助我的人都会有什么问题。这是我用来进行HTTP发布请求的代码。

string authTokenTest = "sMfRi9rJN3AjqsejnMxFfkeIwhwrCmVZz3nplUy9V6a9Yq0_2YdugSvZYNa";
            //used this but could not retrieved "tx" 
            //string txToken = Request.QueryString.Get("tx"); 
            //Then used this but no use
            var queryValues = HttpUtility.ParseQueryString(Request.Url.Query);
            var txToken = queryValues["tx"];
            string query = string.Format("cmd=_notify-synch&tx={0}&at={1}", txToken, authTokenTest);
            //// Create the request back

            string strSandbox = "https://www.sandbox.paypal.com/cgi-bin/webscr";
            string url = strSandbox;
            /// to use HTTP 1.1 and TLS 1.2
            ServicePointManager.Expect100Continue = true;
            ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072;
            ServicePointManager.DefaultConnectionLimit = 9999;
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            // Set values for the request back
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded";
            req.ContentLength = query.Length;
            // Write the request back IPN strings
            StreamWriter stOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
            stOut.Write(query);
            stOut.Close();
            // Do the request to PayPal and get the response
            HttpWebResponse payResp = (HttpWebResponse)req.GetResponse();
            StreamReader sr = new StreamReader(payResp.GetResponseStream());
            string strResponse = sr.ReadToEnd();
            sr.Close();

如果我通过浏览器直接请求该URL,并附加TransactionId和IdentityToken,那么我会得到成功响应,但这样我就不会得到TransactionId,我的响应总是失败。请帮我解决这个问题。我的代码中可能存在什么问题或解决此问题的任何其他问题。谢谢你抽出时间。

Paypal PDT向我的HTTP post请求C#MVC返回Fail always

我使用MVC,因此使用模型绑定从查询字符串中获取tx值。但我不认为这是你的问题。

必须设置返回URL,正如您所说的那样。此外,PDT必须在指定URL的同一位置打开。此外,不幸的是,如果客户使用信用卡而不是PayPal账户,他们将不会自动返回到您的网站。

我正在实施IPN,因为信用卡客户可能不会返回网站。