【问题标题】:Retrieve Customer's default and active card from Stripe从 Stripe 检索客户的默认卡和活动卡
【发布时间】:2022-05-11 19:46:14
【问题描述】:

我正在尝试检索客户的默认和活动卡。 (另外请记住,使用我的编码,客户总是可以拥有一张卡,这意味着如果有办法解决它可以提供帮助。

几个月前,我使用了这个运行良好的代码段。 Stripe 似乎做了一些更新,但我现在无法让它工作。

current_user.stripe_card_id = customer.active_card.id

我得到的错误是

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

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

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

【问题讨论】:

  • 您好。请注意,我们倾向于不鼓励在此处的帖子中发表投票评论。如果您想对投票发表评论,请将其添加为评论 - 这与未投票的未来读者无关,并且反对者已经继续前进。谢谢!

标签: ruby-on-rails stripe-payments


【解决方案1】:

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

current_user.stripe_card_id = customer.default_source

现在工作正常。谢谢

【讨论】:

    【解决方案2】:

    默认卡 ID 将在 客户对象的 "default_source" 键中提供

    {
      "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

    【讨论】:

      【解决方案3】:

      PaymentMethods API - 2020 年更新

      如果您已从旧的 Sources API 切换到新的 Payment Methods API,那么您应该知道,与旧的 Sources 不同,没有默认值客户的付款方式。

      现在,您可以将付款方式作为默认方式附加到订阅对象:

      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

      【讨论】:

      • 在遵循 PaymentMethods API - 2020 更新后,客户对象的“default_source”键是否有效。如果否则,那么我如何显示客户卡的最后四位数字。以及如何完成更改默认卡源。
      【解决方案4】:

      无论更改如何,依靠客户的default_source 都是安全的。您可以看到here,如果未设置invoice_settings.default_payment_methodsubscription.default_payment_method,订阅仍将使用客户的default_source

      【讨论】:

        【解决方案5】:
        customer = Stripe::Customer.retrieve(customer_id_on_stripe)
        
        first_3_cards = customer.sources.all(limit: 3, object: 'card')[:data]
        

        如果你想获取银行账户,将返回卡片数组

        first_3_bank_accounts = customer.sources.all(limit: 3, object: 'bank_account')[:data]
        

        【讨论】:

        • 根本不回答这个问题。他正在寻找是否可以检索客户的默认付款来源,而不是所有可用的付款来源。
        猜你喜欢
        • 2015-06-27
        • 2021-02-14
        • 2018-05-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-29
        • 2019-10-20
        • 2021-03-29
        相关资源
        最近更新 更多