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,我的响应总是失败。请帮我解决这个问题。我的代码中可能存在什么问题或解决此问题的任何其他问题。谢谢你抽出时间。
我使用MVC,因此使用模型绑定从查询字符串中获取tx值。但我不认为这是你的问题。
必须设置返回URL,正如您所说的那样。此外,PDT必须在指定URL的同一位置打开。此外,不幸的是,如果客户使用信用卡而不是PayPal账户,他们将不会自动返回到您的网站。
我正在实施IPN,因为信用卡客户可能不会返回网站。