如何解决为什么在使用 3D 安全信用卡时没有激活 Stripe 订阅?
我习惯于 Stripe Elements 向我的客户收费。
我的代码适用于SEPA 直接借记和普通信用卡,但它不适用于3D 安全卡我不太明白为什么。当我输入 Stripe 的 3D 安全测试卡号 (4000 0000 0000 3220
) 时,会出现 VISA 的确认弹出窗口,我可以选择 Confirm
,但这样做之后,弹出窗口就会消失,没有其他任何事情发生。客户的订阅未在日志中的任何位置激活或确认。如何解决这个问题?我的代码有问题吗?
const tag = document.querySelector('Meta[name=stripe-publishable-key]');
const key = tag.getAttribute('content');
const stripe = Stripe(key);
const form = document.querySelector('#stripe_form');
const name = document.querySelector('#name');
const email = document.querySelector('#email');
const payment = document.querySelector('#payment');
const errorMessage = document.querySelector('#stripe_error_message');
const clientSecret = document.querySelector('#client_secret');
const elements = stripe.elements();
const card = elements.create('card',{});
card.mount('#card');
const iban = elements.create('iban',{
supportedCountries: ['SEPA'],placeholderCountry: 'FR'
});
iban.mount('#iban');
for (element of [card,iban]) {
element.on("change",function(event) {
if (event.error) {
errorMessage.textContent = event.error.message;
} else {
errorMessage.textContent = "";
}
});
}
form.addEventListener('submit',function(e) {
e.preventDefault();
setupPaymentMethod(clientSecret.value,payment,{
card: card,sepa_debit: iban
});
});
function setupPaymentMethod(setupIntentSecret,paymentMethod,element) {
switch (paymentMethod) {
case "card":
stripe.confirmCardSetup(setupIntentSecret,{
payment_method: {
card: element[paymentMethod],billing_details: {
name: name.value,email: email.value
}
}
})
.then(handleResult);
break;
case "sepa_debit":
stripe.confirmSepaDebitSetup(setupIntentSecret,{
payment_method: {
sepa_debit: element[paymentMethod],email: email.value
}
}
})
.then(handleResult);
break;
default:
console.warn("Unhandled Payment Method!");
break;
}
}
function handleResult(result) {
// console.log(result);
if (result.error) {
errorMessage.textContent = result.error.message;
} else {
let paymentMethod = document.createElement('input');
paymentMethod.setAttribute('type','hidden');
paymentMethod.setAttribute('name','payment_method');
paymentMethod.value = result.setupIntent.payment_method;
form.appendChild(paymentMethod);
form.submit();
}
}
解决方法
没有看到请求、错误等就很难知道。您能否将详细信息写给支持人员,以便他们为您调查? https://support.stripe.com/contact/email
,是否在设置中启用?这至少应该添加一个用户必须确认的弹出窗口:https://dashboard.stripe.com/settings/billing/automatic
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。