部署到heroku时,Paypal快速结账不起作用。

时间:2015-10-08 00:38:31

标签: ruby-on-rails ruby heroku paypal

我正在尝试将Paypal checkout集成到我的Rails应用程序中,当我将其部署到Heroku时,我遇到了一个问题。它在我的开发环境中工作得很好,但是当我尝试在我的生产级别上使用它时,应用程序崩溃了。我一直在关注本教程:http://www.gotealeaf.com/blog/basic-paypal-checkout-processing-in-rails

在我的rails应用程序中,我有一个注册模型,一旦创建了注册对象,它就会将用户发送到Paypal URL。用户完成付款后,会将用户发回我的网站。 这是我的控制器中用于付款的相关代码:

def create
respond_to do |format| 
      if @registration.save
        format.html { redirect_to @registration.paypal_url(yea_school_registration_path(@yea_school, @registration), @amount), notice: "You should recieve an email soon." }
        format.json { render :show, status: :created, location: @registration }
      else
        format.html { render :new }
        format.json { render json: @registration.errors, status: :unprocessable_entity }
      end
end
end


   def hook

    params.permit!
    status = params[:payment_status]
    if status == "Completed"
      @registration = Registration.find(params[:id]) 
      @registration.update_attributes notification_params: params, status: status, transaction_id: params[:txn_id], purchased_at: Time.now
    end
      render nothings: true
  end

这是我的控制器文件中付款流程所需的代码。快速向下走,一旦创建了对象,它就会将其重定向到通过我模型中的方法生成的贝宝网址。实例变量@amount实际上不是注册模型的一部分。它是用于确定用户是否从他们的订单中取出任何钱的不同模型的一部分。再次,这在我的开发环境中完全正常,所以我不相信这是问题所在。

这是用于在我的模型中创建网址的代码:

serialize :notification_params, Hash
  def paypal_url(return_path, amount)
    @amount = amount 
    values = {
    business: "fake@email.com",
    cmd: "_xclick",
    upload: 1,
    return: "#{ENV["app_host"]}#{return_path}",
    invoice: id,
    amount: 20 - @amount,
    item_name: "Item",
    item_number: id,
    quantity: '1',
    notify_url: "#{ENV["app_host"]}/hook"
    }
    "#{ENV["paypal_host"]}/cgi-bin/webscr?" + values.to_query
end

在此,将值的散列发送到Paypal,并生成Paypal URL以及返回URL。 app_host是我网站的网址,paypal_url是Paypal的网址。这些作为环境变量保存。我已经在Heroku中声明了这些变量。我的其他环境变量有效,所以我不知道这是不是问题。

正在创建注册对象,但它不会支付Paypal。同样,这在我的开发环境中运行良好,但是当我尝试在我的生产级别上进行测试时,在Heroku中,它会崩溃。我是Ruby on Rails的新手,也是Paypal的新手。如果你有一个非常棒的答案,那么非常感谢你的帮助!

0 个答案:

没有答案