I有以下情况:
我需要什么
如果用户决定创建帐户:
我想使用信用卡,它是由用户输入的,用于创建费用,并将信用卡附加到客户,以便用户可以在其配置文件中看到他的信用卡,并在将来的预订中选择/使用它。
问题:
条带费在创建客户之前创建。因此,我需要获取源文件并将其附加到客户。(我已经成功地更新了charge并添加了customer.id,但同样的过程不适用于更新客户。)
通过更新客户资源,我可以:
Cannot use stripe token more than once
到目前为止我尝试过的:
从充电中获取card_id
ch_ch = stripe.Charge.retrieve(new_booking.stripe_charge_id)
customer.sources.create(card=ch_ch.source.id)
customer.save()
使用源id
customer.sources.create(source=form.stripe_source_id.data)
不同的语法
customer.source = form.stripe_source_id.data
customer.save()
注意:form.stripe_source_id.data
包含一个tok_1DEvMCGd8vfeewZVgrSRu4
,它由stripe.js在创建信用卡元素时返回。这是用来创建charge的,它工作得很完美:
stripe_charge = stripe.Charge.create(
amount=int(float(data_received['total_price']) * 100),
currency="eur",
source=form.stripe_source_id.data,
description=None,
#customer=user_id, # customer is anonymous
capture=False, # if False the charge needs to be captured, otherwise it will expire in 7 days and is refunded
#receipt_email='email für den typer, der die rechnung kriegt, funktioniert nur im livemode',
metadata={
'infos': 'process stripe payment anonymous charge'
}
)
在文档中,我提到如果客户源被附加/更新,则会创建新的源,但这意味着不可能将现有的源附加到客户?这不是真的。
由元素返回的标记或源的ID。传递source将创建一个新的源对象,使其成为新的客户默认源,并删除旧的客户默认值(如果存在)。
发布于 2018-09-28 03:32:33
一旦卡令牌已经用于收费,就无法向客户添加卡。您可以将来源添加到客户并使用该来源进行收费,或者您可以要求客户在开户时重新输入他们的付款信息。
出现这种情况的原因之一是为了保护客户卡数据。受限制的流程使中间条纹支持的平台(如Shopify)更容易防止商家滥用,违背客户的意愿保存卡详细信息。
如果您坚持使用您所描述的流程,这里有一个可能的解决方法:当有人输入卡信息时,创建一个虚拟客户并对其收费。然后,如果他们创建了帐户,则将其信息与客户相关联。然而,管理和删除这些无关的虚拟客户将是额外的工作。
https://stackoverflow.com/questions/52533579
复制相似问题