贝宝上下文结账恢复为经典快速结账

paypal in-context checkout reverts back to classic express checkout

我一直在尝试将我们的经典快速结账切换为上下文快速结账。

按照指示,我已将 URL 切换为 https://www.paypal.com/checkoutnow/

这是购物车中的 HTML 片段:

<div class="col-md-6">
 <a id="paypalcheckout" href="paypal_checkout/PostToPaypal.cfm?orderidentifier=XXXX">
    <img class="paypal-button-hidden" src="/img/paypal.png" alt="" class="img-responsive center-block"/>
 </a>
</div>

<script> 
  window.paypalCheckoutReady = function() {
     paypal.checkout.setup("ZZZZ", {locale: 'en_US', environment: 'sandbox', button: ['paypalcheckout']}); 
 } 
</script>
<script async src="//www.paypalobjects.com/api/checkout.js"></script>

PostToPaypal.cfm 发出必要的 api 请求并取回 EC 代码,然后重定向到此 link:

https://www.sandbox.paypal.com/checkoutnow/2?incontext=1&token=EC-YYYY

单击会导致弹出窗口 window,主要 window 变暗。但几秒钟后,弹出 window 使主页转到经典结帐并关闭。它让我继续使用旧方法成功结帐。所以我知道 EC 编号是正确的。任何人都可以帮助我了解我需要做什么才能使上下文结帐工作吗?提前谢谢你。

我遇到了完全相同的问题。

原来是在服务端设置中解决。 在 paypalfunctions.php 文件(PayPal 自己为我生成)中,有几行您需要删除,与它有关的行是 digital 项目。 查找类似的行:

$nvpstr .= "&L_PAYMENTREQUEST_0_ITEMCATEGORY" . $index . "=Digital";

可能会重复几次。 基本上,数字商品不允许通过上下文结账,这就是我遇到重定向问题的原因。

我在将 LANDINGPAGE 设置为 Billing 时遇到了同样的问题。

在这种特殊情况下,沙箱会恢复为经典的快速结账版本。 在生产中,LANDINGPAGE 参数的 Billing 和 Login 值都会导致正确的弹出窗口 window.

对我来说,问题是获取交易 ID 时的 CALLBACK 参数。当我删除它时,它起作用了。

我必须删除这些参数才能让它工作

FlatRateShippingOptions 
cppHeaderImage
CallbackURL
CallbackTimeout