Stripe payments 条带签出:使用保存的源与新令牌创建费用

Stripe payments 条带签出:使用保存的源与新令牌创建费用,stripe-payments,stripe.js,Stripe Payments,Stripe.js,我用的是条纹结帐。在我能找到的所有文档中,Stripe建议在我与该客户的第一笔交易中保存客户信息(包括默认的源),并在以后创建后续费用时使用该默认的源。但是,如果客户在随后的结账交易中使用不同的信用卡,则向默认的源收取费用将是一个错误 因此,在进行后续更改时,我似乎应该始终使用stripe.js中的令牌,并且每当我使用与默认源不同的卡检测到客户时,我应该为他们创建一个新的源 然而,在我的测试中,似乎我从stripe.js获得的每个令牌都代表一张唯一的卡,即使我使用了相同的信用卡号、到期日和CVC

我用的是条纹结帐。在我能找到的所有文档中,Stripe建议在我与该客户的第一笔交易中保存
客户
信息(包括默认的
),并在以后创建后续
费用时使用该默认的
。但是,如果客户在随后的结账交易中使用不同的信用卡,则向默认的
收取费用将是一个错误

因此,在进行后续更改时,我似乎应该始终使用stripe.js中的令牌,并且每当我使用与默认源不同的卡检测到客户时,我应该为他们创建一个新的源

然而,在我的测试中,似乎我从stripe.js获得的每个令牌都代表一张唯一的卡,即使我使用了相同的信用卡号、到期日和CVC。如果我为每个结帐代币创建一张新卡并将其保存到客户记录中,我可能会为每个客户创建成堆的重复卡记录


我是否忽略了一种将stripe.js令牌与客户关联的方法,这种方法不会生成重复的令牌?还是我的做法不正确?

每当您在结账时收集卡的详细信息时,Stripe将为该卡创建一个新的令牌,即使它们使用相同的卡的详细信息。但资源具有
指纹

该属性是您帐户中给定卡号的唯一标识符。这意味着,如果我今天用我的卡注册,然后明天在不同的电子邮件地址下用同一张卡回来,你会在令牌或卡对象上看到相同的精确指纹。这样做的想法是跟踪你在数据库中看到的所有卡片指纹,以检测返回的客户。每当客户添加新卡时,您都会首先查看数据库中以前是否见过该卡的指纹,然后决定创建客户或基于此返回错误


另外,您不应为已保存卡的客户提供结账服务。相反,您应该向他们展示可用的卡,例如显示卡品牌和最后4位数字。然后,客户可以使用其中一张卡付款,也可以添加一张新卡


您可以向客户添加多张卡或替换默认卡。您还可以通过在
customer
中传递客户id和
source
中传递卡id来决定要对哪张卡收费。Stripe的文档中详细介绍了这些信息。

“另外,您不应该为已经保存了卡的客户提供结账服务。相反,您应该向他们展示可用的卡,例如显示卡品牌和最后4位数字。然后客户可以使用其中一张卡付款或添加新卡。”啊,我不明白这一点,但这很有道理。非常感谢。