Paypal-экспресс гем, работающий в dev, но не в prod

Так что у меня есть проблема, которую я не могу решить в одиночку.

Я запустил некоторый тест для моего приложения, и когда он запускается в dev, он работает отлично, но как только он работает в Prod и использует реальный идентификатор, он больше не работает.

Я получил эту ошибку:

Paypal::Exception::APIError (PayPal API Error: 'Security error'):/offers_controller.rb:218:in choose_step'

  if Rails.env.production?
    response = request.setup(
        payment_request,
        "http://www.workiz.com/recruteurs/paypal_callback/" + params[:app_id],
        "http://www.workiz.com/recruteurs/offres",
        paypal_options  # Optional
    )
  else # Development ou Test
    response = request.setup(
        payment_request,
        "http://localhost:3000/recruteurs/paypal_callback/" + params[:app_id],
        "http://localhost:3000/recruteurs/offres",
        paypal_options  # Optional
    )
  end

Это строка сбоя, так что когда я вызываю request.setup

Запрос создается так:

  if Rails.env.development?
    Paypal.sandbox!
    Paypal::Express::Request.new(
        username: ENV['PAYPAL_SANDBOX_USERNAME'],
        password: ENV['PAYPAL_SANDBOX_CLI_ID'],
        signature: ENV['PAYPAL_SANDBOX_SECRET']
    )
  elsif Rails.env.production?

    Rails.logger.info "Paypal SETUP PRODUCTION"

    Paypal::Express::Request.new(
        username: ENV['PAYPAL_USERNAME'],
        password: ENV['PAYPAL_CLI_ID'],
        signature: ENV['PAYPAL_SECRET']
    )
  end

И да, появляется журнал "Paypal SETUP PRODUCTION", и набор значений является хорошим из переменных ENV.

Я должен был поставить Paypal.sandbox! в config/development.rb, чтобы заставить его работать в песочнице, но я не могу найти способ заставить его работать для производства...

Любая помощь приветствуется. Большое спасибо.

У меня отображается ошибка, это выглядит так:

ERROR IS: #<Paypal::Exception::APIError::Response:0x007fa61661e040 
@raw={
:TIMESTAMP=>"2015-05-24T15:01:30Z", 
:CORRELATIONID=>"f3067f049ad", 
:ACK=>"Failure", 
:VERSION=>"88.0", 
:BUILD=>"1675131", 
:L_ERRORCODE0=>"10002", 
:L_SHORTMESSAGE0=>"Security error", 
:L_LONGMESSAGE0=>"Security header is not valid", 
:L_SEVERITYCODE0=>"Error"},

@ack="Failure", @build="16751317", @correlation_id="f3067f049a", @timestamp="2015-05-24T15:01:30Z", @version="88.0", @order_time=nil, @pending_reason=nil, @payment_status=nil, @payment_type=nil, @reason_code=nil, @transaction_type=nil, 
@error_code="10002", 
@severity_code="Error", 
@long_message="Security header is not valid", 
@short_message="Security error"

3 ответа

Подробно рассмотрите исключение, которое вы получаете.

Согласно https://github.com/nov/paypal-express/blob/master/lib/paypal/exception/api_error.rb ошибка должна содержать более полезную информацию из ответа API.

Просто поймайте исключение и распечатайте его содержимое:

begin
  response = request.setup...
rescue Paypal::Exception::APIError => error
  puts error.inspect
  raise error
end

Возможно, вам не хватает какой-либо конфигурации в вашей учетной записи PayPal. Подробное сообщение об ошибке и код ошибки должны указывать вам правильное направление.

Во-первых, дважды проверьте, что 2 набора учетных данных различны. Вам нужна другая учетная запись для песочницы, чем производство.

PAYPAL_SANDBOX_USERNAME != PAYPAL_USERNAME
PAYPAL_SANDBOX_CLI_ID != PAYPAL_CLI_ID
PAYPAL_SANDBOX_SECRET != PAYPAL_SECRET

Во-вторых, дважды проверьте правильность производственных учетных данных, то есть никаких лишних символов или опечаток.

Хорошо, я наконец нашел свою ошибку.

Похоже, вы не должны использовать CLI ID, PWD и SIGNATURE с "живой страницы" в вашем приложении.

Но вместо этого:

  1. Войдите в PayPal.com. Вы должны иметь учетную запись PayPal Business, чтобы совершать звонки на действующие серверы PayPal. Войдите в свою учетную запись Business на следующей странице: https://www.paypal.com/.

  2. Перейдите на страницу доступа к API. Откройте вкладку "Инструменты" и выберите "Управление бизнесом"> "Доступ к API".

Вот, пожалуйста, это хороший... Очень запутанно! Надеюсь, поможет

Другие вопросы по тегам