我正在尝试检索客户的默认和有效卡。 (还要记住,通过我所拥有的编码,客户可以随时拥有一张卡片,这意味着如果有方法可以提供帮助)。
几个月前,我使用了这段代码,工作正常。 Stripe似乎做了一些更新,我现在无法让它工作。
current_user.stripe_card_id = customer.active_card.id
我得到的错误是
未定义的方法`active_card'对于#Stripe :: Customer
如果您需要更多信息,请告诉我们。
编辑:customer.default_card.id
也不起作用。
答案 0 :(得分:6)
我使用customer.methods检查方法并找到了这个(default_source):
current_user.stripe_card_id = customer.default_source
现在工作正常。谢谢
答案 1 :(得分:1)
PaymentMethods API-2020更新
如果您已从旧的 Sources API 切换到新的 Payment Methods API ,那么您应该知道与旧的 Sources 不同,没有默认的< em>客户的付款方式。
现在,您可以将一种付款方式作为默认方式附加到订阅对象:
Stripe::Subscription.update(
'sub_8epEF0PuRhmltU',
{
default_payment_method: 'pm_1F0c9v2eZvKYlo2CJDeTrB4n',
}
)
或作为customer.invoice_settings.default_payment_method
Stripe::Customer.update(
'cus_FOcc5sbh3ZQpAU',
{
invoice_settings: {default_payment_method: 'pm_1vvc9v2eZvKYlo2CJDeTrB4n'},
}
)
答案 2 :(得分:0)
默认卡ID将在客户对象的"default_source"
键
{
"id": "cus_GACkqbqFD8RQw4",
"object": "customer",
"default_source": <DEFAULT CARD ID HERE>,
...
}
在此处了解更多信息:https://stripe.com/docs/api/customers
答案 3 :(得分:-1)
customer = Stripe::Customer.retrieve(customer_id_on_stripe)
first_3_cards = customer.sources.all(limit: 3, object: 'card')[:data]
如果要获取bank_accounts
,将返回一系列卡片first_3_bank_accounts = customer.sources.all(limit: 3, object: 'bank_account')[:data]