【问题标题】:How to create and verify user account when buying a product购买产品时如何创建和验证用户帐户
【发布时间】:2020-01-08 09:30:53
【问题描述】:

我想在我的网站上通过 Stripe 销售产品。当用户购买产品时,我希望他们使用电子邮件和密码填写表格以创建帐户。然后我会将这些数据发送到我自己的 API,API 会将他们的帐户插入到我的数据库中。如何将其与 Stripe 集成?

此外,我需要我的 API 来确定该用户确实购买了产品,因为只有购买了该产品的人才能拥有帐户。我该如何验证?

谢谢。

编辑:另一个选择是我允许任何人注册,我可以这样做,然后在他们购买产品时输入他们的电子邮件。然后我向我的服务器发送一个请求,如果他们确实购买了该电子邮件地址,则将布尔值 activated 更新为 True。我认为这是一种更好的方法,但我仍然不知道如何让他们在购买产品时提供电子邮件,或者在向我的 API 发送更新布尔值的请求时如何验证用户是否购买了产品。

EDIT2: 拥有 API 似乎是个坏主意。相反,我将在用户提交付款后简单地运行代码来生成用户。似乎我可以使用此 API https://stripe.com/docs/payments/checkout/one-time 获取他们的付款信息和电子邮件,但我如何询问他们的密码并确保已填写此密码以进行付款?

EDIT3:我现在认为最好的方法是创建自己的结帐表单,该表单将询问他们的付款详细信息以及他们的帐户密码。然后,我将通过烧瓶将此信息发送到我的 API,这将向 Stripe 发送 API 请求以处理付款。如果他们的 API 响应说支付成功,那么我执行代码来添加用户。如果没有,我告诉用户它失败了。我应该使用什么 Stripe API 来执行此操作?

【问题讨论】:

  • 您使用什么语言或框架?您可以让他们输入他们的电子邮件,创建付款,如果付款成功,创建帐户。给他们发电子邮件,让他们用密码更新他们的帐户。这可以以一种形式完成/以一种形式付款或先付款形式。
  • @uno Python/Flask。我不确定这是个好主意,如何生成安全的一次性链接?
  • @uno 创建帐户时如何生成盐和随机密码,然后我散列盐 + 密码并将其存储在数据库中。然后,我使用该散列/加盐密码的散列 + 用户创建日期作为密钥创建一个 JWT。然后当他们点击链接时,我用盐的哈希值 + 新密码更新数据库中的哈希值。这样链接只会工作一次,因为他们的密码已经改变。
  • @uno 虽然我仍然认为我的第三次编辑中的方法更好,但我不知道该怎么做。尽管使用我自己的表格+他们的付款表格可能会更好,如答案的 cmets 中所述。

标签: stripe-payments


【解决方案1】:

听起来您已经完全理解了这个问题 - 太好了。使用您自己的表单来收集除付款明细之外的所有内容,然后使用 Checkout 来获取付款明细,这可能仍然是最简单的方法。

您可以通过 creating a Checkout Session server-side - with the email prefilled 执行此操作 - 或者您可以通过 webhook 执行 client-only Checkout with pre-filled email - 以实现此目的。

或者,您可以使用Elements and Payment Intents - 任何对您的使用情况更有意义的方式。

【讨论】:

  • 我担心拆分表格,因为我可能很难将初始表格中的信息链接到付款表格。有关如何干净安全地执行此操作的任何建议?我不明白为什么按照我在第三次编辑中的建议去做会非常困难。从简短的角度来看,我似乎可以通过支付意图来做到这一点。但是,我有点担心银行的自定义验证检查等,如果我不使用 Stripe 的结帐表格,我将无法处理这些检查。所以我倾向于拆分表格,但如前所述,我不确定如何在实践中做到这一点。
  • 我想我想用两种形式创建一个页面。第一个表单由我创建,允许用户设置他们的电子邮件和密码,第二个表单是标准的 Stripe 结帐表单。然后,我将所有这些信息发送到我的服务器进行处理。在服务器上,我处理 Stripe 表单,如果付款成功,我使用他们提供的电子邮件和密码将用户添加到我的数据库中。我不确定如何实现这一点。
  • 没关系,你可以这样做。只需在表单/客户端和 Payment Intents 服务器端(在我提供的链接中)使用 Elements 即可。不要在您的表单中收集卡片详细信息,然后将它们发送到您的服务器,使用 Elements。
猜你喜欢
  • 1970-01-01
  • 2019-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多