我的问题是,每次客户结帐时,他们都有一个新的客户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。
答案 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,而不是clientReferenceId
。
https://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
。