【问题标题】:Paypal return URL GET instead of POST - Rails贝宝返回 URL GET 而不是 POST - Rails
【发布时间】:2015-01-03 13:09:48
【问题描述】:

我使用贝宝付款。除返回 URL 外,一切正常。 Paypal 正在使用 POST 返回我的 Rails 应用程序,如何强制他使用 GET 代替?

def paypal_url(return_path, token_id, pack_id, amount)
    values = {
        business: "#{Rails.application.secrets.paypal_account}",
        cmd: "_xclick",
        upload: 1,
        return: "#{Rails.application.secrets.app_host}#{return_path}",
        invoice: id,
        amount: amount,
        item_name: Purchase.packs[pack_id].description,
        quantity: 1, # 1 pack
        notify_url: "#{Rails.application.secrets.app_host}/hook"
    }
    "#{Rails.application.secrets.paypal_host}/cgi-bin/webscr?" + values.to_query
  end

这是错误

Started POST "/users/1" for 90.62.1.250 at 2014-11-06 20:58:46 +0000
ActionController::RoutingError (No route matches [POST] "/users/1")

【问题讨论】:

  • 您是否尝试过启用 PDT?这是通过 GET 获得的回报:“要使用 PDT,您必须在您的 PayPal 帐户配置文件中激活 PDT 和自动退货。您还必须获得一个 PDT 身份令牌,该令牌用于您发送给 PayPal 的所有 PDT 通信。” developer.paypal.com/docs/classic/paypal-payments-standard/…

标签: ruby-on-rails post paypal get


【解决方案1】:

虽然这不是你想要的答案, 如果您想使用发送的给定发布请求,请添加到您的 routes.rb 文件(在配置中)

#routes.rb
post "/hook" => "modelname#hook"

然后在您的模型控制器中,定义一个新方法(名为 hook)来处理 post 请求

#modelname_controller.rb
protect_from_forgery except: [:hook]
def hook
  params.permit! # Permits the pay
  status = params[:payment_status]
  if status == "Completed"
    # Process the data
  end
  render nothing: true
end

【讨论】:

    猜你喜欢
    • 2011-03-06
    • 2017-02-26
    • 2020-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 2021-08-10
    相关资源
    最近更新 更多