我正在使用stripe
来管理我的交易。
我需要添加客户(如果尚未存在),然后将卡添加到该客户。
现在我必须获得两个进程的令牌,我通过
完成stripe.tokens.create({
card: {
"number": "4242424242424242",
"exp_month": "1",
"exp_year": "2019",
"cvc": "123"
}
}, function (err, token) {
// asynchronously called
if (token != null) {
//Do something
}
else {
//Do something
}
});
现在我调用此方法两次以获取新令牌,如果不存在则每次添加客户并向该客户添加卡。但每次我得到相同的回复,因为我发送卡的相同信息。
1St
{
"id": "tok_16v4mvBR7e7FUB557PD3hOZc",
"object": "token",
"card": {
"id": "card_16v4mvBR7e7FUB55KD06kqJo",
"object": "card",
"address_city": null,
"address_country": null,
"address_line1": null,
"address_line1_check": null,
"address_line2": null,
"address_state": null,
"address_zip": null,
"address_zip_check": null,
"brand": "Diners Club",
"country": null,
"cvc_check": "unchecked",
"dynamic_last4": null,
"exp_month": 10,
"exp_year": 2021,
"fingerprint": "iE2uiiDxUFHRgpt1",
"funding": "credit",
"last4": "5904",
"metadata": {},
"name": null,
"tokenization_method": null
},
"client_ip": "51.25.52.52",
"created": 1444650501,
"livemode": false,
"type": "card",
"used": false
}
2nd
{
"id": "tok_16v4mvBR7e7FUB557PD3hOZc",
"object": "token",
"card": {
"id": "card_16v4mvBR7e7FUB55KD06kqJo",
"object": "card",
"address_city": null,
"address_country": null,
"address_line1": null,
"address_line1_check": null,
"address_line2": null,
"address_state": null,
"address_zip": null,
"address_zip_check": null,
"brand": "Diners Club",
"country": null,
"cvc_check": "unchecked",
"dynamic_last4": null,
"exp_month": 10,
"exp_year": 2021,
"fingerprint": "iE2uiiDxUFHRgpt1",
"funding": "credit",
"last4": "5904",
"metadata": {},
"name": null,
"tokenization_method": null
},
"client_ip": "55.55.55.55",
"created": 1444650501,
"livemode": false,
"type": "card",
"used": false
}
检查每个字段是否与第一个字段相同。
但是如果我想使用我第一次收到错误的相同令牌
Stripe Error 400 - Cannot use stripe token more than once
所以我的问题是,如果我再次获得相同的令牌,那么为什么它在使用第一次返回的令牌添加客户并为该客户添加卡时给我错误。
如果我不必再次获得令牌,这可能会提高我的网站速度。
答案 0 :(得分:0)
来自@Matthew Arkin的评论
I have a need to add the customer (if not already present) and then add the card to that customer.
stipe的业务逻辑是这样的,当你向用户询问信用卡详细信息时,它会添加客户,所以他们没有区别但是程序相同。
条纹令牌是一种编码以下内容的方法:
1)银行账户
2)信用卡明细
要获得令牌,您应该传递信用卡的信息卡,例如here。
现在,您可以使用stripe.js获取相同的令牌。使用stripejs的好处是会发送一个令牌而不是卡片信息。
要添加客户,您应该提供来自stripe.js(或来自api)的令牌或卡信息。使用令牌是我认为最好的方法。
当您使用令牌调用条带时,您会自动使用卡片创建客户。因此,如果没有提供给条带的卡信息,客户就不能。
如果您想向现有客户添加卡,请执行以下操作:
** 1)检索客户传递客户ID **
2)检查客户是否为空,然后为该客户添加卡,从stripe.js获取令牌