我一直在尝试使用C#Paypal API处理非常简单的快速结账沙盒交易,但在重定向后,Paypal网站上的会话超时错误仍然存在。
我应该强调一下,我从SetExpressCheckout获得了一个成功的ACK响应以及一个令牌字符串。
以下是我尝试重定向到的结帐网址的示例:
https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-9RY2628262462061J
我的回复地址是localhost,但我无法看到这在Sandbox中存在任何问题。
在尝试重定向到沙盒时,我不会到达结帐网址,而是在此地址:
并看到以下错误消息:
"此交易已过期。请返回收件人的网站,使用他们的常规结帐流程完成您的交易。"
当[1]我有一个成功的API响应和一个令牌时,如何才能超时; [2]我在获得令牌后立即重定向到那里。
有没有人知道这里发生了什么?
如果它有帮助,那么我写的是用来访问API的C#。如上所述,我获得了成功的ACK响应和一个令牌。
try
{
var details = ToPaymentDetails(data);
var request = new SetExpressCheckoutReq();
request.SetExpressCheckoutRequest = new SetExpressCheckoutRequestType
{
SetExpressCheckoutRequestDetails = details,
Version = Version
};
var result = await client.SetExpressCheckoutAsync(credentials, request);
var response = result.SetExpressCheckoutResponse1;
FailOnError(response);
return Result.Success(response.Token);
}
catch (Exception ex)
{
return Result.Error<string>("Received an error from Paypal.SetExpressCheckout.", exception: ex);
}
答案 0 :(得分:0)
EC令牌仅持续3个小时。您必须回忆SetEC API以获取新的EC令牌并继续结帐流程。
答案 1 :(得分:0)
我不太了解为什么SOAP API调用会生成被Paypal拒绝的令牌,但我发现如果我使用SDK生成付款,我就可以访问Sandbox付款页面。
这并不具备启发性或教育性的经验......