【问题标题】:web hooks with braintree sandbox not returning 200带有 Braintree 沙盒的网络挂钩不返回 200
【发布时间】:2025-11-25 07:05:03
【问题描述】:

我正在使用braintree gem 和braintree 沙箱并尝试设置网络挂钩。我有以下代码:

class PaymentsController < ApplicationController
    def webhooks
        challenge = request.params["bt_challenge"]
        challenge_response = Braintree::WebhookNotification.verify(challenge)
        return [200, challenge_response]
    end
end

但由于某种原因,当我在 Braintree 的网站上按“创建网络挂钩”时,我被告知:

Destination could not be verified.

我检查了服务器日志,它正在接收请求,但由于某种原因返回 http 500 并显示以下内容:

2014-04-09T23:39:19.937280+00:00 app[web.1]: Completed 500 Internal Server Error in 71ms
2014-04-09T23:39:19.941486+00:00 app[web.1]: ActionView::MissingTemplate (Missing template payments/webhooks, application/webhooks with {:locale=>[:en], :formats=>[:xml, :html, :text, :js, :css, :ics, :csv, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :arb, :jbuilder, :haml]}. Searched in:

这表明控制器正在寻找视图但找不到。我不知道该怎么办。 web hooks action中的代码直接取自braintree的网站:https://www.braintreepayments.com/docs/ruby/guide/webhook_notifications

有谁知道如何解决这个问题?

【问题讨论】:

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


    【解决方案1】:

    我在布伦特里工作。如果您在集成方面需要更多帮助,或者有其他无法在此处轻松提出的问题,您可以联系our support team

    Braintree Webhook Guide 中的代码用于Sinatra,但您使用的是 Rails 4。

    你需要做类似的事情

    render plain: challenge_response, status: 200
    

    而不是

    return [200, challenge_response]
    

    在没有模板和200 状态码的情况下呈现质询响应。

    请参阅Layouts and Rendering in Rails 了解更多信息。

    【讨论】:

    • @Philip7899 render: plain 不应尝试使用模板。如果您仍然遇到问题,最好的办法是向我们的支持团队发送电子邮件(在 support@braintreepayments.com)并附上您的代码,以便他们可以尝试重现问题。抱歉回复延迟,我正在开会。
    • 您找到解决这些问题的方法了吗?我遇到了同样的问题,因为 Rails 尝试渲染模板,因此抛出了一个停止 BrainTree 验证过程的异常。
    • @Jose 关于如何呈现文本而不是模板,请参阅the RoR guide
    • 成功!这是 Rails 4 版本的问题,plain 选项仅在 Rails 4.1 及以上版本可用。详情在这里:*.com/questions/22980735/…
    最近更新 更多