首页 > 解决方案 > Firefox - ReferenceError:PaymentRequest 未定义

问题描述

我正在尝试在网站上实施 google pay。google pay 的外部库是从 pay.google.com 加载的。在这个 google 脚本中,他们调用浏览器 api PaymentRequest()。该 api 内置于 Safari、Chrome 等流行浏览器中。

我有谷歌支付工作,但它不适用于 Firefox。加载外部脚本时,它调用 PaymentRequest 并在控制台中显示以下错误:ReferenceError: PaymentRequest is not defined

链接到谷歌支付脚本 https://pay.google.com/gp/p/js/pay.js

Mozilla Firefox 官方网页声明 PaymentRequest 在安全上下文中受支持。 https://developer.mozilla.org/en-US/docs/Web/API/Payment_Request_API/Using_the_Payment_Request_API

我只复制和粘贴官方来源提供的相同代码 在此处输入图像描述

从我的角度来看,Firefox 不支持 PaymentRequest 并且不起作用。我错过了什么?

查看 chrome 和 safari 的控制台。 在此处输入图像描述

标签: firefoxgoogle-paypayment-request-api

解决方案


Google Pay 正在 macOS 上的 Firefox 78.0.1 上为我工作,使用以下方法:https ://jsfiddle.net/fw5t6caL/

是的,它确实在控制台中的以下代码中记录了一个错误:

  google.payments.api.UseCanMakePaymentResultFromPayjs && (new PaymentRequest([{
    supportedMethods: [
      'https://google.com/pay'
    ]
  }
  ], {
    total: {
      label: 'Estimated Total Price',
      amount: {
        currency: 'USD',
        value: '10'
      }
    }
  })).canMakePayment().then(function (a) {
    return ef = a
  }).catch (function () {
    return ef = !1
  });

...但它确实有效。您可以尝试使用上面链接的 JSFiddle 吗?

此外,作为仅供参考,我们最近发布了一个 React 和 Web 组件来简化 Google Pay 集成过程。考虑使用它作为替代方案,因为它应该更容易集成。

JSFiddle 输出截图:

在此处输入图像描述


推荐阅读