Rails,如何从控制器提交 PayPal 请求,而不是表单,URL 编码

Posted

技术标签:

【中文标题】Rails,如何从控制器提交 PayPal 请求,而不是表单,URL 编码【英文标题】:Rails, How to submit PayPal requests from controller, instead of a form, URL encoding 【发布时间】:2011-08-21 05:52:39 【问题描述】:

我们正在尝试从控制器而不是表单向 PayPal 提交请求。当我们使用表单版本时,一切正常,但是当我们在控制器中使用重定向时,无论我们做什么都会出错。似乎存在某种 URL 编码问题。

表格:

控制器: 我们已经尝试了以下所有方法,但都导致错误。

redirect_to Paypal_URL + "?cmd=_s-xclick:encrypted=" + @paypal_link 并返回 => Rails 给我们 URI 错误

redirect_to URI.encode(Paypal_URL + "?cmd=_s-xclick:encrypted=" + @paypal_link) 并返回 => 我们从贝宝收到 500 错误。看起来链接编码错误

【问题讨论】:

【参考方案1】:

迈克,

这可能不是问题的最佳解决方案,但我还需要从控制器重定向到 Paypal 付款网址。以下对我来说很好:

if @project.save!

  # Send to PayPal
  redirect_to URI.encode("https://www.paypal.com/cgi-bin/webscr" + "?cmd=_xclick&business=sales@domain.com&currenct_code=USD&item_name#@project.name&amount=#@project.price")

else
  # not created
  redirect_to :back, :notice => "Didn't work"
end

【讨论】:

以上是关于Rails,如何从控制器提交 PayPal 请求,而不是表单,URL 编码的主要内容,如果未能解决你的问题,请参考以下文章

如何从控制器向 PayPal 发送数据?

从 PHP 表单向 PayPal 提交订阅请求

Rails:从 submit_tag 更改表单操作

提交已作为对象存在的表单数据(rails3.22)

Ruby on rails -- Jquery 在另一个 post 请求之前没有提交 put 请求

如何使用 AJAX 请求将用户在类变量中的 HTML5 位置从 JavaScript 传递到 Rails 控制器?