Как проверить, существует ли Stripe Error / помещает ли Stripe Error, если она существует - PullRequest
0 голосов
/ 13 февраля 2019

В моих Rails-приложениях я пытаюсь выполнить только команду Stripe Charge, ЕСЛИ ошибка Stripe не существует.И я хочу иметь возможность проверить ошибку Stripe.

charge = Stripe::Charge.create(
  :amount => amount_in_cents,
  :customer => stripe_customer,
  :description => "my application",
)

Должно быть что-то вроде:

unless Stripe.errors.exists? do
   charge = Stripe::Charge.create(
      :amount => amount_in_cents,
      :customer => stripe_customer,
      :description => "my application",
   )
end

И чтобы быть уверенным, что мой код работает, я пытаюсь puts Ошибка Полосы, если она существует.Является ли Ошибка Полосы объектом, который я могу puts?

Например:

if Stripe.error.exists?
    puts Stripe.error
end

Попытка увидеть выходные данные с помощью команд puts как в моей модели, так и в моейфайл тестирования, например, так:

Чтобы преднамеренно создать ошибку:

StripeMock.prepare_card_error(:card_declined)

Я пытаюсь puts это (но ни одно из следующих действий не работает):

puts "Stripe Card Error: #{Stripe::CardError}"

begin
  rescue Stripe::CardError => e
  body = e.json_body
  err  = body[:error]
  puts err.exists?
  puts err
end

puts err.exists?
puts err

Когда я пытаюсь что-то вроде:

error = Stripe::CardError
if error
  rescue Stripe::CardError => e
end

, это недопустимо, и также не if Stripe.error или if Stripe::CardError или if Stripe::CardError.exists?.

Должна быть некоторая ошибка полосы object что мы можем применить логику к?!?

Любая помощь по puts осмотру / проверке ошибки нашивки будет принята, спасибо.

1 Ответ

0 голосов
/ 14 февраля 2019

Построение комментариев к исходному вопросу: вы хотите поймать исключение, выданное Stripe::charge.create().

begin
  puts "About to create charge"
  charge = Stripe::Charge.create(
    :amount => amount_in_cents,
    :customer => stripe_customer,
    :description => "my application",
  )
  # The next line only runs if Charge.create() did not raise an exception

  puts "Created charge #{charge.id}"
  MyDatabase.insert(charge.id)

rescue Stripe::CardError => e
  # An error was thrown, so execution of the begin block did not complete
  puts e
end

Вот краткое руководство по обработке исключений в Ruby .

...