【问题标题】:Balanced Payments doesn't seem to work with Phonegap平衡付款似乎不适用于 Phonegap
【发布时间】:2014-02-12 01:16:45
【问题描述】:

我们无法从 Phonegap 应用程序调用balanced.card.create。这是在股票Phonegap应用程序中复制的:https://github.com/kevg/phonegap-balanced。完整的细节在 github 上的 README.md 中,但基本的总结是:

对于那些不熟悉 phonegap 的人来说,加载的主页是 索引.html。这会在 index.js 中初始化 phonegap。当设备是 准备好了,我们将显示一个隐藏的 DIV,带有一个名为“执行”的按钮 平衡。”当你点击这个按钮,app.executeBalanced in index.js 将被调用,提示输入平衡的市场 URI,加载 balance.js 与 $.getScript,然后调用 balance.card.create 与 一张测试信用卡。

预期的结果是callbackHandler被调用或异常 被抓住了。相反,似乎是Javascript线程的执行 消失在balanced.card.create中,永远不会返回并且没有任何 错误。

【问题讨论】:

  • 我应该补充一点,所有外部请求都是config.xml中的white listed,这实际上是balanced.js能够正常加载的方式,所以我认为不是那种问题.此外,在我们的真实应用程序中,如果我们将 phonegap 浏览器重定向到我们的 https:// 网站,然后调用 balance.card.create,一切正常(但我们留下 file:///.../index.html 和因此无法访问手机 API)

标签: balanced-payments


【解决方案1】:

好的,我在balanced.js 中发现了错误。因此,在 Phonegap 中,window.location.href 返回类似 file:///.../index.html 的内容。 Balanced.js 为 https://js.balancedpayments.com/proxy#file 之类的东西创建 iframe

var src = proxy + "#" + encodeURIComponent(window.location.href);

https://github.com/balanced/balanced-js/blob/master/src/utils.js#L48

在 proxy.html 中返回的脚本(我在 github 上找不到)中,确实如此:

c.parentURL=decodeURIComponent(
    window.location.hash.replace(/^#/,"")
  ).replace(/#.*$/,"")
c.parentDomain=c.parentURL.replace(/([^:]+:\/\/[^\/]+).*/,"$1")

正则表达式不匹配,因为 file: 有三个斜杠。现在,起初,我认为我可以将正则表达式转换为:

/([^:]+:\/+[^\/]+).*/

但是,还有另一个问题,因为 balance 会对匹配进行安全来源检查:

if (d.origin.toLowerCase() !== c.toLowerCase()) return !1;

但是,正则表达式返回 file:///firstcomponent,而 event.origin 不包含文件方案的主机名,因此即使使用固定的正则表达式也不匹配。

我无法更改代理响应中返回的脚本中的任何内容,因为如果我从 balancepayments.com 以外的域加载该脚本,那么 AJAX POST 将失败(返回代码 0 和空白正文)。因此,我唯一能控制的就是传递给 iframe 的哈希。

然而,由于这个正则表达式是一个替换,我们可以简单地传递我们知道我们需要的东西(我们不在乎这个正则表达式是一个空操作)。

因此,解决方法是将上面的L48改为:

var src = proxy + "#" + encodeURIComponent("file://");

这行得通。

【讨论】:

  • 嘿,@Infofinity - 感谢您的解释。我今天就去看看这个。
猜你喜欢
  • 1970-01-01
  • 2012-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-10
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
相关资源
最近更新 更多