【发布时间】:2021-03-14 17:39:03
【问题描述】:
我正在尝试将Payment Request Button 添加到我的 Ionic 5 应用程序中。但是,无论我如何运行应用程序,我总是收到以下消息,并且按钮不会显示。
[警告] - 您可以通过 HTTP 测试您的 Stripe.js 集成。然而, 实时 Stripe.js 集成必须使用 HTTPS。
我正在通过 https 加载 Stripe API
<script src="https://js.stripe.com/v3/"></script>
我已经将它导入到我的页面中
declare var Stripe;
// Check the availability of the Payment Request API first.
const prButton = elements.create('paymentRequestButton', {
paymentRequest,
});
paymentRequest.canMakePayment().then(result => {
if (result) {
prButton.mount('#payment-request-button');
} else {
document.getElementById('payment-request-button').style.display = 'none';
}
);
我尝试在 Mac 上的 Safari(使用 --ssl 和有效证书运行)、Xcode Emulator、A Real iPhone 中运行它,结果始终相同。
另外值得注意的是,我使用的是电容器,而不是 Cordova。我已经在我的电容器.config.json 中尝试过,但没有效果。
"iosScheme": "https",
更新:
所以事实证明这是因为应用程序使用本地 urlScheme capacitor:// 而不是 https:// 和 Ionic 的开发团队目前 have no plans to rectify this 运行。有没有办法让支付请求按钮出现在非 https 环境中?
【问题讨论】:
-
@ceejayoz 我曾尝试使用它,但反复得到未定义的方法——我不相信 Capacitor 的实现与 Cordova 的标准相同——而且文档很少。据我从互联网上的教程/指南中得知,使用普通的条带库也应该可以工作。你知道原生插件是否支持支付请求按钮吗?
-
这可能是由于运行在 iOS 设备上的显示您的内容的本地 Web 服务器无法通过 HTTPS 提供具有有效证书的页面。您的配置中的
server.url是否以http开头?如果您将其更改为以https开头,它会中断吗? -
@MadMac 我做到了,我会在今天晚些时候有时间的时候在下面发布答案。简短的版本是,我必须使用旧的 v1 条纹 API 并手动生成令牌。
-
@Lewis 谢谢,这将非常有帮助。万一以后有人读到这篇文章,我确实使用github.com/capacitor-community/stripe 让它工作,但这需要使用苹果/条纹证书等进行更多设置,所以我更喜欢使用带有付款请求按钮的网络版本
标签: javascript ionic-framework stripe-payments