0

我正在使用 Google 电子钱包,我需要使用解码后的order_id. 这是我正在关注的教程:https ://developers.google.com/commerce/wallet/digital/training/getting-started/handle-notif 。谷歌检查(response.status == 200) && (response.content == orderId),从这个文档。如何将自定义content方法添加到响应对象、将 orderId 作为标头返回或其他内容?我查看了API 文档并没有看到任何有用的信息。

订单没有通过,因为我没有发回订单 ID。如果我不使用“回发网址”,订单就会通过。另外,我已经从控制器中删除了登录墙。

这是我的控制器的创建操作:

def create
  @postback_jwt = JWT.decode(params[:jwt], ENV['GOOGLE_WALLET_SECRET'])
  order_id = @postback_jwt["response"]["orderId"]
  render :new
end
4

2 回答 2

1

我不是红宝石人(我是 WISA),所以不确定这是否会有所帮助:

在 ASP(经典或 .Net)中,您将在响应正文中写入 orderId,例如

Response.ContentType = "text/plain";
Response.Write(orderId); 

我认为这篇SO 帖子:rails has a 'response.write'会有所帮助。

嗯..

于 2013-08-14T02:43:51.070 回答
0

感谢 EdSF 的指导:

def create
  @postback_jwt = JWT.decode(params[:jwt], ENV['GOOGLE_WALLET_SECRET'])
  order_id = @postback_jwt["response"]["orderId"]
  render :new
  response.body = order_id
end

另外一个选项:

def create
  @postback_jwt = JWT.decode(params[:jwt], ENV['GOOGLE_WALLET_SECRET'])
  order_id = @postback_jwt["response"]["orderId"]
  render text: order_id
end

响应的顺序和渲染通过我关闭。该response.body...线需要低于该render...线。否则渲染将清除主体。并且redirect不起作用。

两者都不能在开发中工作,因为您无法回发到本地主机。因此必须在生产/登台服务器上进行测试。

于 2013-08-14T04:16:03.170 回答