如何使用包含其他数据的表单的stripe.js?

时间:2014-12-27 14:34:30

标签: python django django-forms stripe-payments django-formwizard

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

如您所知,stripe.js is intended to work this way

  • 如果信用卡信息错误,则JS中会显示错误。提交 不会发生,因此页面不会重新加载。
  • 如果信用卡信息是正确的,那么表单将提交给Django服务器,然后重新加载页面。
  • 请注意,在此过程中,信用卡信息不会发送到Django服务器(这就是整个目的)。

似乎它被认为仅用于信用卡表格(没有额外数据)。结果,这就是提交表单时发生的事情:

  • 如果信用卡数据正确但其他数据错误,则会重新加载Django页面并填写其他数据字段,并且信用卡数据为空(这是绝对正常的信用卡数据永远不会发送到Django服务器,与其他数据相反。)

问题是,如果他们在表单中的其他位置出错,我不想强​​迫我的用户重新输入信用卡信息。

我明白为什么所有这一切都会发生但有办法解决这个问题吗? 我认为Django表单向导可能是单向的,它是?有一个更简单的吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

我不是Django专家,所以我不能在这里提供显式代码,但是信用卡数据被发送到Stripe(通过Stripe.js)并返回代表性令牌。该令牌存储在隐藏的表单输入中,以便它转到服务器端代码。

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

干杯, 拉里

PS我在Stripe的支持工作。