Почему интеграция Stripe API внезапно генерирует ошибки, которые не могут преобразовать символы в целые числа?

У меня возникли проблемы с получением данных из 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

Изучив документацию по API Stripe, выяснилось, что проблема в том, что Stripe не возвращает active_card. Он возвращает default_card. Однако, когда я переключил код на следующее:

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

Я получил ошибку: не могу преобразовать символ в целое число.

Я понятия не имею, что происходит, потому что, как я уже сказал, версия в начале поста работала без проблем, пока вдруг не перестала. Возможно, стоит упомянуть, что то, что казалось потенциально триггерным событием для этого, заключалось в том, что я случайно отправил и развернул код с тестовыми ключами API вместо живых ключей, а учетная запись пользователя была создана с живыми ключами. Однако я уловил это и изменил коды на правильные живые ключи, и эта проблема начала возникать. (Когда использовались неправильные ключи, я получал ошибку о том, что клиент не существует в тестовой версии базы данных Stripe.)

Я просто озадачен тем, а) как наш код работал, когда мы вызывали не ту вещь из API (я унаследовал этот код) и б) почему он перестал работать и как заставить его работать снова. Что сломано? Спасибо.


person ctaymor    schedule 15.07.2013    source источник


Ответы (1)


На странице обновлений Stripe API перечислены следующие недавние обновления, которые, похоже, делать с тем, что вы видите:

2013-07-05 Объекты клиентов теперь включают в себя подсписок карт и идентификатор default_card вместо полностью развернутой активной_карты. Атрибут default_card может быть развернут в объект карты при извлечении клиента, но по умолчанию он не раскрывается.

Объекты клиентов Stripe теперь возвращают список карт и другой атрибут default_card, который, насколько я могу судить, является идентификатором карты по умолчанию, который затем можно найти в списке карт.

person af.    schedule 16.07.2013
comment
Спасибо! Это объясняет, почему это произошло внезапно, И почему я не могу преобразовать символ в целое число. Я не получаю расширенную карту. Я видел это, когда пошел на обновление, но не думал, что это повлияет на наш код (который я не писал). Что ж, когда-нибудь, когда я наделаю достаточно таких ошибок, учиться на них будет то, что поможет я не новичок в этом. - person ctaymor; 16.07.2013