class Culqi::Client

Constants

ERROR_MESSAGES

Public Class Methods

new(key, endpoint, code) click to toggle source
# File lib/culqi/client.rb, line 10
def initialize(key, endpoint, code)
  @key  = key
  @url  = URI(endpoint + '/api/v1/web/crear')
  @code = code
end

Public Instance Methods

crear_venta(attrs) click to toggle source
# File lib/culqi/client.rb, line 16
def crear_venta(attrs)
  sale    = Culqi::Sale.new(attrs)
  request = http_request(sale.payload)

  http_response(request)
end

Private Instance Methods

encryptor() click to toggle source
# File lib/culqi/client.rb, line 47
def encryptor
  @encryptor ||= Culqi::Encryptor.new
end
http_client() click to toggle source
# File lib/culqi/client.rb, line 25
def http_client
  http             = Net::HTTP.new(@url.host, @url.port)
  http.use_ssl     = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  http
end
http_request(payload) click to toggle source
# File lib/culqi/client.rb, line 32
def http_request(payload)
  request                 = Net::HTTP::Post.new(@url)
  request['content-type'] = 'application/json'
  request.body            = { codigo_comercio: @code, informacion_venta: encryptor.encrypt(payload) }.to_json
  request
end
http_response(request) click to toggle source
# File lib/culqi/client.rb, line 39
def http_response(request)
  response = http_client.request(request)

  raise "#{ ERROR_MESSAGES[:failed_request] } #{ response.code }" unless response.code == '200'

  JSON.parse(encryptor.decrypt(response.body))
end