Javascript 为什么在使用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

我习惯于向顾客收费

我的代码适用于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],
          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存在一些问题。