gpt4 book ai didi

paypal - 带有安全 token 和透明重定向的 Payflow Gateway - 返回 URL 问题

转载 作者:太空宇宙 更新时间:2023-11-03 16:07:19 25 4
gpt4 key购买 nike

我已经构建了一个客户端(在 .NET 中,但它可以在任何框架中)以使用透明重定向和安全 token 功能使用 Payflow Gateway NVP API。我能够接收 token ,发送信用卡数据,并从 PayPal 收到批准的响应。问题是 PayPal 没有正确重定向回我的网站。我在请求安全 token 时传递了一个 RETURNURL ( http://localhost:49881/transaction/details?processor=PayflowGateway ) 参数,但它没有在交易后返回该 URL,而是将我的浏览器导航到以下 URL:

https://pilot-payflowlink.paypal.com/http%3A%2F%2Flocalhost%3A49881%2Ftransaction%2Fdetails%3Fprocessor%3DPayflowGateway?POSTFPSMSG=No%20Rules%20Triggered&RESPMSG=Approved&ACCT=1111&COUNTRY=US&PROCCVV2=M&VISACARDLEVEL=12&CVV2MATCH=Y&CARDTYPE=0&PNREF=A70A8EB8B6A1&AVSDATA=XXN&SECURETOKEN=9eGKZsSldEU6mIdSEV5DB4wWd&PREFPSMSG=No%20Rules%20Triggered&SHIPTOCOUNTRY=US&AMT=14.75&SECURETOKENID=1850a8f2-f180-4474-aa31-35d736fd7921&TRANSTIME=2016-03-24%2007:58:48&HOSTCODE=A&COUNTRYTOSHIP=US&RESULT=0&BILLTOCOUNTRY=US&AUTHCODE=872PNI&EXPDATE=1218

我曾尝试删除“?processor=PayflowGateway”来修复 URL 中的多个问号问题,但这似乎没有帮助。我也尝试过用 xx 标记 RETURNURL[xx] 作为 URL 值的长度,但这似乎与根本不传递 RETURNURL 相同,因为它只是在 paypal.com 上显示确认页面而不是重定向回来到我的网站。

在 PayPal 管理器中,我将“显示确认页面”设置为“在我的网站上”,将返回 URL 设置为空白,并将返回 URL 方法设置为 GET。我是否需要更改任何其他设置或 API 请求才能使其正确返回到我的测试站点?

最佳答案

造成此问题的原因是您对从 payflowpro 网关请求安全 token 时传递的 RETURNURL 参数进行了 URL 编码。

请参阅 Integration Guide 上的不要对名称-值参数数据进行 URL 编码部分.

此外,here您可以获得一些可以使用的 C# 代码。

以及有关 PayPal HTTP 的一些指南 here .

请勿使用 System.Net.Http.HttpClientSystem.Net.WebClient 进行 HTTP POST 以请求安全 token 。而是使用低级别的 System.Net.WebRequest 能够写入未编码的 POST 数据。

例如:

private string RequestSecureToken(double amount)
{
var secureTokenId = Guid.NewGuid().ToString();
var requestId = Guid.NewGuid().ToString();
var pairs = new Dictionary<string, string>()
{
{"PARTNER", "PayPal"},
{"VENDOR", "VENDOR NAME"},
{"USER", "USER NAME"},
{"PWD", "PASSWORD"},
{"TRXTYPE", "S"},
{"AMT", amount.ToString()},
{"CREATESECURETOKEN", "Y"},
{"SECURETOKENID", secureTokenId},
{"SILENTTRAN", "TRUE"},
{"RETURNURL", "http://mycompany.com/success"},
{"ERRORURL", "http://mycompany.com/error"}
};
string postData = string.Join("&", pairs.Select(p => string.Format("{0}[{2}]={1}", p.Key, p.Value, p.Value.Length)));
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://pilot-payflowpro.paypal.com");
request.Method = "POST";
request.ContentType = "text/namevalue";
request.Headers.Add("X-VPS-CLIENT-TIMEOUT", "45");
request.Headers.Add("X-VPS-REQUEST-ID", requestId);
request.ContentLength = postData.Length;
using (var writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write(postData);
}
//Get the response
var response = request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
return reader.ReadToEnd();
}
}

关于paypal - 带有安全 token 和透明重定向的 Payflow Gateway - 返回 URL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36203688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com