0

我在将数据从 Stripe 检索到我的 rails 应用程序时遇到了一些问题。很奇怪,因为这个周末才开始断,我不知道为什么。将代码回滚到先前的提交,此时我确定该代码有效的页面,没有工作。在之前的提交中,代码仍然被破坏。此外,我没有更改代码。我试图找出问题所在。我已经隔离了问题出在哪一行代码,但我不确定发生了什么。

以前,在视图中,我们有以下代码。此代码有效,直到本周末。

<%= @stripe_details[:active_card][:type] %>, ending in <%= @stripe_details[:active_card][:last4] %><br/>

控制器中的以下代码支持这一点:

if current_user.stripe_id
  @stripe_details = Stripe::Customer.retrieve(current_user.stripe_id).to_hash
end

梳理了 Stripe API 文档后,似乎问题在于 Stripe 没有返回 active_card。它确实返回一个 default_card。但是,当我将代码切换为以下内容时:

<%= @stripe_details[:default_card][:type] %>, ending in <%= @stripe_details[:default_card][:last4] %><br/>

我收到一个错误:无法将符号转换为整数。

我不知道发生了什么,因为正如我所说,帖子顶部的版本没有问题,直到突然没有问题。可能值得一提的是,我不小心使用测试 API 密钥而不是实时密钥推送和部署了代码,并且用户的帐户是使用实时密钥创建的,这似乎是一个潜在的触发事件。但是,我发现了这一点,并将代码更改为正确的实时键,并且开始出现此问题。(当使用了错误的键时,我收到了一条错误,提示客户在 Stripe 数据库的测试版本中不存在。)

我只是对 a) 当我们从 API 调用错误的东西时我们的代码如何工作(我继承了这个代码)以及 b) 为什么它停止工作以及如何让它再次工作感到困惑。什么坏了?谢谢。

4

1 回答 1

3

Stripe API 升级页面列出了以下最近的更新,这听起来与您所看到的内容有关:

2013-07-05 客户对象现在包括一个卡片子列表和一个 default_card id 来代替完全展开的 active_card。default_card 属性可以在检索客户时扩展为卡片对象,但默认不扩展。

Stripe customer 对象现在返回一个卡片列表和另一个 default_card 属性,据我所知,它是默认卡片的 ID,然后可以在卡片列表中找到它。

于 2013-07-16T18:16:13.277 回答