我需要向预先存在的客户添加卡。这就是我的所作所为:
card_token = request.POST('stripeToken')
customer = stripe.Customer.retrieve('cus_xxxxxxxxxx')
customer.Cards.create(card=card_token)
#3 我遇到了麻烦,因为看起来客户没有方法卡,但我看到有人在其他地方做过。
我该如何实现这个目标?
答案 0 :(得分:29)
如果您使用2015-02-18
API版本或更高版本,则cards
属性已更改为sources
,如changelog
Create Card API上的文档现在显示以下代码:
customer = stripe.Customer.retrieve('cus_xxxxxxxxxx')
customer.sources.create(card=card_token)
您可以在信息中心的API密钥settings中找到您的API版本,还可以使用Stripe-Version
标头强制您的API请求使用较旧的API版本,以便cards
仍然按照Versioning文档中的说明工作:
stripe.api_version = '2015-01-26'
答案 1 :(得分:2)
2019年更新:欧洲的强客户身份验证(SCA)要求使情况有所变化;您现在可能要使用Setup Intents API预先收集卡的详细信息,以备将来付款。
此新API既符合PCI又符合SCA。您可以了解更多here
或在GitHub上查看以下示例代码:https://github.com/stripe-samples/saving-card-without-payment。
您现在也可以entirely with Checkout执行此操作!
答案 2 :(得分:-1)
答案 3 :(得分:-2)
示例(customerId - cus_xxxxxxxxxx):
Do
With Sheets("08-Attribute")
copy.Range("9,AttributeRowCounter").Value
Application.WorksheetFunction.VLookup((Sheets("JCX").Cells(10, attributerowcounter)), (Sheets("08-Attribute").Cells(1, attributerowcounter)), True).Value
With Sheets("08-Attribute")
If "9,AttributeRowCounter" = "CFM" Then
.Range("11,AttributeRowCounter").Value = Sheets("JCX").Range("14,TagNumberRow").Value
ElseIf "9" = "SP" Then
.Range("11,AttributeRowCounter").Value = Sheets("JCX").Range("15,TagNumberRow").Value
ElseIf "9" = "RPM" Then
.Range("11,AttributeRowCounter").Value = Sheets("JCX").Range("16,TagNumberRow").Value
ElseIf "9" = "Motor_HP" Then
.Range("11,AttributeRowCounter").Value = Sheets("JCX").Range("17,TagNumberRow").Value
Else
.Range("9,AttributeRowCounter").Value = Sheets("JCX").Range("20,TagNumberRow").Value
TagValueNameColumn = TagValueNameColumn + 2
.Range("11,AttributeRowCounter").Value = Sheets("JCX").Range("21,TagNumberRow").Value
TagValueNameColumn = TagValueNameColumn + 2
End If 'new
End With 'new
End With 'new
Loop Until Cells(1, attributerowcounter) = False