2016-01-29 3 views
0

Я использую Braintree для обработки платежей через мое веб-приложение, никаких проблем до сих пор, много документации, но немного не знаю, как обращаться с ошибками в моем контроллере. Я не думаю, что я должен искать, чтобы отобразить все сообщения об ошибках пользователю, поскольку это может представлять угрозу безопасности, но я бы хотел обработать мои ошибки лучше, чем сейчас, возможно, захватив выбор общих ошибок?Обработка ошибок с помощью Braintree - Ruby

Вопрос в том, как я могу их захватить в пределах rescue или создать метод, с помощью которого будут проходить ошибки, а затем отобразить некоторые пользовательские сообщения для определенных ошибок?

На данный момент у меня есть очень простое действие контроллера

@result = Braintree::Transaction.sale(
      amount: @amount, 
      payment_method_nonce: params[:payment_method_nonce], 
      options: { 
       submit_for_settlement: true 
      } 
     ) 
if @result.success? 
    redirect_to thank_you_path 
else 
    flash[:alert] = 'Something went wrong while processing your transaction. Please try again!' 
    gon.client_token = generate_client_token 
    render :new 
end 

Я просто показать общий «Что-то пошло не так», когда сообщение @result не увенчались успехом.

Я уверен, что есть более эффективные способы борьбы с этим и будут оценены любые предложения

Thnaks

ответ

1

Результатом является экземпляром объекта, having the whole information about transaction status.

Вы можете извлечь любую необходимую информацию и распечатать ее клиенту.

E.g. группировать сообщения по коду ошибки, можно использовать л так:

unless @result.success? 
    flash[:alert] = case @result.transaction.processor_response_code.to_s 
        when /^2/ then "Contact bank" 
        else "Something went wrong" 
        end 
    ... 
end 
+0

Спасибо, я заметил, что там много кодов состояния, которые могут быть возвращены https://developers.braintreepayments.com/reference/general/processor-response/authorization-response, я не хочу печатать каждое сообщение как возвращаемое, больше похоже на то, что коды '2002, 2003, 2004' печатают' Contact bank'. Как сгруппировать их вместе и представить в контроллере – Richlewis

+0

Написав код, он объединяет нужные сообщения и представляет их в контроллере. Этот сайт не «напишите код для меня бесплатно». – mudasobwa

+0

Я не прошу раздаточный материал, просто указатель в правильном направлении, ресурс, на который нужно смотреть. Я ищу наилучшую практику, как это сделать в Rails. Im думает метод, который принимает объект результата и находит код состояния, но является ли один аргумент большого дела эффективным способом справиться с этим? – Richlewis

Смежные вопросы