Javascript 为什么在使用3D安全信用卡时未激活条带订阅?
我习惯于向顾客收费 我的代码适用于SEPA直接借记卡和普通信用卡,但是它不适用于3D安全卡,我不太明白为什么。当我输入Stripe的3D安全测试卡号(Javascript 为什么在使用3D安全信用卡时未激活条带订阅?,javascript,stripe-payments,Javascript,Stripe Payments,我习惯于向顾客收费 我的代码适用于SEPA直接借记卡和普通信用卡,但是它不适用于3D安全卡,我不太明白为什么。当我输入Stripe的3D安全测试卡号(4000 0000 0000 3220)时,会出现VISA的确认弹出窗口,我可以选择Confirm,但执行此操作后,弹出窗口将消失,其他情况不会发生。客户的订阅未在日志中的任何位置激活或确认。如何解决这个问题?我的代码有问题吗 const tag = document.querySelector('meta[name=stripe-publisha
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],
billing_details: {
name: name.value,
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();
}
}
在没有看到请求、错误等的情况下很难知道。您能否将详细信息写入支持部门,以便他们可以为您进行调查 是否在设置中启用?这至少应添加一个弹出窗口,用户必须在其中确认:
刚刚做了,谢谢。@Tintin81通常有一些开发人员在他们的freenode上对这类事情非常有帮助。不幸的是,目前围绕freenode存在一些问题。