Retrieve Customer's default and active card from Stripe
我正在尝试检索客户的默认和活动卡。 (另外请记住,使用我拥有的编码,客户总是可以拥有一张卡,这意味着如果有办法解决它可以提供帮助)。
几个月前,我使用了这个运行良好的代码段。 Stripe 似乎做了一些更新,但我现在无法让它工作。
1 | current_user.stripe_card_id = customer.active_card.id |
我得到的错误是
undefined method `active_card' for #Stripe::Customer
如果您需要更多信息,请告诉我。
edit:
我用customer.methods检查了方法,发现了这个(default_source):
1 | current_user.stripe_card_id = customer.default_source |
现在工作正常。谢谢
默认卡 ID 将在客户对象的
中可用
1 2 3 4 5 6 | { "id":"cus_GACkqbqFD8RQw4", "object":"customer", "default_source": <DEFAULT CARD ID HERE> ... } |
在此处阅读更多信息:https://stripe.com/docs/api/customers
[编辑] 另外,
值得注意的是,当您请求属于特定客户的所有卡的列表时,默认卡始终位于结果的顶部。因此,您还可以通过请求客户卡并添加 1 的限制来获得默认卡。
有关如何实现此目的的信息:https://stripe.com/docs/api/cards/list
PaymentMethods API - 2020 年更新
如果您已从旧的 Sources API 切换到新的 Payment Methods API,那么您应该知道,与旧的 Sources 不同,客户没有默认的 Payment Method。
现在,您可以将付款方式作为默认方式附加到订阅对象:
1 2 3 4 5 6 | Stripe::Subscription.update( 'sub_8epEF0PuRhmltU', { default_payment_method: 'pm_1F0c9v2eZvKYlo2CJDeTrB4n', } ) |
或作为
1 2 3 4 5 6 | Stripe::Customer.update( 'cus_FOcc5sbh3ZQpAU', { invoice_settings: {default_payment_method: 'pm_1vvc9v2eZvKYlo2CJDeTrB4n'}, } ) |
这是整个 Stripe 文档
1 2 3 | customer = Stripe::Customer.retrieve(customer_id_on_stripe) first_3_cards = customer.sources.all(limit: 3, object: 'card')[:data] |
如果要获取银行帐户,将返回卡片数组
1 | first_3_bank_accounts = customer.sources.all(limit: 3, object: 'bank_account')[:data] |