您如何在Stripe Checkout上将客户链接到订阅?

时间:2019-03-08 22:30:23

标签: javascript stripe-payments

我的问题是,每次客户结帐时,他们都有一个新的客户ID,该ID链接到客户的电子邮件。

var stripe = Stripe('pk_test_xxx', {
    betas: ['checkout_beta_4']
});

var checkoutButton = document.getElementById('checkout-button');
checkoutButton.addEventListener('click', function () {
    stripe.redirectToCheckout({
        items: [{
            plan: 'plan_xxx',
            quantity: 1
        }],
        customerEmail: 'test15@xxx.com',
        clientReferenceId: 'cus_xxx',
        successUrl: window.location.protocol + '//domain.test/en/accounts/billing-success',
        cancelUrl: window.location.protocol + '//domain.test/en/accounts/billing-cancel',
    }).then(function (result) {
        if (result.error) {
            var displayError = document.getElementById('error-message');
            displayError.textContent = result.error.message;
        }
    });
});

我认为clientReferenceId将保留Stripe客户ID。似乎并非如此。订阅具有新的customer_id。

2 个答案:

答案 0 :(得分:0)

documentation中所述,如果结帐成功,则您传递给<div class="row"> Sort By: <select multiple name="services" class=' col-md-4 form-control' id="services" > <option value ="none">Nothing</option> <option value ="guava">Guava</option> <option value ="lychee">Lychee</option> <option value ="papaya">Papaya</option> </select> </div>的值将包含在通过Webhook发送的数据中。

您需要在Stripe Dashboard中定义Webhook地址。结帐完成后,便会调用Webhook,因此您可以在付款成功后执行所需的所有步骤。

答案 1 :(得分:0)

如Stripe API文档中所述,只需将customer密钥设置为所需的客户ID,而不是clientReferenceIdhttps://stripe.com/docs/api/checkout/sessions/create#create_checkout_session-customer

在其他SO帖子的答案中也提到了这一点:Stripe Checkout Beta: Avoid creating new customer for every payment

为了提高安全性,我还建议您在后端创建一个会话,并将sessionID传递到您的前端,然后仅使用redirectToCheckout来呼叫sessionID