PayPal错误10002:安全错误安全标头无效

时间:2014-03-03 21:56:28

标签: ruby-on-rails paypal

我正在关注RailsCast#289,在完成教程后我收到了一个RuntimeError:

[{:code=>"10002", :messages=>["Security error", "Security header is not valid"]}]
单击订阅页面上的Checkout with PayPal按钮时出现

错误。

错误指向行上的paypal_payment.rb

raise response.errors.inspect if response.errors.present?

Paypal_Payment.rb:

  def initialize(subscription)
    @subscription = subscription
  end

  def checkout_details
    process :checkout_details
  end

  def checkout_url(options)
    process(:checkout, options).checkout_url
  end

  def make_recurring
    process :request_payment
    process :create_recurring_profile, period: :monthly, frequency: 1, start_at: Time.zone.now
  end

private

  def process(action, options = {})
    options = options.reverse_merge(
      token: @subscription.paypal_payment_token,
      payer_id: @subscription.paypal_customer_token,
      description: @subscription.plan.name,
      amount: @subscription.plan.price,
      currency: "USD"
    )
    response = PayPal::Recurring.new(options).send(action)
    raise response.errors.inspect if response.errors.present?
    response
  end
end

订阅控制器:

  def new
    plan = Plan.find(params[:plan_id])
    @subscription = plan.subscriptions.build
    if params[:PayerID]
      @subscription.paypal_customer_token = params[:PayerID]
      @subscription.paypal_payment_token = params[:token]
      @subscription.email = @subscription.paypal.checkout_details.email
    end
  end

  def create
    @subscription = Subscription.new(params[:subscription])
    if @subscription.save_with_payment
      redirect_to @subscription, :notice => "Thank you for subscribing!"
    else
      render :new
    end
  end

  def show
    @subscription = Subscription.find(params[:id])
  end

  def paypal_checkout
    plan = Plan.find(params[:plan_id])
    subscription = plan.subscriptions.build
    redirect_to subscription.paypal.checkout_url(
      return_url: new_subscription_url(:plan_id => plan.id),
      cancel_url: root_url
    )
  end
end

我在初始化程序中输入了正确的用户,密码和签名。可能是我在localhost吗?

1 个答案:

答案 0 :(得分:1)

如果您处于测试模式,则需要修改初始值设定项并将config.sandbox=true更改为false。 Railscast设置为实时模式。