Rails数据回调发布

时间:2014-05-06 11:22:27

标签: ruby-on-rails post callback request

作为我的rails应用程序的一部分,用户可以向我们的慈善机构捐款。我只是将用户链接到支付处理公司网站上的外部表单,并在参数中使用我们的唯一ID。一旦事务成功,它就会重定向回我的应用程序上的URL。

作为此过程的一部分,填写在表单,电子邮件地址,捐款金额等上的信息应该回发到我网站上的URL。该信息将作为表单发布回发。我已将URL的路由设置为发布请求。我目前正在查看标题,但我看不到这些信息,到目前为止我已尝试过:

<%= params %>
<%= request.POST %>
<%= request.headers %>
<%= request.env["HTTP_ACCEPT"] %>
<%= request.env["HTTP_HOST"] %>
<%= request.env["HTTP_USER_AGENT"] %>

我现在如何访问这些信息?与我的朋友说,他说信息应该在HTTP标题中,但我不确定我应该做些什么才能查看它。我需要检查交易是否成功,应该返回'transStatus',其值为Y / N.

任何帮助表示赞赏,道歉我是新手。

由于

1 个答案:

答案 0 :(得分:0)

如果信息被POST发送回您的应用程序,您应该可以通过Rails params哈希访问它们,如

params[:transStatus]

等等。在回调操作中,尝试检查params哈希并查看它包含的内容。

如果您想直接处理原始发布数据,可以使用ActionDispatch::Request's raw_post方法。

修改:如果您想访问请求的标头,可以使用ActionDispatch::Request's headers方法进行操作。它只提供了一个包含所有请求标头的类似哈希的结构。随意检查,迭代和访问您需要的那些!

作为一个具体的例子,假设您期望的标题是'transStatus',您可以在回调操作中执行类似的操作(控制器控制杆):

success = (request.headers['transStatus'] == 'Y') ? true : false

if success
  # transaction succeeded - success path here...
else
  # failure path
end

如果您不确定它是否为transStatus,那么您必须咨询外部服务的API,询问其开发人员,或者只是通过检查您收到的请求(headersparams)。