同志们,我要介绍一个现成的JavaScript模块,用于使用Google Pay付款。 该模块涉及在现代开发环境中将npm与export-import结合使用,但是,我认为想要干净的ES5的人可以轻松地重做它。
链接到模块 。 该代码具有必要的文档和注释。 我将在这里给出一些解释。

我必须说,付款按钮上的Google文档并非最简单,Google Pay API返回的错误列表也不是最完整。 因此,与使用ApplePay,使用Google Pay的方式不同,在该模块真正起作用之前,我不得不画一点点。
这项工作包括两个阶段:首先,我们必须决定是否显示按钮(并非所有浏览器都支持Google Pay),然后自行执行付款处理。
1.按钮显示export function showGooglePayButton(options, callbacks) {
这里没什么复杂的。 在选项中,我们传递两个参数-googleBaseCardPaymentMethod和environment。
googleBaseCardPaymentMethod是一个对象,该对象列出了付款类型和参数(
此处提供了有关搜索的更多详细信息)。 如果未设置,则在代码中调用标准setter,将一个典型对象返回给我们:
const setGoogleBaseCardPaymentMethod = () => { return { type: "CARD", parameters: { allowedAuthMethods: ["PAN_ONLY", "CRYPTOGRAM_3DS"], allowedCardNetworks: ["AMEX", "DISCOVER", "JCB", "MASTERCARD", "VISA"] } } };
环境是环境,生产还是测试
在成功回调的调用上,我们实际上绘制(或显示已经绘制)按钮。 这是您的选择。 请记住,Google需要匹配
其指南 。
2.加工要显示Google Pay按钮,您的浏览器的API创建了
paymentsClient对象,该对象现在与其他参数一起需要传递给处理函数。 让我们看一下其他参数:
googleBaseCardPaymentMethod-参见上文
googlePayPublicKey,merc_id,merc_name-要成功使用Google Pay,您必须具有注册商家。 它的参数我们得到了支持。
此外,我们还会传输成功和失败回调以及付款数据(请参见下文)。
因此,要进行付款,我们必须采用先前创建的
paymentsClient对象,并使用
paymentDataRequest对象调用
loadPaymentData方法:
const paymentDataRequest = getGooglePaymentDataRequest() :
const getGooglePaymentDataRequest = () => { const cardPaymentMethod = Object.assign( {}, baseMethod, { tokenizationSpecification: token } ); const paymentDataRequest = { apiVersion: 2, apiVersionMinor: 0, allowedPaymentMethods : [cardPaymentMethod], merchantInfo : { merchantId: options.merc_id, merchantName: options.merc_name }, transactionInfo : { currencyCode: options.currency, totalPriceStatus: 'FINAL', totalPrice: "" + options.sum } }; return paymentDataRequest; };
对于测试环境,Google提供了自己的商人信息对象。 它需要与示例中编写的
商人ID一起使用,
商人名不重要。
另外,我们需要一个
令牌对象:
const token = { type: 'DIRECT', parameters: { "protocolVersion": "ECv1", "publicKey": options.googlePayPublicKey } };
→在
此处了解有关参数的更多信息
此外,在形成对象时,使用
loadPaymentData方法将
请求发送到Google服务器,打开带有已保存卡的框架,完成操作后,关闭框架:
paymentsClient.loadPaymentData(paymentDataRequest) .then(function(paymentData) { const googleToken = JSON.parse(paymentData.paymentMethodData.tokenizationData.token);
成功执行该方法(即调用保存的卡并通过验证)后,我们可以针对自己的后端请求AJAX,以便使用Google Pay付款。 在此请求中,我们将需要传输来自Google的
googleToken以及公共密钥。
就是这样,我们的Google Pay付款已在背面处理后完成!