class Conekticut::Client::Payment

Public Class Methods

create(url = nil, payment_info = {}) click to toggle source
# File lib/conekticut/client/payment.rb, line 9
def self.create(url = nil, payment_info = {})
  unless RequestHandler.has_valid_api_key?
    raise StandardError, "Please, verify your api key."
  end

  request_options = {
    :headers => {
      :user_agent => "Conekta RubyBindings/#{Base.conekta_version}",
      :authorization => "Basic #{::Base64.encode64("#{Base.private_key}:")}",
      :accept=>"application/vnd.conekta-v#{ Base.api_version }+json"
    }, :method => :post, :open_timeout => 30,
    :payload => payment_info, :url => RequestHandler.format_api_path(url),
    :timeout => 80
  }

  if RequestHandler.require_ssl?
    request_options.update(:verify_ssl => OpenSSL::SSL::VERIFY_PEER,
      :ssl_ca_file => Base.ssl_cert_path)
  end

  unless payment_info.respond_to? :to_hash
    raise StandardError, "Expected: Hash, got: #{params.class}"
  end

  full_request_url = RequestHandler.format_api_path(url)

  begin
    response = ::RestClient::Request.execute(request_options)
  rescue RestClient::UnprocessableEntity => e
    return { "status" => 422, "message" => e.message }
  end

  ::MultiJson.load response
end