已收到 SetExpressCheckout 令牌,但沙盒声称交易已过期

Posted

技术标签:

【中文标题】已收到 SetExpressCheckout 令牌,但沙盒声称交易已过期【英文标题】:SetExpressCheckout token received but Sandbox claims transaction has expired 【发布时间】:2016-03-16 21:50:13 【问题描述】:

我一直在尝试使用 C# Paypal API 处理一个非常简单的快速结帐沙盒交易,但在重定向后,Paypal 网站上不断出现会话超时错误。

我要强调的是,我从 SetExpressCheckout 获得了成功的 ACK 响应以及 Token 字符串。

这是我一直尝试重定向到的结帐 URL 示例:

https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-9RY2628262462061J

我的返回地址是 localhost,但我在 Sandbox 中看不到任何地方会出现问题。

在尝试重定向到沙盒时,我到达的不是结帐 URL,而是这个地址:

https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_flow&SESSION=CzvBHQErPEHw5gOt51FV88G_4L9HUCLypeGkwVZLW6mkWsZOofIpFR2K6Aa&dispatch=50a222a57771920b6a3d7b606239e4d529b525e0b7e69bf0224adecfb0124e9b61f737ba21b081984719ecfa9a8ffe80733a1a700ced90ae

并看到以下错误消息:

“此交易已过期。请返回收件人的网站以使用他们的常规结帐流程完成您的交易。”

当 [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);
        

【问题讨论】:

【参考方案1】:

EC 令牌仅持续 3 小时。您必须调用 SetEC API 以获取新的 EC 令牌并继续结帐流程。

【讨论】:

不过,如上所述,在调用 SetExpressCheckout 并获得令牌后,我立即将用户重定向到 Paypal。你知道为什么在这种情况下我会收到会话超时错误吗?【参考方案2】:

我不太明白为什么 SOAP API 调用会生成一个被 Paypal 拒绝的令牌,但我发现如果我使用 SDK 生成付款,我能够到达沙盒付款页面。

这并不是一次启发性或教育性的经历......

【讨论】:

以上是关于已收到 SetExpressCheckout 令牌,但沙盒声称交易已过期的主要内容,如果未能解决你的问题,请参考以下文章

Paypal Express 结帐:10410 令牌无效

Paypal“SetExpressCheckout”API 方法已停止使用沙盒卖家账户

Paypal SetExpressCheckout 数字商品

Paypal SANDBOX SetExpressCheckout 停止工作

SetExpressCheckout Paypal API:对数字商品使用“实体”类别

PayPal SetExpressCheckout 在实时服务器上失败