superpay 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0f51d374e6803dc17b3da70faf9fdf566a62a271
4
+ data.tar.gz: b70ef241c6110ac0e1ca6382aaa87300f776fd3b
5
+ SHA512:
6
+ metadata.gz: 424fb10aa4c2d47d32560fe919dae650bc1b6b559801cffda07dbd331861066fa7553c3b3655e83ac4b1679dd06ccb2078aab3e1c78dfb52ef5dc58400d7f732
7
+ data.tar.gz: e771f93645c6578037d93169ea54be314ed043f817d589c1b0041d07fc3bcf7e1b780b4b96dcdc218735dadcc34676ac303adeca3e92f9d5a164f094cb0cdd73
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in superpay.gemspec
4
+ gemspec
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Marcelo Theodoro
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,29 @@
1
+ # Superpay
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'superpay'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install superpay
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
@@ -0,0 +1,9 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'rake/testtask'
4
+
5
+ Rake::TestTask.new do |t|
6
+ t.libs.push "lib"
7
+ t.test_files = FileList['test/*_test.rb']
8
+ t.verbose = true
9
+ end
@@ -0,0 +1,31 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require "superpay/version"
3
+ require 'savon'
4
+
5
+ module Superpay
6
+
7
+ autoload :Conector, 'superpay/conector'
8
+ autoload :Configuracao, 'superpay/configuracao'
9
+ autoload :Helper, 'superpay/helper'
10
+ autoload :Transacao, 'superpay/transacao'
11
+
12
+ #
13
+ # Configura a conexão com o gateway.
14
+ # Utlização:
15
+ #
16
+ # Superpay.config do |config|
17
+ # config.ambiente = :teste
18
+ # config.estabelecimento = 1111111
19
+ # config.usuario = 'ERNET'
20
+ # config.senha = 'ERNET'
21
+ # end
22
+ def self.config
23
+ yield(Configuracao.instance) if block_given?
24
+ return Configuracao.instance
25
+ end
26
+
27
+ def self.conector
28
+ Conector.instance
29
+ end
30
+
31
+ end
@@ -0,0 +1,32 @@
1
+ module Superpay
2
+ class Conector
3
+
4
+ attr_accessor :savon_client
5
+
6
+ def initialize
7
+ self.reload
8
+ end
9
+
10
+ def reload
11
+ @savon_client = Savon.client do
12
+ wsdl ::Superpay.config.url
13
+ convert_request_keys_to :lower_camelcase
14
+ end
15
+ end
16
+
17
+ def self.instance
18
+ @__instance__ ||= new
19
+ end
20
+
21
+ def call(metodo, transacao)
22
+ parametros = {
23
+ usuario: Configuracao.instance.usuario,
24
+ senha: Configuracao.instance.senha
25
+ }
26
+ @savon_client.call(metodo.to_sym) do
27
+ message parametros.merge(transacao)
28
+ end
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,32 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module Superpay
3
+
4
+ class Configuracao
5
+
6
+ attr_accessor :ambiente, :estabelecimento, :usuario, :senha
7
+
8
+ def self.instance
9
+ @__instance__ ||= new
10
+ end
11
+
12
+ def url
13
+ if ambiente_producao?
14
+ # TO-DO: Falta configurar a URL real
15
+ return 'http://homologacao2.superpay.com.br/checkout/servicosPagamentoCompletoWS.Services?wsdl'
16
+ else
17
+ return 'http://homologacao2.superpay.com.br/checkout/servicosPagamentoCompletoWS.Services?wsdl'
18
+ end
19
+ end
20
+
21
+ def ambiente_teste?
22
+ !ambiente_producao?
23
+ end
24
+
25
+ def ambiente_producao?
26
+ return (ambiente.to_sym == :producao) if !ambiente.blank?
27
+ return true
28
+ end
29
+
30
+ end
31
+
32
+ end
@@ -0,0 +1,32 @@
1
+ module Superpay
2
+
3
+ module Helper
4
+
5
+ #
6
+ # Transforma um valor, seja Fixnum, String ou Float, para o formato do gateway.
7
+ # R$ 1,00 -> 100
8
+ # 1 -> 100
9
+ # 1.0 -> 100
10
+ # -1 -> 100
11
+ def self.to_superpay_number(valor)
12
+ ('%.2f' % valor.to_f.abs).gsub('.', '').gsub(',', '').to_i
13
+ end
14
+
15
+ #
16
+ # Transforma um número de retorno do gateway em um float.
17
+ # 100 -> 1.0
18
+ # 10 -> 0.1
19
+ # 500 -> 5.0
20
+ # 320 -> 3.2
21
+ # 241 -> 2.41
22
+ def self.superpay_number_to_decimal(number)
23
+ number.to_i.abs / 100.0
24
+ end
25
+
26
+ def self.cep_to_superpay(cep)
27
+ cep.gsub('.', '').gsub('-', '')
28
+ end
29
+
30
+ end
31
+
32
+ end
@@ -0,0 +1,129 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'brdata'
3
+
4
+ module Superpay
5
+ class Transacao
6
+
7
+ # CONSTANTES
8
+ IDIOMAS = {portugues: 1, ingles: 2, espanhol: 3}
9
+ STATUS = {
10
+ 1 => :autorizado_confirmado,
11
+ 2 => :autorizado,
12
+ 3 => :nao_autorizado,
13
+ 5 => :em_andamento,
14
+ 6 => :boleto_em_compensacao,
15
+ 8 => :aguardando_pagamento,
16
+ 9 => :falha_na_operadora,
17
+ 13 => :cancelada,
18
+ 14 => :estornada,
19
+ 15 => :em_analise_risco,
20
+ 17 => :recusado_analise_risco,
21
+ 18 => :falha_envio_analise_risco,
22
+ 21 => :boleto_pago_menor,
23
+ 22 => :boleto_pago_maior,
24
+ 30 => :em_curso,
25
+ 31 => :ja_efetuada
26
+ }
27
+
28
+ #
29
+ # Faz o pagamento da transação, a partir dos dados do gateway.
30
+ # Se a transação já foi feita, seu status de retorno será 31: ja_efetuada.
31
+ # Caso deseje saber qual o real status da transação, faça uma consulta.
32
+ def self.pagar(dados)
33
+ # Valida os dados passados
34
+ raise 'Campo obrigatório: numero_transacao' if dados[:numero_transacao].blank?
35
+ raise 'Campo obrigatório: codigo_forma_pagamento' if dados[:codigo_forma_pagamento].blank?
36
+ raise 'Campo obrigatório: valor' if dados[:valor].blank?
37
+ raise 'Campo obrigatório: nome_titular_cartao_credito' if dados[:nome_titular_cartao_credito].blank?
38
+ raise 'Campo obrigatório: numero_cartao_credito' if dados[:numero_cartao_credito].blank?
39
+ raise 'Campo obrigatório: codigo_seguranca' if dados[:codigo_seguranca].blank?
40
+ raise 'Campo obrigatório: data_validade_cartao' if dados[:data_validade_cartao].blank?
41
+ raise 'Campo obrigatório: dados_usuario_transacao' if dados[:dados_usuario_transacao].blank?
42
+ raise 'Campo obrigatório: itens_do_pedido' if dados[:itens_do_pedido].blank?
43
+
44
+ # Sobrecarga com dados default
45
+ dados[:codigo_estabelecimento] = ::Superpay.config.estabelecimento
46
+
47
+ # Tratamento dos valores de envio
48
+ dados = Transacao.tratar_envio(dados)
49
+
50
+ retorno = Superpay.conector.call(:pagamento_transacao_completa, {transacao: dados})
51
+ resposta = retorno.to_array(:pagamento_transacao_completa_response, :return).first
52
+
53
+ # Verifica se a resposta veio correta ou se deu problema
54
+ return {erros: retorno} if !resposta
55
+ # Se o estabelecimento retornado for diferente da configuração, deu coisa errada
56
+ if resposta[:codigo_estabelecimento] != ::Superpay.config.estabelecimento.to_s
57
+ raise "Código do estabelecimento não é o da configuração: #{resposta[:codigo_estabelecimento]}"
58
+ end
59
+
60
+ # Sobrecarga com dados tratados e retorna
61
+ return Transacao.tratar_retorno(resposta)
62
+ end
63
+
64
+ #
65
+ # Consulta uma transação de acordo com seu número (código).
66
+ def self.consultar(numero_transacao)
67
+ dados = {
68
+ codigo_estabelecimento: ::Superpay.config.estabelecimento,
69
+ numero_transacao: numero_transacao
70
+ }
71
+ retorno = Superpay.conector.call(:consulta_transacao_especifica, {consulta_transacao_w_s: dados})
72
+ resposta = retorno.to_array(:consulta_transacao_especifica_response, :return).first
73
+ # Verifica se a resposta veio correta ou se deu problema
74
+ return {erros: retorno} if !resposta
75
+ # Se o estabelecimento retornado for diferente da configuração, deu coisa errada
76
+ if resposta[:codigo_estabelecimento] != ::Superpay.config.estabelecimento.to_s
77
+ raise "Código do estabelecimento não é o da configuração: #{resposta[:codigo_estabelecimento]}"
78
+ end
79
+
80
+ # Sobrecarga com dados tratados e retorna
81
+ return Transacao.tratar_retorno(resposta)
82
+ end
83
+
84
+ def self.cancelar(dados)
85
+ raise 'Not implemented yet'
86
+ end
87
+
88
+ def self.pagar_com_varios_cartoes(dados)
89
+ raise 'Not implemented yet'
90
+ end
91
+
92
+ #
93
+ # Trata o retorno das transações: converte valores e datas para objetos.
94
+ def self.tratar_retorno(transacao)
95
+ transacao[:status] = STATUS[transacao[:status_transacao].to_i] unless transacao[:status_transacao].blank?
96
+ transacao[:valor] = Helper.superpay_number_to_decimal(transacao[:valor]) unless transacao[:valor].blank?
97
+ transacao[:valor_desconto] = Helper.superpay_number_to_decimal(transacao[:valor_desconto]) unless transacao[:valor_desconto].blank?
98
+ transacao[:taxa_embarque] = Helper.superpay_number_to_decimal(transacao[:taxa_embarque]) unless transacao[:taxa_embarque].blank?
99
+ transacao[:data_aprovacao_operadora] = transacao[:data_aprovacao_operadora].to_date unless transacao[:data_aprovacao_operadora].blank?
100
+ return transacao
101
+ end
102
+
103
+ #
104
+ # Trata os dados de envio da transação.
105
+ # Transforma valores e datas
106
+ def self.tratar_envio(transacao)
107
+ # valores da transação
108
+ transacao[:valor] = Helper.to_superpay_number(transacao[:valor]) unless transacao[:valor].blank?
109
+ transacao[:valor_desconto] = Helper.to_superpay_number(transacao[:valor_desconto]) unless transacao[:valor_desconto].blank?
110
+ transacao[:taxa_embarque] = Helper.to_superpay_number(transacao[:taxa_embarque]) unless transacao[:taxa_embarque].blank?
111
+
112
+ # valor dos itens do pedido
113
+ if transacao[:itens_do_pedido].is_a?(Hash)
114
+ transacao[:itens_do_pedido] = [transacao[:itens_do_pedido]]
115
+ end
116
+ transacao[:itens_do_pedido].each do |item|
117
+ item[:valor_unitario_produto] = Helper.to_superpay_number(item[:valor_unitario_produto]) unless item[:valor_unitario_produto].blank?
118
+ end
119
+
120
+ # dados do usuário
121
+ transacao[:dados_usuario_transacao][:cep_endereco_comprador] = Helper.cep_to_superpay(transacao[:dados_usuario_transacao][:cep_endereco_comprador]) unless transacao[:dados_usuario_transacao][:cep_endereco_comprador].blank?
122
+ transacao[:dados_usuario_transacao][:cep_endereco_entrega] = Helper.cep_to_superpay(transacao[:dados_usuario_transacao][:cep_endereco_entrega]) unless transacao[:dados_usuario_transacao][:cep_endereco_entrega].blank?
123
+ transacao[:dados_usuario_transacao][:data_nascimento_comprador] = transacao[:dados_usuario_transacao][:data_nascimento_comprador].to_date.strftime('%d/%m/%Y') unless transacao[:dados_usuario_transacao][:data_nascimento_comprador].blank?
124
+
125
+ return transacao
126
+ end
127
+
128
+ end
129
+ end
@@ -0,0 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
2
+ module Superpay
3
+ VERSION = "1.0.1"
4
+ 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 'superpay/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "superpay"
8
+ spec.version = Superpay::VERSION
9
+ spec.authors = ["QW3 Software & Marketing"]
10
+ spec.email = ["contato@qw3.com.br"]
11
+ spec.description = %q{Gem de integração com o gateway de pagamentos Superpay}
12
+ spec.summary = %q{Projeto extraído da construção da plataforma de e-commerce Profit, da QW3.}
13
+ spec.homepage = "https://github.com/qw3/superpay"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency 'brdinheiro'
22
+ spec.add_dependency 'brdata'
23
+ spec.add_dependency 'savon', '2.2'
24
+
25
+ spec.add_development_dependency "bundler", "~> 1.3"
26
+ spec.add_development_dependency "rake"
27
+ spec.add_development_dependency 'minitest', '>= 5.0'
28
+ end
@@ -0,0 +1,138 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'minitest/autorun'
3
+ require 'superpay'
4
+
5
+ describe Superpay::Configuracao do
6
+
7
+ before do
8
+ @client = Savon.client do
9
+ wsdl 'http://homologacao2.superpay.com.br/checkout/servicosPagamentoCompletoWS.Services?wsdl'
10
+ convert_request_keys_to :lower_camelcase
11
+ end
12
+ end
13
+
14
+ describe "teste de requisicao" do
15
+ it "deveria reconhecer as operações" do
16
+ @client.operations.must_equal [:consulta_transacao_especifica, :pagamento_transacao_completa, :operacao_transacao, :visualizar_dados_retorno, :pagamento_transacao_completa_mais_cartoes_credito, :cancelar_transacao_completa, :capturar_transacao_completa, :refazer_transacao, :altera_numero_pedido, :salva_hash_pagamento, :bloquear_transacao, :consulta_bloqueio_transacao, :atualiza_campos_livres]
17
+ end
18
+ end
19
+
20
+ describe "pagamento de transação" do
21
+ it "deveria criar uma requisição" do
22
+
23
+ # dados de homologação
24
+ usuario = 'ERNET'
25
+ senha = 'ERNET'
26
+
27
+ # Cliente
28
+ usuario_transacao = {
29
+ codigo_cliente: 1,
30
+ tipo_cliente: 1,
31
+ nome_comprador: 'Marcelo',
32
+ documento_comprador: '04795729921',
33
+ documento2_comprador: '97619077',
34
+ sexo_comprador: 'M',
35
+ data_nascimento_comprador: '14/03/1988',
36
+ telefone_comprador: '34166404',
37
+ ddd_comprador: '16',
38
+ ddi_comprador: '55',
39
+ codigo_tipo_telefone_comprador: 1,
40
+ telefone_adicional_comprador: '34166405',
41
+ ddd_adicional_comprador: '16',
42
+ ddi_adicional_comprador: '55',
43
+ codigo_tipo_telefone_adicional_comprador: 1,
44
+ email_comprador: 'marcelo@qw3.com.br',
45
+ endereco_comprador: 'Giácomo Casale',
46
+ numero_endereco_comprador: '147',
47
+ bairro_endereco_comprador: 'Jardim Alvorada',
48
+ complemento_endereco_comprador: '',
49
+ cidade_endereco_comprador: 'São Carlos',
50
+ estado_endereco_comprador: 'SP',
51
+ cep_endereco_comprador: '13562350',
52
+ endereco_entrega: 'Giácomo Casale',
53
+ numero_endereco_entrega: '147',
54
+ bairro_endereco_entrega: 'Jardim Alvorada',
55
+ complemento_endereco_entrega: '',
56
+ cidade_endereco_entrega: 'São Carlos',
57
+ estado_endereco_entrega: 'SP',
58
+ cep_endereco_entrega: '13562350',
59
+ telefone_entrega: '34166404',
60
+ ddd_entrega: '16',
61
+ ddi_entrega: '55',
62
+ codigo_tipo_telefone_entrega: 1,
63
+ telefone_adicional_entrega: '34166404',
64
+ ddd_adicional_entrega: '16',
65
+ ddi_adicional_entrega: '55',
66
+ codigo_tipo_telefone_adicional_entrega: 1,
67
+ }
68
+
69
+ # Pedido
70
+ itens_do_pedido = [
71
+ {
72
+ codigo_produto: 1,
73
+ codigo_categoria: 1,
74
+ nome_produto: 'Produto 1',
75
+ nome_categoria: 'Categoria 1',
76
+ quantidade_produto: 1,
77
+ valor_unitario_produto: 50
78
+ },
79
+ {
80
+ codigo_produto: 1,
81
+ codigo_categoria: 1,
82
+ nome_produto: 'Produto 1',
83
+ nome_categoria: 'Categoria 1',
84
+ quantidade_produto: 1,
85
+ valor_unitario_produto: 50
86
+ }
87
+ ]
88
+
89
+ # Dados da venda
90
+ transacao_completa = {
91
+ numero_transacao: 104,
92
+ codigo_estabelecimento: 1369338339932,
93
+ codigo_forma_pagamento: 120,
94
+ valor: 100,
95
+ valor_desconto: 0,
96
+ taxa_embarque: 0,
97
+ parcelas: 1,
98
+ nome_titular_cartao_credito: 'Marcelo',
99
+ numero_cartao_credito: '4444333322221111',
100
+ codigo_seguranca: '123',
101
+ data_validade_cartao: '12/2016',
102
+ url_campainha: 'teste',
103
+ ip: '187.39.185.39',
104
+ idioma: 1,
105
+ origem_transacao: 1,
106
+ campo_livre1: '',
107
+ campo_livre2: '',
108
+ campo_livre3: '',
109
+ campo_livre4: '',
110
+ campo_livre5: '',
111
+ campo_livre6: '',
112
+ dados_usuario_transacao: usuario_transacao,
113
+ itens_do_pedido: itens_do_pedido
114
+ }
115
+
116
+ # chamada de resposta
117
+ resposta = @client.call(:pagamento_transacao_completa) do
118
+ message transacao: transacao_completa, usuario: usuario, senha: senha
119
+ end
120
+
121
+ data = resposta.to_array(:pagamento_transacao_completa_response, :return).first
122
+ data[:autorizacao].must_equal '0'
123
+ data[:codigo_estabelecimento].must_equal '1369338339932'
124
+ data[:codigo_forma_pagamento].must_equal '120'
125
+ data[:codigo_transacao_operadora].must_equal '0'
126
+ # data[:data_aprovacao_operadora].must_equal '21/06/2013'
127
+ # data[:mensagem_venda].must_equal 'Autorizada'
128
+ data[:numero_transacao].must_equal '104'
129
+ data[:parcelas].must_equal '1'
130
+ data[:status_transacao].must_equal '31'
131
+ data[:taxa_embarque].must_equal '0'
132
+ data[:valor].must_equal '100'
133
+ data[:valor_desconto].must_equal '0'
134
+
135
+ end
136
+ end
137
+
138
+ end
@@ -0,0 +1,51 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'minitest/autorun'
3
+ require 'superpay'
4
+
5
+ describe Superpay::Configuracao do
6
+
7
+ before do
8
+
9
+ Superpay.config do |config|
10
+ config.ambiente = :teste
11
+ config.estabelecimento = 1111111
12
+ config.usuario = 'ERNET'
13
+ config.senha = 'ERNET'
14
+ end
15
+
16
+ end
17
+
18
+ it "deveria configurar corretamente" do
19
+ Superpay.config.ambiente_teste?.must_equal true
20
+ Superpay.config.ambiente_producao?.must_equal false
21
+ Superpay.config.estabelecimento.must_equal 1111111
22
+ Superpay.config.usuario.must_equal 'ERNET'
23
+ Superpay.config.senha.must_equal 'ERNET'
24
+ end
25
+
26
+ it "deveria manter os dados configurados" do
27
+ Superpay.config.ambiente_teste?.must_equal true
28
+ Superpay.config.ambiente_producao?.must_equal false
29
+ Superpay.config.estabelecimento.must_equal 1111111
30
+ Superpay.config.usuario.must_equal 'ERNET'
31
+ Superpay.config.senha.must_equal 'ERNET'
32
+ end
33
+
34
+ it "deveria sobrecarregar os dados configurados" do
35
+
36
+ Superpay.config do |config|
37
+ config.ambiente = :producao
38
+ config.estabelecimento = 222222
39
+ config.usuario = 'qw3'
40
+ config.senha = 'qw31'
41
+ end
42
+
43
+ Superpay.config.ambiente_teste?.must_equal false
44
+ Superpay.config.ambiente_producao?.must_equal true
45
+ Superpay.config.estabelecimento.must_equal 222222
46
+ Superpay.config.usuario.must_equal 'qw3'
47
+ Superpay.config.senha.must_equal 'qw31'
48
+
49
+ end
50
+
51
+ end
@@ -0,0 +1,129 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'minitest/autorun'
3
+ require 'superpay'
4
+ require 'brdinheiro/dinheiro'
5
+
6
+ describe Superpay::Helper do
7
+
8
+ describe "validação" do
9
+
10
+ it "deveria retornar o valor inteiro correto" do
11
+ # Para R$ 1,00
12
+ Superpay::Helper.to_superpay_number(1).must_equal 100
13
+ Superpay::Helper.to_superpay_number(Dinheiro.new(1)).must_equal 100
14
+ Superpay::Helper.to_superpay_number(1.0).must_equal 100
15
+ Superpay::Helper.to_superpay_number(Dinheiro.new(1.0)).must_equal 100
16
+ Superpay::Helper.to_superpay_number('1').must_equal 100
17
+ Superpay::Helper.to_superpay_number(Dinheiro.new('1')).must_equal 100
18
+ Superpay::Helper.to_superpay_number('1.0').must_equal 100
19
+ Superpay::Helper.to_superpay_number(Dinheiro.new('1.0')).must_equal 100
20
+ Superpay::Helper.to_superpay_number(Dinheiro.new('1,00')).must_equal 100
21
+
22
+ # Para 15
23
+ Superpay::Helper.to_superpay_number(15).must_equal 1500
24
+ Superpay::Helper.to_superpay_number(Dinheiro.new(15)).must_equal 1500
25
+ Superpay::Helper.to_superpay_number(15.0).must_equal 1500
26
+ Superpay::Helper.to_superpay_number(Dinheiro.new(15.0)).must_equal 1500
27
+ Superpay::Helper.to_superpay_number('15').must_equal 1500
28
+ Superpay::Helper.to_superpay_number(Dinheiro.new('15')).must_equal 1500
29
+ Superpay::Helper.to_superpay_number('15.0').must_equal 1500
30
+ Superpay::Helper.to_superpay_number(Dinheiro.new('15.0')).must_equal 1500
31
+ Superpay::Helper.to_superpay_number(Dinheiro.new('15,00')).must_equal 1500
32
+
33
+ # Para 167
34
+ Superpay::Helper.to_superpay_number(167).must_equal 16700
35
+ Superpay::Helper.to_superpay_number(Dinheiro.new(167)).must_equal 16700
36
+ Superpay::Helper.to_superpay_number(167.0).must_equal 16700
37
+ Superpay::Helper.to_superpay_number(Dinheiro.new(167.0)).must_equal 16700
38
+ Superpay::Helper.to_superpay_number('167').must_equal 16700
39
+ Superpay::Helper.to_superpay_number(Dinheiro.new('167')).must_equal 16700
40
+ Superpay::Helper.to_superpay_number('167.0').must_equal 16700
41
+ Superpay::Helper.to_superpay_number(Dinheiro.new('167.0')).must_equal 16700
42
+ Superpay::Helper.to_superpay_number(Dinheiro.new('167,00')).must_equal 16700
43
+
44
+ # Para 1234
45
+ Superpay::Helper.to_superpay_number(1234).must_equal 123400
46
+ Superpay::Helper.to_superpay_number(Dinheiro.new(1234)).must_equal 123400
47
+ Superpay::Helper.to_superpay_number(1234.0).must_equal 123400
48
+ Superpay::Helper.to_superpay_number(Dinheiro.new(1234.0)).must_equal 123400
49
+ Superpay::Helper.to_superpay_number('1234').must_equal 123400
50
+ Superpay::Helper.to_superpay_number(Dinheiro.new('1234')).must_equal 123400
51
+ Superpay::Helper.to_superpay_number('1234.0').must_equal 123400
52
+ Superpay::Helper.to_superpay_number(Dinheiro.new('1234.0')).must_equal 123400
53
+ Superpay::Helper.to_superpay_number(Dinheiro.new('1234,00')).must_equal 123400
54
+ Superpay::Helper.to_superpay_number(Dinheiro.new('1.234,00')).must_equal 123400
55
+ end
56
+
57
+ it "deveria retornar o valor flutuante inteiro" do
58
+ # Para R$ 1,30
59
+ Superpay::Helper.to_superpay_number(1.3).must_equal 130
60
+ Superpay::Helper.to_superpay_number(Dinheiro.new(1.3)).must_equal 130
61
+ Superpay::Helper.to_superpay_number(1.3).must_equal 130
62
+ Superpay::Helper.to_superpay_number(Dinheiro.new(1.3)).must_equal 130
63
+ Superpay::Helper.to_superpay_number('1.3').must_equal 130
64
+ Superpay::Helper.to_superpay_number(Dinheiro.new('1.3')).must_equal 130
65
+ Superpay::Helper.to_superpay_number(Dinheiro.new('1,30')).must_equal 130
66
+
67
+ # Para R$ 1,35
68
+ Superpay::Helper.to_superpay_number(1.35).must_equal 135
69
+ Superpay::Helper.to_superpay_number(Dinheiro.new(1.35)).must_equal 135
70
+ Superpay::Helper.to_superpay_number(1.35).must_equal 135
71
+ Superpay::Helper.to_superpay_number(Dinheiro.new(1.35)).must_equal 135
72
+ Superpay::Helper.to_superpay_number('1.35').must_equal 135
73
+ Superpay::Helper.to_superpay_number(Dinheiro.new('1.35')).must_equal 135
74
+ Superpay::Helper.to_superpay_number(Dinheiro.new('1,35')).must_equal 135
75
+
76
+ # Para R$ 12,35
77
+ Superpay::Helper.to_superpay_number(12.35).must_equal 1235
78
+ Superpay::Helper.to_superpay_number(Dinheiro.new(12.35)).must_equal 1235
79
+ Superpay::Helper.to_superpay_number(12.35).must_equal 1235
80
+ Superpay::Helper.to_superpay_number(Dinheiro.new(12.35)).must_equal 1235
81
+ Superpay::Helper.to_superpay_number('12.35').must_equal 1235
82
+ Superpay::Helper.to_superpay_number(Dinheiro.new('12.35')).must_equal 1235
83
+ Superpay::Helper.to_superpay_number(Dinheiro.new('12,35')).must_equal 1235
84
+
85
+ # Para R$ 1267,35
86
+ Superpay::Helper.to_superpay_number(1267.35).must_equal 126735
87
+ Superpay::Helper.to_superpay_number(Dinheiro.new(1267.35)).must_equal 126735
88
+ Superpay::Helper.to_superpay_number(1267.35).must_equal 126735
89
+ Superpay::Helper.to_superpay_number(Dinheiro.new(1267.35)).must_equal 126735
90
+ Superpay::Helper.to_superpay_number('1267.35').must_equal 126735
91
+ Superpay::Helper.to_superpay_number(Dinheiro.new('1267.35')).must_equal 126735
92
+ Superpay::Helper.to_superpay_number(Dinheiro.new('1267,35')).must_equal 126735
93
+ Superpay::Helper.to_superpay_number(Dinheiro.new('1.267,35')).must_equal 126735
94
+ end
95
+
96
+ it "deveria voltar zero quando parametro for errado" do
97
+ Superpay::Helper.to_superpay_number('não número').must_equal 0
98
+ Superpay::Helper.to_superpay_number('bolagato69bola7').must_equal 0
99
+ Superpay::Helper.to_superpay_number('2bolagato69bola7').must_equal 200
100
+ Superpay::Helper.to_superpay_number('').must_equal 0
101
+ end
102
+
103
+ it "deveria converter de superpay para decimal comum" do
104
+ Superpay::Helper.superpay_number_to_decimal(1).must_equal 0.01
105
+ Superpay::Helper.superpay_number_to_decimal('1').must_equal 0.01
106
+ Superpay::Helper.superpay_number_to_decimal(50).must_equal 0.5
107
+ Superpay::Helper.superpay_number_to_decimal('50').must_equal 0.5
108
+ Superpay::Helper.superpay_number_to_decimal(100).must_equal 1
109
+ Superpay::Helper.superpay_number_to_decimal('100').must_equal 1
110
+ Superpay::Helper.superpay_number_to_decimal(321).must_equal 3.21
111
+ Superpay::Helper.superpay_number_to_decimal('321').must_equal 3.21
112
+ Superpay::Helper.superpay_number_to_decimal(32145).must_equal 321.45
113
+ Superpay::Helper.superpay_number_to_decimal('32145').must_equal 321.45
114
+ Superpay::Helper.superpay_number_to_decimal(532145).must_equal 5321.45
115
+ Superpay::Helper.superpay_number_to_decimal('532145').must_equal 5321.45
116
+ Superpay::Helper.superpay_number_to_decimal(1532145).must_equal 15321.45
117
+ Superpay::Helper.superpay_number_to_decimal('1532145').must_equal 15321.45
118
+ Superpay::Helper.superpay_number_to_decimal(99532145).must_equal 995321.45
119
+ Superpay::Helper.superpay_number_to_decimal('99532145').must_equal 995321.45
120
+ Superpay::Helper.superpay_number_to_decimal(10099532145).must_equal 100995321.45
121
+ Superpay::Helper.superpay_number_to_decimal('10099532145').must_equal 100995321.45
122
+ Superpay::Helper.superpay_number_to_decimal(100995321450).must_equal 1009953214.5
123
+ Superpay::Helper.superpay_number_to_decimal('100995321450').must_equal 1009953214.5
124
+
125
+ end
126
+
127
+ end
128
+
129
+ end
@@ -0,0 +1,234 @@
1
+ # -*- encoding : utf-8 -*-
2
+ require 'minitest/autorun'
3
+ require 'superpay'
4
+
5
+ describe Superpay::Transacao do
6
+
7
+ before do
8
+ Superpay.config do |config|
9
+ config.ambiente = :teste
10
+ config.estabelecimento = 1369338339932
11
+ config.usuario = 'ERNET'
12
+ config.senha = 'ERNET'
13
+ end
14
+
15
+ # Cliente
16
+ @usuario_transacao = {
17
+ codigo_cliente: 1,
18
+ tipo_cliente: 1,
19
+ nome_comprador: 'Marcelo',
20
+ documento_comprador: '04795729921',
21
+ documento2_comprador: '97619077',
22
+ sexo_comprador: 'M',
23
+ data_nascimento_comprador: '14/03/1988',
24
+ telefone_comprador: '34166404',
25
+ ddd_comprador: '16',
26
+ ddi_comprador: '55',
27
+ codigo_tipo_telefone_comprador: 1,
28
+ telefone_adicional_comprador: '34166405',
29
+ ddd_adicional_comprador: '16',
30
+ ddi_adicional_comprador: '55',
31
+ codigo_tipo_telefone_adicional_comprador: 1,
32
+ email_comprador: 'marcelo@qw3.com.br',
33
+ endereco_comprador: 'Giácomo Casale',
34
+ numero_endereco_comprador: '147',
35
+ bairro_endereco_comprador: 'Jardim Alvorada',
36
+ complemento_endereco_comprador: '',
37
+ cidade_endereco_comprador: 'São Carlos',
38
+ estado_endereco_comprador: 'SP',
39
+ cep_endereco_comprador: '13562350',
40
+ endereco_entrega: 'Giácomo Casale',
41
+ numero_endereco_entrega: '147',
42
+ bairro_endereco_entrega: 'Jardim Alvorada',
43
+ complemento_endereco_entrega: '',
44
+ cidade_endereco_entrega: 'São Carlos',
45
+ estado_endereco_entrega: 'SP',
46
+ cep_endereco_entrega: '13562350',
47
+ telefone_entrega: '34166404',
48
+ ddd_entrega: '16',
49
+ ddi_entrega: '55',
50
+ codigo_tipo_telefone_entrega: 1,
51
+ telefone_adicional_entrega: '34166404',
52
+ ddd_adicional_entrega: '16',
53
+ ddi_adicional_entrega: '55',
54
+ codigo_tipo_telefone_adicional_entrega: 1,
55
+ }
56
+
57
+ # Pedido
58
+ @itens_do_pedido = [
59
+ {
60
+ codigo_produto: 1,
61
+ codigo_categoria: 1,
62
+ nome_produto: 'Produto 1',
63
+ nome_categoria: 'Categoria 1',
64
+ quantidade_produto: 1,
65
+ valor_unitario_produto: 50
66
+ },
67
+ {
68
+ codigo_produto: 1,
69
+ codigo_categoria: 1,
70
+ nome_produto: 'Produto 1',
71
+ nome_categoria: 'Categoria 1',
72
+ quantidade_produto: 1,
73
+ valor_unitario_produto: 50
74
+ }
75
+ ]
76
+
77
+ # Dados da venda
78
+ @venda = {
79
+ numero_transacao: 104,
80
+ codigo_forma_pagamento: 120,
81
+ valor: 100,
82
+ valor_desconto: 0,
83
+ taxa_embarque: 0,
84
+ parcelas: 1,
85
+ nome_titular_cartao_credito: 'Marcelo',
86
+ numero_cartao_credito: '4444333322221111',
87
+ codigo_seguranca: '123',
88
+ data_validade_cartao: '12/2016',
89
+ url_campainha: 'teste',
90
+ ip: '187.39.185.39',
91
+ idioma: 1,
92
+ origem_transacao: 1,
93
+ campo_livre1: '',
94
+ campo_livre2: '',
95
+ campo_livre3: '',
96
+ campo_livre4: '',
97
+ campo_livre5: '',
98
+ campo_livre6: '',
99
+ dados_usuario_transacao: @usuario_transacao,
100
+ itens_do_pedido: @itens_do_pedido
101
+ }
102
+
103
+ end
104
+
105
+ it "deveria pagar com sucesso" do
106
+ transacao = Superpay::Transacao.pagar( @venda )
107
+ transacao[:autorizacao].must_equal '0'
108
+ transacao[:codigo_estabelecimento].must_equal Superpay.config.estabelecimento.to_s
109
+ transacao[:codigo_forma_pagamento].must_equal '120'
110
+ transacao[:codigo_transacao_operadora].must_equal '0'
111
+ # transacao[:data_aprovacao_operadora].must_equal '21/06/2013'
112
+ # transacao[:mensagem_venda].must_equal 'Autorizada'
113
+ transacao[:numero_transacao].must_equal '104'
114
+ transacao[:parcelas].must_equal '1'
115
+ transacao[:status_transacao].must_equal '31'
116
+ transacao[:status].must_equal :ja_efetuada
117
+ transacao[:taxa_embarque].must_equal 0
118
+ transacao[:valor].must_equal 1
119
+ transacao[:valor_desconto].must_equal 0
120
+ end
121
+
122
+ it "deveria consultar com sucesso" do
123
+ transacao = Superpay::Transacao.consultar(104)
124
+ transacao[:autorizacao].must_equal '0'
125
+ transacao[:codigo_estabelecimento].must_equal Superpay.config.estabelecimento.to_s
126
+ transacao[:codigo_forma_pagamento].must_equal '120'
127
+ transacao[:codigo_transacao_operadora].must_equal '0'
128
+ # transacao[:data_aprovacao_operadora].must_equal '21/06/2013'
129
+ # transacao[:mensagem_venda].must_equal 'Autorizada'
130
+ transacao[:numero_transacao].must_equal '104'
131
+ transacao[:parcelas].must_equal '1'
132
+ transacao[:status_transacao].must_equal '13'
133
+ transacao[:status].must_equal :cancelada
134
+ transacao[:valor].must_equal 1
135
+ transacao[:taxa_embarque].must_equal 0
136
+ transacao[:valor_desconto].must_equal 0
137
+ end
138
+
139
+ it "deveria voltar erro se consultar transacao que não existe" do
140
+ transacao = Superpay::Transacao.consultar(0)
141
+ puts transacao.to_yaml
142
+ end
143
+
144
+ it "deveria pagar pela primeira vez com sucesso" do
145
+
146
+ transacao = {
147
+ numero_transacao: 106,
148
+ codigo_forma_pagamento: 121,
149
+ valor: 107.45,
150
+ valor_desconto: 0,
151
+ taxa_embarque: 0,
152
+ parcelas: 1,
153
+ nome_titular_cartao_credito: 'Marcelo',
154
+ numero_cartao_credito: '5390124620377429',
155
+ codigo_seguranca: '123',
156
+ data_validade_cartao: '12/2016',
157
+ url_campainha: 'teste',
158
+ ip: '187.39.185.39',
159
+ idioma: 1,
160
+ origem_transacao: 1,
161
+ campo_livre1: '',
162
+ campo_livre2: '',
163
+ campo_livre3: '',
164
+ campo_livre4: '',
165
+ campo_livre5: '',
166
+ campo_livre6: '',
167
+ dados_usuario_transacao: {
168
+ codigo_cliente: 1,
169
+ tipo_cliente: 1,
170
+ nome_comprador: 'Marcelo',
171
+ documento_comprador: '04795729921',
172
+ documento2_comprador: '97619077',
173
+ sexo_comprador: 'M',
174
+ data_nascimento_comprador: '14/03/1988',
175
+ telefone_comprador: '34166404',
176
+ ddd_comprador: '16',
177
+ ddi_comprador: '55',
178
+ codigo_tipo_telefone_comprador: 1,
179
+ telefone_adicional_comprador: '34166405',
180
+ ddd_adicional_comprador: '16',
181
+ ddi_adicional_comprador: '55',
182
+ codigo_tipo_telefone_adicional_comprador: 1,
183
+ email_comprador: 'marcelo@qw3.com.br',
184
+ endereco_comprador: 'Giácomo Casale',
185
+ numero_endereco_comprador: '147',
186
+ bairro_endereco_comprador: 'Jardim Alvorada',
187
+ complemento_endereco_comprador: '',
188
+ cidade_endereco_comprador: 'São Carlos',
189
+ estado_endereco_comprador: 'SP',
190
+ cep_endereco_comprador: '13562350',
191
+ endereco_entrega: 'Giácomo Casale',
192
+ numero_endereco_entrega: '147',
193
+ bairro_endereco_entrega: 'Jardim Alvorada',
194
+ complemento_endereco_entrega: '',
195
+ cidade_endereco_entrega: 'São Carlos',
196
+ estado_endereco_entrega: 'SP',
197
+ cep_endereco_entrega: '13562350',
198
+ telefone_entrega: '34166404',
199
+ ddd_entrega: '16',
200
+ ddi_entrega: '55',
201
+ codigo_tipo_telefone_entrega: 1,
202
+ telefone_adicional_entrega: '34166404',
203
+ ddd_adicional_entrega: '16',
204
+ ddi_adicional_entrega: '55',
205
+ codigo_tipo_telefone_adicional_entrega: 1
206
+ },
207
+ itens_do_pedido: {
208
+ codigo_produto: 1,
209
+ codigo_categoria: 1,
210
+ nome_produto: 'Produto 1',
211
+ nome_categoria: 'Categoria 1',
212
+ quantidade_produto: 1,
213
+ valor_unitario_produto: 107.45
214
+ }
215
+ }
216
+
217
+ transacao = Superpay::Transacao.pagar( transacao )
218
+ transacao[:autorizacao].must_equal '0'
219
+ transacao[:codigo_estabelecimento].must_equal Superpay.config.estabelecimento.to_s
220
+ transacao[:codigo_forma_pagamento].must_equal '121'
221
+ transacao[:codigo_transacao_operadora].must_equal '0'
222
+ # transacao[:data_aprovacao_operadora].must_equal Date.today
223
+ # transacao[:mensagem_venda].must_equal 'Autorizada'
224
+ transacao[:numero_transacao].must_equal '106'
225
+ transacao[:parcelas].must_equal '1'
226
+ transacao[:status_transacao].must_equal '31'
227
+ transacao[:status].must_equal :ja_efetuada
228
+ transacao[:taxa_embarque].must_equal 0
229
+ transacao[:valor].must_equal 107.45
230
+ transacao[:valor_desconto].must_equal 0
231
+
232
+ end
233
+
234
+ end
metadata ADDED
@@ -0,0 +1,148 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: superpay
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - QW3 Software & Marketing
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-07-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: brdinheiro
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: brdata
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: savon
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: '2.2'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: '2.2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '1.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: minitest
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '5.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '5.0'
97
+ description: Gem de integração com o gateway de pagamentos Superpay
98
+ email:
99
+ - contato@qw3.com.br
100
+ executables: []
101
+ extensions: []
102
+ extra_rdoc_files: []
103
+ files:
104
+ - .gitignore
105
+ - Gemfile
106
+ - LICENSE.txt
107
+ - README.md
108
+ - Rakefile
109
+ - lib/superpay.rb
110
+ - lib/superpay/conector.rb
111
+ - lib/superpay/configuracao.rb
112
+ - lib/superpay/helper.rb
113
+ - lib/superpay/transacao.rb
114
+ - lib/superpay/version.rb
115
+ - superpay.gemspec
116
+ - test/conexao_test.rb
117
+ - test/configuracao_test.rb
118
+ - test/helper_test.rb
119
+ - test/transacao_test.rb
120
+ homepage: https://github.com/qw3/superpay
121
+ licenses:
122
+ - MIT
123
+ metadata: {}
124
+ post_install_message:
125
+ rdoc_options: []
126
+ require_paths:
127
+ - lib
128
+ required_ruby_version: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ required_rubygems_version: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - '>='
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ requirements: []
139
+ rubyforge_project:
140
+ rubygems_version: 2.0.3
141
+ signing_key:
142
+ specification_version: 4
143
+ summary: Projeto extraído da construção da plataforma de e-commerce Profit, da QW3.
144
+ test_files:
145
+ - test/conexao_test.rb
146
+ - test/configuracao_test.rb
147
+ - test/helper_test.rb
148
+ - test/transacao_test.rb