关于 ruby?? on rails:Retrieve Customer\\’s default and active card from Stripe

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.default_card.id 也不起作用。


我用customer.methods检查了方法,发现了这个(default_source):

1
current_user.stripe_card_id = customer.default_source

现在工作正常。谢谢


默认卡 ID 将在客户对象的 "default_source"

中可用

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',
  }
)

或作为 customer.invoice_settings.default_payment_method

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]