Stripe 的支持团队向我确认需要绿色 SSL 验证。
“付款请求按钮的先决条件之一是付款请求所在的页面必须使用有效证书作为安全页面。这是生产和开发的要求。”
这是一个实验。在 Chrome 中浏览到 URL 以绿色显示“Secure https:”的站点,例如https://stackoverflow.com。打开开发者控制台,粘贴这些命令(从这里)并按下Enter:
const supportedPaymentMethods = [
{
supportedMethods: 'basic-card',
}
];
const paymentDetails = {
total: {
label: 'Total',
amount:{
currency: 'USD',
value: 0
}
}
};
const options = {};
const request = new PaymentRequest(
supportedPaymentMethods,
paymentDetails,
options
);
request.show();
然后,您将看到一个付款请求模式弹出。
但是,如果您浏览到您自己的本地站点,地址栏显示为红色“不安全”(并且“https”被划掉),并且如果您尝试在控制台中运行相同的代码,则不会弹出付款请求模式up(即使您为域添加了安全例外)。
因此,当连接不完全安全时,显然 Chrome(可能还有其他浏览器)会阻止 Stripe(以及 Stripe 等其他工具)访问该浏览器功能。
来自条纹的更新:
虽然 Chrome iOS 确实包含 PaymentRequest 实现,但它不允许从 iframe 使用 PaymentRequest,这会阻止 Stripe 的支付请求按钮元素工作。我们正在与 Chrome 团队合作,以在未来的版本中解决此问题。
为了让 Apple Pay 在 iOS 模拟器或测试设备上运行,该域必须可公开访问并通过 Stripe 仪表板 ( https://dashboard.stripe.com/account/apple_pay ) 或 API 进行注册。https://stripe.com/docs/stripe-js/elements/payment-request-button#verifying-your-domain-with-apple-pay我们建议使用像 ngrok (ngrok.com) 这样的工具来创建一个 public-面向具有有效 HTTPS 证书的域,该证书通过隧道连接到您的本地环境。