如何在数据库中存储条带客户 ID

How to store stripe customer id in a database

假设客户在一段时间未使用该服务后返回支付订阅费用。一旦来自客户的卡信息从客户端浏览器发布,stripe.customers.create 是否识别以前使用过的卡?在这种情况下,返回的客户对象 ID 是否与该客户之前的 ID 相同?我问这个问题是因为我不确定我是应该在我的数据库中为每个用户关联一个客户 ID,还是为每个用户关联多个客户 ID。

如果客户回来做一些操作,我们可以假设您已经掌握了所有相关信息。因此您必须处理创建或更新客户(卡或订阅等)

这是关于 Stripe.create.Customer 的文档。

它说:

Creates a new customer object.

总之,多解释一下你的情况。它是否进入用户已登录的站点?还是不一样?

我可以举例说明我如何管理用户网站和 Stripe 客户之间的关联。

在我自己的数据库中,我有一个 table 用于注册到站点的用户 ("Users") 和一个 table 用于客户条带 ("Stripe_Customers")。 在用户 table 中有 Stripe_Customers 的 GUID。当新用户注册该站点时,我也会在 Stripe_Customers 中创建一条新记录(将 stripe_id 列留空)。 然后当用户转到付款表单页面时,我们有这些情况:

在 onLoad 页面:我检查他是否已经是 customer_stripe。

  1. 如果"false":表单为空。用户必须输入信用卡信息。 当他按下提交时,我创建了新客户 (Stripe.customer.create) 并更新了 Stripe_Customers table.
  2. 的用户记录
  3. 如果"true":表格预填了他stripe_id(Retrieve_Card)从Stripe检索到的卡信息。 在这种情况下,用户可以使用旧信用卡或插入新信用卡。

    在插入新卡的情况下,当用户按下提交时,我会在 Stripe (Update_Card) 上更新客户的卡信息。


我上面写的不完整,有点不同(我给出了选择是否保存信用卡和其他东西的可能性)。

希望对您有所帮助

P.S.: 如果要检查插入的信用卡是否与存储在 Stripe 上的客户信息中的信用卡相同,则需要检查基于的 "fingerprint" 参数信用卡号(所以永远不要改变。一张卡将始终相同 "fingerprint")[有关详细信息,请参阅 Card-Obeject 文档]

是的,客户 ID 是条带中的常量字符串。在您的应用程序中,当您注册客户时,请确保您通过一次调用条带支付网关进行注册。 stripe.customers.create() 方法应该以客户对象作为参数调用。
https://stripe.com/docs/api#create_customer

在 stripe 中创建用户后,您可以通过调用此 stripe 方法 api 为该用户添加卡 stripe.customers.createSource({},{},cb)

这里的第一个参数是从 stripe 返回的客户 ID。如果你在 (Node.js) 环境中,第二个参数将是令牌,第三个参数将是一个回调函数。

谢谢