我在Stripe创建了没有外部集成卡的客户。
因此,该客户对象存在,但没有卡。
我希望客户能够转到付款页面并通过结帐进行付款。但是,客户ID是已知的。因此,我们只是要求客户输入他们的“参考”,然后输入卡并付款。
我有此代码:
app.post('/charge', (req, res) => {
stripe.charges.create({
amount: 4000,
description: 'Sample Charge',
currency: 'gbp',
customer: req.body.stripeId
},function(err,result){
console.log(err);
res.render('charge'});
});
});
但是这将返回错误:
Error: Cannot charge a customer that has no active card
我认为结帐的全部目的是为客户创建了一张卡。
如何存储在结帐时针对指定客户输入的卡并收取费用?
结帐代码为:
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="pk_test_Some_key"
data-email="customer email"
data-billing-address="true"
data-allow-remember-me="false"
data-name="Company Limited"
data-description="Example charge"
data-image="an-image.jpg"
data-locale="auto"
data-zip-code="true"
data-currency="gbp">
</script>
答案 0 :(得分:0)
我认为结帐的全部目的是为客户创建了一张卡。
它会创建一张卡,但是您仍然需要自己将其附加到客户上:
stripe.customers.update(req.body.stripeId, { // I assume this is the customer ID (`cus_xxx`)
source: req.body.stripeToken // `tok_xxx` generated by Stripe Checkout
}, function(err, customer) {
stripe.charges.create({
amount: 4000,
description: 'Sample Charge',
currency: 'gbp',
customer: customer.id
}) ...
});
https://stripe.com/docs/saving-cards + https://stripe.com/docs/api/customers/update?lang=node#update_customer-source