我有一个科尔多瓦应用程序。我正在寻求将 ApplePay 选项实现为条纹形式。是否可以在 Cordova 应用程序中使用 Stripe Checkout 进行 Apple Pay?还是仅限 Safari?
我安装了 cordova-plugin-applepay 以及以下脚本:
require_once('/var/www/vhosts/stripe-php-latest/init.php');
// Initialize Stripe
const stripe = Stripe('<?php echo $key; ?>');
// Create a payment request
const paymentRequest = stripe.paymentRequest({
country: 'US',
currency: 'usd',
total: {
label: 'Demo total',
amount: 100,
},
requestPayerName: true,
requestPayerEmail: true,
});
// Check the availability of the Payment Request API
const elements = stripe.elements();
const prButton = elements.create('paymentRequestButton', {
paymentRequest: paymentRequest,
});
// Check if the Apple Pay button can be displayed
paymentRequest.canMakePayment().then(function (result) {
if (result) {
document.getElementById('apple-pay-button').style.display = 'block';
prButton.mount('#apple-pay-button');
alert('Apple Pay');
} else {
alert('Apple Pay is not available.');
}
});
// Handle payment method creation
paymentRequest.on('paymentmethod', async (ev) => {
const {paymentIntent, error: backendError} = await fetch('<?php echo $root;?>nav/pay/payment.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
payment_method: ev.paymentMethod.id,
}),
}).then(r => r.json());
if (backendError) {
ev.complete('fail');
console.error(backendError);
} else {
ev.complete('success');
stripe.confirmCardPayment(paymentIntent.client_secret).then(function (result) {
if (result.error) {
console.error(result.error.message);
} else if (result.paymentIntent.status === 'succeeded') {
console.log('Payment succeeded!');
}
});
}
});
但它返回“Apple Pay 不可用”。要么我实现的代码完全错误,要么只是不支持?
我现在坚持使用科尔多瓦,无法更改为离子/电容器。
有人在 stripe.js / cordova / apple pay 上取得过成功吗?
最诚挚的问候
如果您使用 PaymentRequestButton,仅当您遵循此处列出的所有要求时,才会显示 Apple Pay。
但请注意,Apple Pay 并不总是在 Web 视图中工作,而 Google Pay 也从不在 Web 视图中工作。因此 PaymentRequestButton 可能无法在 Cordova 上正常运行。对于移动应用程序,建议使用
Mobile Elements 或仅使用真实浏览器(而不是 Web 视图)将用户重定向到网站。