Sha256: 216f34b9ecf80c78e7ade0661ab908e431d1915ebe9277a445d14e7efdf26b96

Contents?: true

Size: 1.98 KB

Versions: 4

Compression:

Stored size: 1.98 KB

Contents

module BraspagPagador
  module Crypto
    class Webservice
      def encrypt(connection, map)
        data = ERB.new(File.read(BraspagPagador::PATH + '/braspag-pagador/templates/crypto/encrypt.xml.erb'))

        response = BraspagPagador::Poster.new(
          connection,
          connection.url_for(:encrypt)
        ).do_post(
          :encrypt,
          data.result(binding),
          {"Content-Type" => "text/xml"}
        )

        document = Nokogiri::XML(response.body)

        raise 'UnknownError' if document.children.empty?

        #melhorar este parser cof cof
        response = document.children.children.children.children.children.to_s

        raise 'InvalidMerchantId' if (response == 'Erro BP 011' || response == 'Erro BP 012')
        raise 'InvalidIP' if (response == 'Erro BP 067' || response == 'Erro BP 068')

        response
      end

      def decrypt(connection, encripted_text)
        data = ERB.new(File.read(BraspagPagador::PATH + '/braspag-pagador/templates/crypto/decrypt.xml.erb'))

        response = BraspagPagador::Poster.new(
          connection,
          connection.url_for(:decrypt)
        ).do_post(
          :decrypt,
          data.result(binding),
          {"Content-Type" => "text/xml"}
        )

        document = Nokogiri::XML(response.body)
        raise 'UnknownError' if document.children.empty?

        result_error = document.children.children.children.children.children.first.content.to_s

        raise 'InvalidMerchantId' if (result_error == 'Erro BP 011' || result_error == 'Erro BP 012')
        raise 'InvalidIP' if (result_error == 'Erro BP 067' || result_error == 'Erro BP 068')

        convert_request_to_map document
      end

      protected
      def convert_request_to_map(document)
        map = {}
        document.children.children.children.children.children.each do |n|
          values = n.content.to_s.split("=")
          map[values[0].downcase.to_sym] = values[1] if values.size == 2
        end
        map
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
braspag-pagador-1.0.1 lib/braspag-pagador/crypto/webservice.rb
braspag-pagador-1.0.0 lib/braspag-pagador/crypto/webservice.rb
braspag-pagador-0.9.6 lib/braspag-pagador/crypto/webservice.rb
braspag-pagador-0.9.5 lib/braspag-pagador/crypto/webservice.rb