module Payanyway::Controller

Public Instance Methods

check() click to toggle source
# File lib/payanyway/controller.rb, line 51
def check
  request = Payanyway::Request::Check.new(permitted_params)
  if request.pretty_params.present?
    raise request.error_message unless request.success?

    render xml: request.response(check_implementation(request.pretty_params)).to_xml
  else
    # Не выдавать ошибку, если параметры пустые
    # Необходимо для проверки со стороны moneta.ru
    head :ok
  end
end
fail() click to toggle source
# File lib/payanyway/controller.rb, line 33
def fail
  request = Payanyway::Request::Base.new(permitted_params)

  fail_implementation(request.pretty_params[:transaction_id])
end
in_progress() click to toggle source
# File lib/payanyway/controller.rb, line 45
def in_progress
  request = Payanyway::Request::Base.new(permitted_params)

  in_progress_implementation(request.pretty_params[:transaction_id])
end
pay() click to toggle source
# File lib/payanyway/controller.rb, line 14
def pay
  request = Payanyway::Request::Pay.new(permitted_params)
  request.success? ?
    pay_implementation(request.pretty_params) :
    Rails.logger.error(request.error_message)

  if Gem::Version.new(Rails.version) < Gem::Version.new('5.1')
    render text: request.response
  else
    render plain: request.response
  end
end
return() click to toggle source
# File lib/payanyway/controller.rb, line 39
def return
  request = Payanyway::Request::Base.new(permitted_params)

  return_implementation(request.pretty_params[:transaction_id])
end
success() click to toggle source
# File lib/payanyway/controller.rb, line 27
def success
  request = Payanyway::Request::Base.new(permitted_params)

  success_implementation(request.pretty_params)
end

Private Instance Methods

check_implementation(params) click to toggle source
# File lib/payanyway/controller.rb, line 107
def check_implementation(params)
  # Ответ на запрос о проверке заказа
  # { amount: AMOUNT, state: STATE, description: description, attributes: ATTRIBUTES, logger: logger }

  { amount: params[:amount], state: :unpaid, description: 'Test description' }
end
fail_implementation(transaction_id) click to toggle source
# File lib/payanyway/controller.rb, line 86
def fail_implementation(transaction_id)
  # Вызывается после ошибки при оплате

  Rails.logger.error("PAYANYWAY: Fail paid order '#{ transaction_id }'")
  head :ok
end
in_progress_implementation(transaction_id) click to toggle source
# File lib/payanyway/controller.rb, line 100
def in_progress_implementation(transaction_id)
  # Вызывается после успешного запроса на авторизацию средств, до подтверждения списания и зачисления средств

  Rails.logger.info("PAYANYWAY: Order '#{ transaction_id }' in progress")
  head :ok
end
pay_implementation(params) click to toggle source
# File lib/payanyway/controller.rb, line 71
def pay_implementation(params)
  # Вызывается после успешного прохождения
  # запроса об оплате от payanyway.ru

  Rails.logger.info("PAYANYWAY: Success paid order #{ params[:transaction_id] }")
end
permitted_params() click to toggle source
# File lib/payanyway/controller.rb, line 66
def permitted_params
  params.permit! if params.respond_to?(:permit!)
  params.to_h
end
return_implementation(transaction_id) click to toggle source
# File lib/payanyway/controller.rb, line 93
def return_implementation(transaction_id)
  # Вызывается при добровольном отказе пользователем от оплаты

  Rails.logger.info("PAYANYWAY: Return from payanyway. Order '#{ transaction_id }'")
  head :ok
end
success_implementation(params) click to toggle source
# File lib/payanyway/controller.rb, line 78
def success_implementation(params)
  # Вызывается после успешной оплаты
  puts Rails.logger.object_id

  Rails.logger.info("PAYANYWAY: Called success payment url for order '#{ params[:transaction_id] }'")
  head :ok
end