2016-10-14 20 views
2

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

回答

2

我可以给你我如何管理用户的网站和条纹的客户之间的关联的例子。

在我自己的数据库中,我有注册为本网站用户的表(“用户”),并为客户条纹表(“Stripe_Customers”)。 在Users表中有Stripe_Customers的GUID。当新用户注册到该网站时,我也会在Stripe_Customers中创建一条新记录(将stripe_id列留空)。 然后,当用户转到付款单页面时,我们有以下情况:

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

  1. 如果 “假”:形式是空的。用户必须插入信用卡信息。 当他按下提交时,我创建新客户(Stripe.customer.create)并更新Stripe_Customers表的用户记录。
  2. 如果“真”:形式预装有他stripe_id(Retrieve_Card)从条纹获取卡的信息。 在这种情况下,用户可以使用旧的信用卡或插入一个新的信用卡。

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


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

我希望这可以对你有所帮助。

PS:如果您想要检查插入的信用卡是否与存储在条纹客户信息中的信用卡相同,您需要检查基于信用卡号码的“指纹”参数(因此不要更改。卡将始终具有相同的“指纹”)[请参阅Card-Obeject文档以了解更多信息]

+0

感谢您的详细解答。但是,我没有在您链接的页面上的卡片对象中看到指纹属性。看起来,检索到的令牌对象已经包含一个卡对象,我可以与现有用户的卡对象进行比较。我错过了什么? – sawa

+0

@narusawa:当你[创建](https://stripe.com/docs/api#create_card_token)提交表单中的标记和[检索](https://stripe.com/docs/api#retrieve_card)卡的当前登录客户,您可以检查[指纹](https://stripe.com/docs/api/php#card_object-fingerprint),因为它们都返回卡对象(“fingerprit”介于刚刚连接的Card_Object属性列表之间) –

+0

@TheDude如何再次对同一张卡充电?你是否让用户输入安全号码?或仅根据customer_id和card_id收费? - https://stackoverflow.com/questions/44326838/charging-existing-card-and-customer-with-security-code-on-stripe –

1

如果客户回来做一些操作,我们可以假设你已经对所有的信息。所以你必须处理,如果创建或更新客户(卡或订阅等等)

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

它说:

创建一个新的客户对象。

不管怎么说,详细解释了自己的情况。它是否已进入用户已登录的网站?或者它不同?

+0

是的,用户在他们发布信用卡信息时已经登录。所以,如果我正确地理解了你,我需要将每个用户的一个客户ID与我的数据库联系起来,并且如果有一个返回用户,我需要使用Stripe.customer.update。我在正确的轨道上吗? Stripe.customer.update是否足以让信用卡结帐在没有Stripe.customer.create的情况下处理? – sawa

+0

我不得不写另一个答案,因为字符不够:-P –

0

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

条纹创建用户后,可以通过API抛出调用条纹stripe.customers.createSource的这种方法({},{},CB)

这里从您将该用户添加卡第一个参数将是从条带返回的客户ID。如果您处于(Node.js)环境中,则第二个参数将为标记,第三个参数将为回调函数。

谢谢

相关问题