redex 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 4cf86d74ee9fea2686018fceeb710d82307c04cc
4
+ data.tar.gz: b6724f7205af4724e07253e192eba751d6ce2cd3
5
+ SHA512:
6
+ metadata.gz: 2aae59ffbc39d9a03ad04efcf110dfa79389fabddf8a614b6a5d680b372c322c6204b8a62263fbf93d66256166b86602fecebe94b8dd8b55bc3f4d94c1067905
7
+ data.tar.gz: 19db95288a1573e6c3c446eae92b5783c35c05c65b077ffec531e4ec038e917ac409cb4351bfa669f1572d155f9f256de602249783d8b6e8d2b350f78b797a25
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+
11
+ # rspec failure tracking
12
+ .rspec_status
13
+
14
+ docker-compose.yml
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.4.1
5
+ before_install: gem install bundler -v 1.15.3
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in redex.gemspec
6
+ gemspec
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2017 REDEX
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,105 @@
1
+ # Redex
2
+
3
+ Uma refatoração da gem de integração para o sistema de pagamentos [eRede](https://www.userede.com.br/nossos-produtos/e-rede/)
4
+
5
+ O objetivo desta gem é normalizar nomes de campos, permitir o uso de classes do ruby na chamada serviços e mascarar a comunicação com um servidor SOAP (utilizando a gem [canned_soap](http://github.com/gknedo/canned_soap))
6
+
7
+ ## Funcionalidades
8
+ Resumo das operações suportadas pelo Redex.
9
+
10
+ ### Transações de Crédito
11
+
12
+ Todas as transações com autorização (captura) automática são suportadas. Apesar de transações de pré-autorização (sem captura) automática serem suportadas, a trasanção de captura ainda não foi desenvolvida.
13
+
14
+ ### Cancelamento
15
+
16
+ O cancelamento de transações de crédito são suportadas, mas assim como o serviço SOAP da eRede elas devem ser feitas no mesmo dia da captura. Transações de pré-autorização são suportadas e podem ser canceladas em até 29 dias da pré-autorização, após esse período elas são canceladas automaticamente
17
+
18
+ ### Consulta
19
+
20
+ Consultas são suportadas.
21
+
22
+ ## Funcionalidades não desenvolvidas ou em desenvolvimento
23
+
24
+ ### Transações Autenticadas (3D Security)
25
+
26
+ Transações autenticadas, seja de débito ou crédito, ainda não são suportadas.
27
+
28
+
29
+ ## Instalação
30
+
31
+ Adicione esta linha no seu Gemfile:
32
+
33
+ ```ruby
34
+ gem 'redex'
35
+ ```
36
+
37
+ Então execute:
38
+
39
+ $ bundle
40
+
41
+ Para instalar sem o bundle:
42
+
43
+ $ gem install redex
44
+
45
+ ## Utilização
46
+
47
+ ### Guia Rápido
48
+
49
+ Todas as requisições suportadas são utilizadas via sua respectiva classe, que ficam dentro do modulo `Redex::Request`, elas são inicializadas como um objeto padrão do ruby e são executadas ao chamar o método `result` e retornaram objetos do tipo response, que são do módulo `Redex::Response`.
50
+
51
+ *Objetos do tipo Request executam o request somente na primeira chamada do método result!*
52
+
53
+ Exemplo de uso:
54
+
55
+ ```ruby
56
+ request = Redex::Request::QueryRequest.new(transaction: 123456789)
57
+ response = request.result #Redex::Response::QueryResponse
58
+ response.credit_card_authorization_id
59
+ ```
60
+ ### Configuração
61
+
62
+ Antes de iniciar, é necessário configurar a autorização e a URL do servidor. Esta configuração pode ser sobrescrita em qualquer lugar do seu código.
63
+
64
+ ```ruby
65
+ Redex.configuration do |config|
66
+ config.secret_pv = 123456789 # Seu Numero de Filiacao
67
+ config.secret_token = "1a2b3c4d5f6f7g8h90" # Sua senha
68
+ config.service_url = 'https://scommerce.userede.com.br/example'
69
+ end
70
+ ```
71
+
72
+ Por padrão o `service_url` vem configurado com o ambiente de testes do eRede.
73
+
74
+ ### Transação de Crédito
75
+
76
+ Requests são feitas utilizando a classe `Redex::Request::TransactionRequest`.
77
+
78
+ | Redex | Tipo do Campo | Equivalente SOAP | Observações |
79
+ | --- | --- | --- | --- |
80
+ | order_id | String | NUMPEDIDO |
81
+ | amount | Integer ou Float | TOTAL
82
+ | card_number | Integer ou String | NRCARTAO |
83
+ | card_holder_name | String | PORTADOR |
84
+ | card_cvc | Integer ou String | CVC2 |
85
+ | card_expiration_month | Integer ou String | MÊS
86
+ | card_expiration_year | Integer ou String | ANO
87
+ | installments | Integer ou String | PARCELAS | Padrão: 1
88
+ | recorrence | Boolean | RECORRENTE | Padrão: false
89
+ | | | ORIGEM | Sempre será 01 (eRede)
90
+ | | | TRANSACAO | Calculado pela gem
91
+
92
+
93
+ ## Desenvolvimento
94
+
95
+ Após clonar o repositório, execute `bin/setup` para instalar as dependências. Para rodar os testes execute `rake spec`. Você também pode executar `bin/console` para um console interativo.
96
+
97
+ Para instalar essa gem na sua máquina local execute `bundle exec rake install`. Para gerar uma nova versão atualize o arquivo `version.rb` e então execute `bundle exec rake release`, isto irá criar uma tag do git para a versão, faça o commit e o push do repositório, e então envie o arquivo `.gem` para [rubygems.org](https://rubygems.org).
98
+
99
+ ## Contribua
100
+
101
+ Bug reports e pull requests são bem vindos no nosso GitHub at https://github.com/gknedo/redex. Este projeto visa ser um lugar seguro e receptivo para novos colaborados e é esperado que os contribuidores sigam o [Código de Conduta](http://contributor-covenant.org).
102
+
103
+ ## License
104
+
105
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "redex"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,23 @@
1
+ module Configuration
2
+
3
+ def configuration
4
+ yield self
5
+ end
6
+
7
+ def define_setting(name, default = nil)
8
+ class_variable_set("@@#{name}", default)
9
+ define_class_method "#{name}=" do |value|
10
+ class_variable_set("@@#{name}", value)
11
+ end
12
+ define_class_method name do
13
+ class_variable_get("@@#{name}")
14
+ end
15
+ end
16
+
17
+ private
18
+ def define_class_method(name, &block)
19
+ (class << self; self; end).instance_eval do
20
+ define_method name, &block
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,14 @@
1
+ require 'canned_soap'
2
+
3
+ require "redex/version"
4
+ require "redex/request/base_request"
5
+ require "redex/response/base_response"
6
+ require "helpers/configuration"
7
+
8
+ module Redex
9
+ extend Configuration
10
+
11
+ define_setting :secret_pv
12
+ define_setting :secret_token
13
+ define_setting :service_url, 'https://scommerce.userede.com.br/Redecard.Komerci.External.WcfKomerci/KomerciWcf.svc'
14
+ end
@@ -0,0 +1,33 @@
1
+ module Redex::Request
2
+ class BaseRequest
3
+ def self.client
4
+ @client ||= CannedSoap::Client.new(Redex.service_url)
5
+ end
6
+
7
+ def authorization_params
8
+ {
9
+ Filiacao: Redex.secret_pv.to_s,
10
+ Senha: Redex.secret_token.to_s
11
+ }
12
+ end
13
+
14
+ def result
15
+ @result ||= do_request
16
+ end
17
+
18
+ def sanitize(field)
19
+ return nil if send(field).nil?
20
+ return "%.2f" % send(field) if [:amount].include?(field)
21
+ return "%02d" % send(field) if [:installments, :card_expiration_month, :origin].include?(field)
22
+ return card_expiration_year_sanitized if [:card_expiration_year].include?(field)
23
+ return send(field) ? "1" : "0" if [:recorrence].include?(field)
24
+ return send(field).to_s if [:order_id, :credit_card_authorization_id, :sequential_id, :transaction_id, :card_number].include?(field)
25
+ return send(field).strftime("%Y%m%d") if [:transaction_date].include?(field)
26
+ send(field)
27
+ end
28
+ end
29
+ end
30
+
31
+ require 'redex/request/transaction_request'
32
+ require 'redex/request/cancel_request'
33
+ require 'redex/request/query_request'
@@ -0,0 +1,29 @@
1
+ module Redex
2
+ module Request
3
+ class CancelRequest < BaseRequest
4
+ attr_accessor :transaction_date, :credit_card_authorization_id, :sequential_id, :transaction_id
5
+
6
+ def initialize(params = {})
7
+ @transaction_date = params[:transaction_date]
8
+ @credit_card_authorization_id = params[:credit_card_authorization_id]
9
+ @sequential_id = params[:sequential_id]
10
+ @transaction_id = params[:transaction_id]
11
+ end
12
+
13
+ def sanitized_fields
14
+ {
15
+ Data: sanitize(:transaction_date),
16
+ NumAutor: sanitize(:credit_card_authorization_id),
17
+ NumSqn: sanitize(:sequential_id),
18
+ Tid: sanitize(:transaction_id)
19
+ }.merge(authorization_params).sort.to_h.select { |k, v| !v.to_s.empty? }
20
+ end
21
+
22
+ private
23
+ def do_request
24
+ raw_response = BaseRequest.client.VoidTransactionTID(request: sanitized_fields)
25
+ Redex::Response::CancelResponse.new(raw_response.result)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,25 @@
1
+ module Redex
2
+ module Request
3
+ class QueryRequest < BaseRequest
4
+ attr_accessor :order_id, :transaction_id
5
+
6
+ def initialize(params = {})
7
+ @order_id = params[:order_id]
8
+ @transaction_id = params[:transaction_id]
9
+ end
10
+
11
+ def sanitized_fields
12
+ {
13
+ NumPedido: sanitize(:order_id),
14
+ Tid: sanitize(:transaction_id),
15
+ }.merge(authorization_params).sort.to_h.select { |k, v| !v.to_s.empty? }
16
+ end
17
+
18
+ private
19
+ def do_request
20
+ raw_response = BaseRequest.client.Query(request: sanitized_fields)
21
+ Redex::Response::QueryResponse.new(raw_response.result)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,62 @@
1
+ module Redex
2
+ module Request
3
+ class TransactionRequest < BaseRequest
4
+ attr_accessor :order_id, :amount, :installments, :invoice_note,
5
+ :card_number, :card_cvc, :card_holder_name,
6
+ :card_expiration_month, :card_expiration_year,
7
+ :auto_capture
8
+ attr_reader :recorrence, :origin
9
+
10
+ def initialize(params = {})
11
+ @order_id = params[:order_id]
12
+ @amount = params[:amount]
13
+ @installments = params.fetch(:installments, 1)
14
+ @invoice_note = params[:invoice_note]
15
+ @card_number = params[:card_number]
16
+ @card_cvc = params[:card_cvc]
17
+ @card_holder_name = params[:card_holder_name]
18
+ @card_expiration_month = params[:card_expiration_month]
19
+ @card_expiration_year = params[:card_expiration_year]
20
+ @auto_capture = params.fetch(:auto_capture, true)
21
+ @recorrence = params.fetch(:recorrence, false)
22
+ @origin = 1
23
+ end
24
+
25
+ def sanitized_fields
26
+ {
27
+ NumPedido: sanitize(:order_id),
28
+ Total: sanitize(:amount),
29
+ Parcelas: sanitize(:installments),
30
+ IdentificacaoFatura: sanitize(:invoice_note),
31
+ Nrcartao: sanitize(:card_number),
32
+ Cvc2: sanitize(:card_cvc),
33
+ Portador: sanitize(:card_holder_name),
34
+ Mes: sanitize(:card_expiration_month),
35
+ Ano: sanitize(:card_expiration_year),
36
+ Recorrente: sanitize(:recorrence),
37
+ Origem: sanitize(:origin),
38
+ Transacao: transaction_type
39
+ }.merge(authorization_params).sort.to_h.select { |k, v| !v.to_s.empty? }
40
+ end
41
+
42
+ private
43
+
44
+ def do_request
45
+ raw_response = BaseRequest.client.GetAuthorizedCredit(request: sanitized_fields)
46
+ Redex::Response::TransactionResponse.new(raw_response.result)
47
+ end
48
+
49
+ def transaction_type
50
+ return "74" unless @auto_capture
51
+ return "08" if installments > 1
52
+ "04"
53
+ end
54
+
55
+ def card_expiration_year_sanitized
56
+ year = card_expiration_year
57
+ year += 2000 if year < 100
58
+ year.to_s
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,43 @@
1
+ module Redex
2
+ module Response
3
+ class BaseResponse
4
+ attr_reader :raw, :code, :message, :sequential_id, :transaction_id
5
+
6
+ def initialize(raw_response)
7
+ @raw = clear(raw_response)
8
+ end
9
+
10
+ def clear(httpi_result)
11
+ httpi_result = Hash[httpi_result.map { |k, v| [k.to_sym, v] }]
12
+ httpi_result.select! {|k,v| v != [{"i:nil"=>"true"}]}
13
+ httpi_result.each { |k, v| httpi_result[k] = v.first }
14
+ end
15
+
16
+ def code
17
+ @code ||= @raw[:CodRet].to_i
18
+ end
19
+
20
+ def message
21
+ @message ||= @raw[:Msgret]
22
+ end
23
+
24
+ def sequential_id
25
+ @sequential_id ||= @raw[:NumSqn].to_i
26
+ end
27
+
28
+ def transaction_id
29
+ @transaction_id ||= @raw[:Tid].to_i
30
+ end
31
+
32
+ def datetime_sanitize(raw_date, raw_time)
33
+ if raw_date && raw_time
34
+ DateTime.strptime(raw_date + raw_time + '-03:00', '%Y%m%d%H:%M:%S%z')
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+
41
+ require 'redex/response/transaction_response'
42
+ require 'redex/response/cancel_response'
43
+ require 'redex/response/query_response'
@@ -0,0 +1,14 @@
1
+ module Redex
2
+ module Response
3
+ class CancelResponse < BaseResponse
4
+ attr_reader :canceled_at
5
+ def initialize(httpi_response)
6
+ super(httpi_response)
7
+ end
8
+
9
+ def canceled_at
10
+ @canceled_at ||= datetime_sanitize(@raw[:Data], @raw[:Hora])
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,86 @@
1
+ module Redex
2
+ module Response
3
+ class QueryResponse < BaseResponse
4
+ attr_reader :canceled_at, :amount, :transaction_type, :installments, :order_id,
5
+ :card_number, :transaction_id, :card_expiration_month, :card_holder_name,
6
+ :invoice_note, :origin, :status, :transaction_created_at, :credit_card_authorization_id,
7
+ :code, :message
8
+ def initialize(httpi_response)
9
+ super(httpi_response["REGISTRO"])
10
+ end
11
+
12
+ def amount
13
+ @amount ||= @raw[:TOTAL].to_f
14
+ end
15
+
16
+ def transaction_type
17
+ @transaction_type ||= @raw[:TRANSACAO].to_f
18
+ end
19
+
20
+ def installments
21
+ @installments ||= @raw[:PARCELAS].to_f
22
+ end
23
+
24
+ def order_id
25
+ @order_id ||= @raw[:NUMPEDIDO]
26
+ end
27
+
28
+ def card_number
29
+ @card_number ||= @raw[:NR_CARTAO]
30
+ end
31
+
32
+ def sequential_id
33
+ @sequential_id ||= @raw[:NUMSQN].to_i
34
+ end
35
+
36
+ def card_expiration_month
37
+ @card_expiration_month ||= @raw[:MES].to_i
38
+ end
39
+
40
+ def invoice_note
41
+ @invoice_note ||= @raw[:IDENTIFICACAOFATURA]
42
+ end
43
+
44
+ def card_holder_name
45
+ @card_holder_name ||= @raw[:NOM_PORTADOR]
46
+ end
47
+
48
+ def origin
49
+ @origin ||= @raw[:ORIGEM].to_i
50
+ end
51
+
52
+ def status
53
+ @status ||= @raw[:STATUS].to_i
54
+ end
55
+
56
+ def code
57
+ @code ||= @raw[:COD_RET].to_i
58
+ end
59
+
60
+ def message
61
+ @message ||= @raw[:MSG_RET]
62
+ end
63
+
64
+ def credit_card_authorization_id
65
+ @credit_card_authorization_id ||= @raw[:NUMAUTOR].to_i
66
+ end
67
+
68
+ def transaction_created_at
69
+ @transaction_created_at ||= datetime_sanitize(@raw[:DATA], @raw[:HORA])
70
+ end
71
+
72
+ def transaction_canceled_at
73
+ @transaction_canceled_at ||= datetime_sanitize(@raw[:DATA], "00:00:00")
74
+ end
75
+
76
+
77
+ def clear(httpi_result)
78
+ httpi_result = httpi_result.first
79
+ httpi_result.delete("AVS")
80
+ httpi_result = Hash[httpi_result.map { |k, v| [k.to_sym, v] }]
81
+ httpi_result.select! {|k,v| v != [{}] && v!= [{"i:nil"=>"true"}]}
82
+ httpi_result.each { |k, v| httpi_result[k] = v.first }
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,19 @@
1
+ module Redex
2
+ module Response
3
+ class TransactionResponse < BaseResponse
4
+ attr_reader :order_id, :created_at, :credit_card_authorization_id
5
+
6
+ def order_id
7
+ @order_id ||= @raw[:NumPedido]
8
+ end
9
+
10
+ def credit_card_authorization_id
11
+ @credit_card_authorization_id ||= @raw[:NumAutor].to_i
12
+ end
13
+
14
+ def created_at
15
+ @created_at ||= datetime_sanitize(@raw[:Data], @raw[:Hora])
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,3 @@
1
+ module Redex
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "redex/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "redex"
8
+ spec.version = Redex::VERSION
9
+ spec.authors = ["Ateliê de Software - Webgoal", "Aluan Henrique" "Gustavo Canedo"]
10
+ spec.email = ["contato@atelie.software"]
11
+
12
+ spec.summary = %q{Uma gem para integração com o sistema de pagamentos eRede}
13
+ spec.homepage = "https://github.com/webgoal/redex"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
+ f.match(%r{^(test|spec|features)/})
18
+ end
19
+
20
+ spec.bindir = "exe"
21
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.require_paths = ["lib"]
23
+
24
+ spec.add_development_dependency "bundler", "~> 1.15"
25
+ spec.add_development_dependency "rake", "~> 10.0"
26
+ spec.add_development_dependency "rspec", "~> 3.0"
27
+ spec.add_dependency "canned_soap", "~>0.1", ">=0.1.2"
28
+ end
metadata ADDED
@@ -0,0 +1,128 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: redex
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ateliê de Software - Webgoal
8
+ - Aluan HenriqueGustavo Canedo
9
+ autorequire:
10
+ bindir: exe
11
+ cert_chain: []
12
+ date: 2017-08-07 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '1.15'
21
+ type: :development
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '1.15'
28
+ - !ruby/object:Gem::Dependency
29
+ name: rake
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '10.0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '10.0'
42
+ - !ruby/object:Gem::Dependency
43
+ name: rspec
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '3.0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '3.0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: canned_soap
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '0.1'
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: 0.1.2
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - "~>"
71
+ - !ruby/object:Gem::Version
72
+ version: '0.1'
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 0.1.2
76
+ description:
77
+ email:
78
+ - contato@atelie.software
79
+ executables: []
80
+ extensions: []
81
+ extra_rdoc_files: []
82
+ files:
83
+ - ".gitignore"
84
+ - ".rspec"
85
+ - ".travis.yml"
86
+ - Gemfile
87
+ - LICENSE.txt
88
+ - README.md
89
+ - Rakefile
90
+ - bin/console
91
+ - bin/setup
92
+ - lib/helpers/configuration.rb
93
+ - lib/redex.rb
94
+ - lib/redex/request/base_request.rb
95
+ - lib/redex/request/cancel_request.rb
96
+ - lib/redex/request/query_request.rb
97
+ - lib/redex/request/transaction_request.rb
98
+ - lib/redex/response/base_response.rb
99
+ - lib/redex/response/cancel_response.rb
100
+ - lib/redex/response/query_response.rb
101
+ - lib/redex/response/transaction_response.rb
102
+ - lib/redex/version.rb
103
+ - redex.gemspec
104
+ homepage: https://github.com/webgoal/redex
105
+ licenses:
106
+ - MIT
107
+ metadata: {}
108
+ post_install_message:
109
+ rdoc_options: []
110
+ require_paths:
111
+ - lib
112
+ required_ruby_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ requirements: []
123
+ rubyforge_project:
124
+ rubygems_version: 2.6.12
125
+ signing_key:
126
+ specification_version: 4
127
+ summary: Uma gem para integração com o sistema de pagamentos eRede
128
+ test_files: []