0

我不确定我是否理解这个“新”的 Stripe SCA 3DS 流程。当我成功完成3DS认证,创建客户,然后订阅,订阅标记为“未完成”。

这是我当前的 Javascript 实现:

form.addEventListener('submit', function(event) {

    event.preventDefault();
    disableFormSubmit(true);

    stripe.confirmCardPayment($('input#client_secret').val(), {

        payment_method: {
            card: cardElement,
            billing_details: {
                name: $('input#first_name').val()+' '+$('input#last_name').val(),
                email: $('input#email').val(),
            }
        }

    }).then(function(result){

        console.log(result);

        if (result.error) {
            disableFormSubmit(false);
            showPaymentError(result.error.message);
        } else {
            if (result.paymentIntent.status === 'succeeded') {
                disableFormSubmit(true);
                $('input#payment_method').val(result.paymentIntent.payment_method);
                form.submit();
            }
        }

    });
});

confirmCardPayment已经负责验证,向我展示了这个叠加层,我在其中单击“完成身份验证”。

在此处输入图像描述

在此之后,成功创建了客户(和付款方式),并为客户附加了订阅。但是订阅状态现在显示为“不完整”,带有“requires_action”。现在这是我不明白的。之前的覆盖不是对此负责吗?根据文档(https://stripe.com/docs/billing/subscriptions/set-up-subscription#manage-sub-status)我应该confirmCardPayment再次调用,我不明白,因为我刚刚这样做了,请参阅 JS 代码.

在此处输入图像描述

为什么即使我刚刚完成了这一步,我的订阅仍处于“requires_action”状态?

4

1 回答 1

0

您正在查看的指南部分是关于处理额外的身份验证操作和从失败的付款中恢复。此时您应该只提供client_secret

stripe.confirmCardPayment(client_secret)

在您的代码片段中,您cardElement再次提供了之前已经提供的内容:

stripe.createPaymentMethod({
  type: 'card',
  card: cardElement, // <-------
  billing_details: {
    email: 'jenny.rosen@example.com',
  },
})

我怀疑因此会发生意外情况,因此请调整您的代码以遵循指南的流程,它应该可以工作。

于 2020-04-08T16:05:32.447 回答