贝宝:在上下文快速结帐后留在页面上

Posted

技术标签:

【中文标题】贝宝:在上下文快速结帐后留在页面上【英文标题】:paypal: stay on page after in-context express checkout 【发布时间】:2015-11-15 01:00:51 【问题描述】:

用户通过 In-context Express Checkout 付款后,PayPal 会重新加载页面并将用户重定向到后端“returnUrl”参数指定的页面。

但是,这将删除当前页面。

有没有办法避免在成功结帐后重新加载页面?

【问题讨论】:

这确实是一个非常需要的功能。单页应用程序不需要或不希望刷新/重定向等。PayPal In-Context 似乎已经考虑了一半,因为没有考虑 SPA! 目前被这个问题难住了,paypal 似乎暗示这是可能的paypal.com/webapps/mpp/digital-goods >> '它是如何工作的' 【参考方案1】:

在您的网页中添加一个 iframe 并使用该 iframe 启动该过程。由于 iframe 是启动 PayPal 上下文窗口的窗口,因此 iframe 将被重定向到您的 returnURL。因此,您的原始页面将保持在调用、变量和所有内容之前的确切状态。

这是一个例子......

我有一个名为 paypaliframe 的不可见 iframe 的 checkout.html。 paypaliframe中没有UI,只包含了PayPal相关的js函数。

在checkout.html页面中,在选中PayPal作为“付款”选项时,我单击“查核”按钮。 “onclick”事件告诉 iframe 设置事务:

paypaliframe.contentWindow.setupAutorization()

iframe 执行 setupAutorization() 函数,从 Paypal 获取交易令牌,然后开始上下文结帐流程:

paypal.checkout.initXO();
paypal.checkout.startFlow(paypal.checkout.urlPrefix + token)

现在显示上下文中的结帐窗口,我们看到新窗口重定向到 PayPal 站点。客户输入他的登录信息,同意您的交易,然后 Paypal 将 iframe 重定向到您的 returnUrl。

在 iframe 中加载 returnURL 页面后,您只需告诉父页面执行以下步骤:

$(window).load(function() 
    parent.continueAfterPaypal();
);

TLDR;使用 iframe 启动上下文结帐,然后使用 iframe returnURL 页面告诉父级从停止的地方继续。

【讨论】:

以上是关于贝宝:在上下文快速结帐后留在页面上的主要内容,如果未能解决你的问题,请参考以下文章

如何为贝宝上下文快速结帐创建反应组件?

使用贝宝快速结帐完成付款后如何获取授权ID

从结帐页面中删除贝宝快速结帐单选按钮

如何以访客身份启用贝宝快速结帐

快速结帐继续加载,并没有返回给商家

Woocommerce 结帐页面上的额外贝宝费用