繁体   English   中英

条纹python将现有卡/源附加到新客户

[英]Stripe python attach existing card/source to new customer

我有以下情况:

  • 用户可以预订房间。

  • 访客可能没有预订就预订房间。 在这种情况下,我会在没有客户的情况下创建条纹收费

  • 用户在预订过程中可能决定创建一个帐户。 在这种情况下,我还创建了一个条纹客户。

我需要的

如果用户决定创建一个帐户:

我要使用用户输入的信用卡,该信用卡用于创建费用并将信用卡附加到客户,因此用户可以在其个人资料中查看其信用卡,然后选择/使用该信用卡进行未来的预订。

问题:

在创建客户之前创建条带状费用。 因此,我需要拿货源并将其附加到客户身上。 (我已经可以成功更新费用并添加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返回。 这用于创建费用,可以完美地发挥作用:

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'
    }
)

我在文档中指出,如果附加/更新了客户资源,则将创建一个新资源,但这意味着不可能将现有资源附加到客户身上吗? 那不可能是真的。

由Elements返回的令牌或源的ID。 传递源将创建一个新的源对象,使其成为新的客户默认源,如果存在则删除旧的客户默认值。

一旦卡令牌已用于收费,就无法将卡添加到客户。 您可以将货源添加到客户并使用它来收取费用,也可以要求客户在开设帐户时重新输入其付款信息。

这种情况的原因之一是保护客户卡数据。 受限制的流量使中间的基于Stripe的平台(例如Shopify)更容易防止商家滥用,从而违反了客户的意愿保存卡的详细信息。

如果您坚持要遵循所描述的流程,则可以采用以下解决方法:当有人输入卡信息时,请假顾客并向其收费。 然后,如果他们注册了帐户,则将其信息与客户相关联。 但是,管理和删除这些无关的虚拟客户将是额外的工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM