【问题标题】:Handling errors with Braintree in Ruby在 Ruby 中使用 Braintree 处理错误
【发布时间】:2016-01-29 08:17:29
【问题描述】:

我正在使用 Braintree 通过我的 Web 应用程序处理付款,到目前为止没有问题,有大量文档,但只是有点不确定如何处理我的控制器中的错误。我认为我不应该将所有错误消息都显示给用户,因为这可能会带来安全风险,但我想比现在更好地处理我的错误,也许可以捕获一些通用错误?

这里的问题的重点是我将如何在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 不成功时,我只是显示一个通用的“出现问题”消息。

有没有更好的方法来处理这个问题?

【问题讨论】:

    标签: ruby ruby-on-rails-4 braintree


    【解决方案1】:

    结果是一个对象的实例,having the whole information about transaction status

    您可以提取任何您想要的信息并将其打印给客户。

    例如要按错误代码对消息进行分组,可以这样使用:

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

    【讨论】:

    • 谢谢,我注意到有很多状态码可以返回developers.braintreepayments.com/reference/general/…,我不想打印返回的每条消息,更像是如果代码2002, 2003, 2004打印Contact bank .我如何将这些组合在一起并呈现在我的控制器中
    • 通过编写代码,将所需的消息组合在一起,并将它们呈现在控制器中。这个网站不是“请免费为我写代码”的网站。
    • 我不是要讲义,只是指向正确方向的指针,请查看资源。我正在寻找如何在 Rails 中执行此操作的最佳实践。我正在考虑一种获取结果对象并找到状态代码的方法,但是一个大的案例语句是一种有效的处理方法吗?
    • 谢谢,那么使用case语句就没有错了吗?
    • case 在任何地方都很好,为什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 2012-01-15
    相关资源
    最近更新 更多