Python 如何将stripe.js与包含其他数据的表单一起使用?

Python 如何将stripe.js与包含其他数据的表单一起使用?,python,django,django-forms,stripe-payments,django-formwizard,Python,Django,Django Forms,Stripe Payments,Django Formwizard,我制作了一个巨大的Django表单,供用户订阅付费服务。它包含用户数据、用户首选项和用户付款信息 你可能知道: 如果信用卡信息错误,则会在JS中显示错误。提交 不会发生,因此不会重新加载页面 如果信用卡信息正确,那么表单将提交到Django服务器,然后重新加载页面 请注意,在此过程中,信用卡信息不会发送到Django服务器(这就是全部目的) 它似乎被认为只用于信用卡形式(没有额外的数据)。因此,以下是提交我的表格时发生的情况: 如果信用卡数据正确,但其他数据错误,Django页面将重新加载

我制作了一个巨大的Django表单,供用户订阅付费服务。它包含用户数据、用户首选项和用户付款信息

你可能知道:

  • 如果信用卡信息错误,则会在JS中显示错误。提交 不会发生,因此不会重新加载页面
  • 如果信用卡信息正确,那么表单将提交到Django服务器,然后重新加载页面
  • 请注意,在此过程中,信用卡信息不会发送到Django服务器(这就是全部目的)
它似乎被认为只用于信用卡形式(没有额外的数据)。因此,以下是提交我的表格时发生的情况:

  • 如果信用卡数据正确,但其他数据错误,Django页面将重新加载,并填充其他数据字段,信用卡数据为空(这是绝对正常的,因为信用卡数据从未发送到Django服务器,与其他数据相反)
问题是,如果我的用户在表单的其他地方出错,我不想强迫他们重新输入信用卡信息。

我确实理解为什么会发生这一切,但有办法解决吗? 我想Django表单向导可能是一种方法,是吗?有更简单的吗


非常感谢。

我不是Django专家,因此我无法在这里提供明确的代码,但信用卡数据会发送到Stripe(通过Stripe.js)并返回代表性令牌。该令牌存储在一个隐藏的表单输入中,以便它进入服务器端代码

在您的情况下,我倾向于将令牌重新存储在隐藏表单输入中,并指出信用卡已经被占用。如果您相应地动态调整验证逻辑,那么当其他信息出现问题时,您就不能重新要求信用卡

干杯, 拉里


PS我在Stripe从事支持工作。

Stripe.js如果您只处理简单的付款,那么就可以了。您需要做两件事中的一件:在整个表单中使用Ajax,或者使用Stripe Python API对卡进行验证和收费。在这个用例中,我会完全跳过stripe.js。在不将信用卡信息传输到服务器的情况下,如何跳过stripe.js?您不需要stripe.js将数据发送到stripe。它们提供了一个Python库,您可以在服务器端发送所有数据:但您同意,在我的服务器中的Python中,如果我编写一些类似于
stripe.Token.create(card={“number”的内容:'4242',…
这意味着卡号将被发送到我的服务器。它已被发送到stripe。在您的表单有效之前,您不必这样做,而验证卡数据是Django表单的一部分。