我正在使用stripe的支付请求按钮在我的应用程序上显示apple pay和google pay:
https://stripe.com/docs/stripe-js/elements/payment-request-button
完成了域验证和显示苹果支付和谷歌支付按钮所需的一切。
Apple pay运行良好。按钮在safari上显示正确。
但谷歌的支付按钮并没有显示。当我刷新显示“付款请求按钮”的页面时,谷歌支付按钮开始显示,所以它不会在第一次访问时显示,而是在刷新页面时开始显示。一旦它显示出来,它就会停留。但在清除浏览器缓存和cookie后,按钮再次被隐藏。然后,即使在刷新页面后,它也不会显示。
谷歌按钮在这个条纹页面的顶部可见:
https://stripe.com/docs/stripe-js/elements/payment-request-button#testing
因此,这意味着浏览器兼容性没有问题。我在我的应用程序上使用的是真卡。
此外,当我访问此页面时:
https://rsolomakhin.github.io/pr/pwg/
它显示绿色的“无注册仪器”文本。当我回到上面的条纹链接,点击谷歌按钮并进行测试付款时,该页面上的绿色文本
https://rsolomakhin.github.io/pr/pwg/
更改为“已注册仪器”。然后谷歌按钮开始再次显示在我的应用程序上。
所以,我认为问题是,支付请求按钮api没有检测到谷歌支付中添加的卡。但在其他网站上进行任何测试谷歌支付交易后,一些谷歌数据被保存在cookie和缓存中,按钮也开始在我的页面上工作。
但我希望按钮每次都显示,即使在清除浏览器缓存后也是如此。
我不知道发生了什么事。有什么帮助吗?
代码:
function initializeStripeWalletPay() {
const paymentRequest = stripe.paymentRequest({
currency: CURRENCY,
country: CODE,
requestPayerName:true,
requestPayerEmail:true,
total: {
label: 'Total',
amount: total_amount
}
});
const prButton = elements.create('paymentRequestButton',{
paymentRequest: paymentRequest});
paymentRequest.canMakePayment().then((result) => {
if(result){ prButton.mount('#payment-request-button'); }});
}
$(window).load(function(){
initializeStripeWalletPay();
})