【问题标题】:Stripe Subscription incomplete after 3DS check3DS 检查后条带订阅不完整
【发布时间】:2020-07-20 23:59:00
【问题描述】:

我不确定我是否理解这个“新”的 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”状态?

【问题讨论】:

    标签: javascript stripe-payments sca


    【解决方案1】:

    part of the guide you're looking at 用于处理额外的身份验证操作并从失败的付款中恢复。此时您应该只提供client_secret

    stripe.confirmCardPayment(client_secret)
    

    在您的代码 sn-p 中,您再次提供 cardElement,而它已经是 provided earlier

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

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

    【讨论】:

    • 我试试看。目前,由于设置的环境,我无法使用“获取”甚至清理 Ajax 调用。我不是通过 createPaymentMethod 函数创建付款方式,而是这里描述的方式:stripe.com/docs/payments/save-during-payment#web-submit-payment 所以我有点混合了直接付款和开始订阅。
    • 嗯好的。你是提前收款吗?如果是这样,请尝试按照此处的指南 [0]。如果您正在实施试用或其他延期付款,最好使用pending_setup_intent [1] 和confirmCardSetup [2] [0] stripe.com/docs/billing/migration/… [1] stripe.com/docs/api/subscriptions/… [2] @987654326 @
    • 我现在能够使用 Ajax 调用并且能够完成流程。一切似乎都正常,除了在第一次付款失败时创建了两次客户。但我想我只需要存储失败付款的客户 ID 并稍后更新客户。
    猜你喜欢
    • 2021-04-11
    • 2018-09-20
    • 2022-01-03
    • 2015-02-20
    • 1970-01-01
    • 2018-11-29
    • 2021-12-12
    • 2018-10-17
    • 2021-10-03
    相关资源
    最近更新 更多