【问题标题】:Rails 4 - Users are able to book spaces even if they back out of PayPal paymentRails 4 - 用户即使退出 PayPal 付款也可以预订空间
【发布时间】:2015-09-23 00:42:21
【问题描述】:

所以我有一个电子商务类型的 rails 应用程序,用户可以在其中列出要预订的空间,而其他用户可以在指定的时间内预订这些空间。

我使用本教程 http://www.gotealeaf.com/blog/basic-paypal-checkout-processing-in-rails 来设置我的系统。

用户提交表单以创建新预订后,他们会被重定向到 PayPal 网站,并在该网站上登录 paypal,确认他们正在付款,一旦他们付款,他们就可以选择返回我的网站并查看他们的预订发票。

我的问题是,当用户在他们的新预订表单上单击提交并被带到贝宝网站时,他们可能会在浏览器上按回,将他们带回我的网站,但他们的预订现在被记录了。

除非通过贝宝付款,否则我如何阻止记录被记录?

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

def create
    @booking =  Booking.new(params[:booking].permit(booking_params)
    @booking.space = @space
    Space.find(@space.id).update_attributes( :balance => @space.balance + (@booking.length * @space.hourly_rate))
    if @booking.save
      redirect_to @booking.paypal_url(space_booking_path(@space, @booking))
    else
      render 'new'
    end
end     

还有我的 app/models/booking.rb:

class Booking < ActiveRecord::Base
include Bookable

  def paypal_url(return_path)
  values = {
    business: "nikia.i-facilitator@peerparking.ca",
    cmd: "_xclick",
    upload: 1,
    return: "#{Rails.application.secrets.app_host}#{return_path}",
    invoice: id * rand(19284),
    amount: space.hourly_rate * length,
    item_name: space.address,
    item_number: space.id,
    quantity: '1',
    notify_url: "#{Rails.application.secrets.app_host}/hook"
  }
  "#{Rails.application.secrets.paypal_host}/cgi-bin/webscr?" + values.to_query
  end

end

以及我的routes.rb中的相关路线

post "spaces/:space_id/bookings/:id" => "bookings#show"

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 paypal paypal-sandbox


    【解决方案1】:

    浏览器后退箭头应该返回到用户已经在您的站点上的 URL。此 URL 不应认为付款已完成(并按顺序预订)。在重定向到 PayPal 之前在您的页面上点击浏览器重新加载是否也允许用户完成预订?

    假设您使用的是 Website Payments Stnadard,您通常只会在用户到达您提供给 PayPal 的 return_url 时才处理预订,然后您的代码会成功处理 PayPal 将包含在发回给您的帖子中的结果变量。 (或者对于付款但不直接返回您的网站的客户,您可以使用 IPN 将付款关联到客户的帐户,以便他们的订单可以异步完成。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-30
      • 2014-06-23
      • 2013-05-06
      • 2015-01-19
      • 2015-12-23
      • 2013-06-05
      • 2013-02-22
      相关资源
      最近更新 更多