从Stripe检索客户的默认和有效卡

时间:2015-06-25 08:53:48

标签: ruby-on-rails stripe-payments

我正在尝试检索客户的默认和有效卡。 (还要记住,通过我所拥有的编码,客户可以随时拥有一张卡片,这意味着如果有方法可以提供帮助)。

几个月前,我使用了这段代码,工作正常。 Stripe似乎做了一些更新,我现在无法让它工作。

current_user.stripe_card_id = customer.active_card.id

我得到的错误是

  

未定义的方法`active_card'对于#Stripe :: Customer

如果您需要更多信息,请告诉我们。

编辑:customer.default_card.id也不起作用。

4 个答案:

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

这是整个Stripe documentation

答案 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]