class RubyPayler::Payler

Wrapper for payler gate api

Attributes

debug[R]
host[R]
key[R]
password[R]
payler_url[R]

Public Class Methods

new(host:, key:, password:, debug: false) click to toggle source
# File lib/ruby_payler/payler.rb, line 8
def initialize(host:, key:, password:, debug: false)
  @host = host
  @key = key
  @password = password
  @debug = debug

  @payler_url = "https://#{host}.payler.com/gapi/"
end

Public Instance Methods

activate_template(recurrent_template_id, active) click to toggle source
# File lib/ruby_payler/payler.rb, line 77
def activate_template(recurrent_template_id, active)
  call_payler_api('ActivateTemplate',
    recurrent_template_id: recurrent_template_id,
    active: active,
  )
end
charge(order_id, amount) click to toggle source
# File lib/ruby_payler/payler.rb, line 47
def charge(order_id, amount)
  call_payler_api('Charge',
    password: password,
    order_id: order_id,
    amount: amount,
  )
end
find_session(order_id) click to toggle source
# File lib/ruby_payler/payler.rb, line 31
def find_session(order_id)
  call_payler_api('FindSession', order_id: order_id)
end
get_advanced_status(order_id) click to toggle source
# File lib/ruby_payler/payler.rb, line 43
def get_advanced_status(order_id)
  call_payler_api('GetAdvancedStatus', order_id: order_id)
end
get_status(order_id) click to toggle source
# File lib/ruby_payler/payler.rb, line 39
def get_status(order_id)
  call_payler_api('GetStatus', order_id: order_id)
end
get_template(recurrent_template_id) click to toggle source
# File lib/ruby_payler/payler.rb, line 71
def get_template(recurrent_template_id)
  call_payler_api('GetTemplate',
    recurrent_template_id: recurrent_template_id,
  )
end
pay_page_url(session_id) click to toggle source
# File lib/ruby_payler/payler.rb, line 35
def pay_page_url(session_id)
  "#{payler_url}Pay?key=#{key}&session_id=#{session_id}"
end
refund(order_id, amount) click to toggle source
# File lib/ruby_payler/payler.rb, line 63
def refund(order_id, amount)
  call_payler_api('Refund',
    password: password,
    order_id: order_id,
    amount: amount,
  )
end
repeat_pay(order_id:, amount:, recurrent_template_id:) click to toggle source
# File lib/ruby_payler/payler.rb, line 84
def repeat_pay(order_id:, amount:, recurrent_template_id:)
  call_payler_api('RepeatPay',
    order_id: order_id,
    amount: amount,
    recurrent_template_id: recurrent_template_id,
  )
end
retrieve(order_id, amount) click to toggle source
# File lib/ruby_payler/payler.rb, line 55
def retrieve(order_id, amount)
  call_payler_api('Retrieve',
    password: password,
    order_id: order_id,
    amount: amount,
  )
end
start_session( type:, order_id:, cents:, **other_session_params ) click to toggle source
# File lib/ruby_payler/payler.rb, line 17
def start_session(
  type:,
  order_id:,
  cents:,
  **other_session_params
)
  call_payler_api('StartSession',
    type: type,
    order_id: order_id,
    amount: cents,
    **other_session_params,
  )
end

Private Instance Methods

call_payler_api(endpoint, params) click to toggle source
# File lib/ruby_payler/payler.rb, line 98
def call_payler_api(endpoint, params)
  remove_nils_from_params!(params)
  params[:key] = key

  begin
    response = connection.post(endpoint, params)
  rescue Faraday::Error => faraday_error
    raise RubyPayler::NetworkError, faraday_error
  end

  response_body = response.body
  if (response_body.class != Hashie::Mash) ||
     (response.status != 200 && !response_body.include?(:error))
    raise RubyPayler::UnexpectedResponseError, response
  end

  raise RubyPayler::ResponseError, response if response_body.error

  response_body
end
connection() click to toggle source
# File lib/ruby_payler/payler.rb, line 94
def connection
  @connection ||= Connection.new(url: payler_url, key: key, debug: debug)
end
remove_nils_from_params!(params) click to toggle source
# File lib/ruby_payler/payler.rb, line 119
def remove_nils_from_params!(params)
  params.delete_if { |_key, value| value.nil? }
end