繁体   English   中英

PayPal灯箱无法在iPhone Safari /网络应用中打开; 'win.location'未定义

[英]PayPal lightbox won't open in iPhone safari/web app; 'win.location' undefined

(在iPhone上的Chrome可以正常运行)

我收到此错误:

TypeError: 'undefined' is not an object (evaluating 'win.location') in dg.js line 3

而且灯箱无法打开。

PayPal的dg.js中有问题的代码为:

startFlow: function (url) {
    var win = that._render();
    if (win.location) {
        win.location = url;
    } else {
        win.src = url;
    }
}

那么移动Safari不理解that._render() 我该如何解决?

如果很重要,我将使用Adaptive Payments ,其调用方式如下:

var dg = new PAYPAL.apps.DGFlow({
    trigger: null, 
    expType: 'light'
});
dg.startFlow('https://www.paypal.com/webapps/adaptivepayment/flow/pay?expType=light&payKey=' +data.paykey);

我获得payKey并没有任何问题,整个payflow可以在台式机和除Safari之外的移动浏览器中使用(它在台式机Safari )。 当我们的网站作为iOS Web应用程序运行时,它也不起作用,我认为它无论如何也只是Safari的外壳。

我可以解释为什么您会看到此错误。 iOS上的Safari仅允许由于用户单击/触摸事件而打开一个窗口。

DGFlow._render()函数执行:

window.open('', "PPDG");

如果是由用户单击/触摸事件以外的任何其他事件触发的,则返回null。

我猜您正在发出XMLHttpRequest以在服务器上生成PayRequest / PayKey,然后在成功回调中调用DGFlow.startFlow()。

解决方案是将过程分为两个步骤,分为两个步骤:

  1. 当用户准备好结帐时,向服务器发出呼叫以生成付款密钥。
  2. 然后,向用户显示一个使用PayPal结帐的按钮,然后单击该按钮,调用DGFlow.startFlow()

找到了几种解决此问题的方法。用PayPal URL或使用您自己的灯箱替换location.replace 我用了easybox

// Replace
dg.startFlow('https://www.paypal.com/webapps/adaptivepayment/flow/pay?expType=light&payKey=' +data.paykey);

// with
var RUNNING_AS_WEB_APP = (window.navigator.standalone == true ? true : false);
if (RUNNING_AS_WEB_APP === false) {
    dg.startFlow('https://www.paypal.com/webapps/adaptivepayment/flow/pay?expType=light&payKey=' +data.paykey);
} else {
    location.replace('https://www.paypal.com/webapps/adaptivepayment/flow/pay?expType=light&payKey=' +data.paykey);
    // Or, lightbox option: 
    // $.easybox([{url: 'https://www.paypal.com/webapps/adaptivepayment/flow/pay?expType=light&payKey=' +data.paykey, width: 320, height: 480}]);
} 

尝试使用expType = mini的迷你浏览器体验。 似乎比移动设备上的灯箱更好。

没有模式框或弹出窗口的自适应付款?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM