lw-pagto-certo 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +11 -0
- data/Manifest.txt +10 -0
- data/README.rdoc +163 -0
- data/lib/lw-pagto-certo.rb +210 -0
- data/lib/lw-pagto-certo/default.rb +79 -0
- data/lib/lw-pagto-certo/defaultDriver.rb +63 -0
- data/lib/lw-pagto-certo/defaultMappingRegistry.rb +62 -0
- data/lib/lw-pagto-certo/pagto-20090326.wsdl +155 -0
- data/lib/lw-pagto-certo/version.rb +42 -0
- metadata +92 -0
data/History.txt
ADDED
data/Manifest.txt
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
History.txt
|
2
|
+
lib/lw-pagto-certo
|
3
|
+
lib/lw-pagto-certo/default.rb
|
4
|
+
lib/lw-pagto-certo/defaultDriver.rb
|
5
|
+
lib/lw-pagto-certo/defaultMappingRegistry.rb
|
6
|
+
lib/lw-pagto-certo/pagto-20090326.wsdl
|
7
|
+
lib/lw-pagto-certo/version.rb
|
8
|
+
lib/lw-pagto-certo.rb
|
9
|
+
Manifest.txt
|
10
|
+
README.rdoc
|
data/README.rdoc
ADDED
@@ -0,0 +1,163 @@
|
|
1
|
+
= lw-pagto-certo
|
2
|
+
|
3
|
+
* Gem para integração com o serviço Pagamento Certo da Locaweb
|
4
|
+
|
5
|
+
== DESCRIPTION:
|
6
|
+
|
7
|
+
Encapsula as chamadas SOAP ao servidor do Pagamento Certo, criando os
|
8
|
+
envelopes corretos de dados.
|
9
|
+
|
10
|
+
== REQUIREMENTS:
|
11
|
+
|
12
|
+
* ActiveSupport
|
13
|
+
* SOAP4R
|
14
|
+
* Builder
|
15
|
+
|
16
|
+
== INSTALL:
|
17
|
+
|
18
|
+
gem install akitaonrails-lw-pagto-certo --source=http://gems.github.com
|
19
|
+
|
20
|
+
== USANDO O PAGAMENTO CERTO DA LOCAWEB
|
21
|
+
|
22
|
+
=== Passo 1: Cadastro do Vendedor
|
23
|
+
|
24
|
+
Antes de mais nada, você precisa se cadastrar como um vendedor, para ganhar uma
|
25
|
+
chave única, secreta, que o identifica como vendedor. Para isso vá ao site:
|
26
|
+
|
27
|
+
http://www.locaweb.com.br/produtos/pagamento-certo
|
28
|
+
|
29
|
+
Depois de se cadastrar, faça login no painel (http://pagamentocerto.com.br/painel),
|
30
|
+
adicione seus dados bancários, etc. No final você receberá a chave por e-mail, um
|
31
|
+
string com este formato: "XXXXXXXX-AAAA-BBBB-CCCC-ZZZZZZZZZZZZ". Guarde-a bem, você
|
32
|
+
a usará em todas as transações bancárias
|
33
|
+
|
34
|
+
=== Passo 2: Aplicação
|
35
|
+
|
36
|
+
Você tem um website feito em Ruby on Rails. Nele você tem seus produtos, seu carrinho
|
37
|
+
de compras. No final de todo o processo, quando o cliente confirma o pagamento, você
|
38
|
+
fará esta chamada:
|
39
|
+
|
40
|
+
lw = LwPagtoCerto.new(:chave_vendedor => "XXXXXXXX-AAAA-BBBB-CCCC-ZZZZZZZZZZZZ",
|
41
|
+
:url_retorno => "http://meusite.dominio.com.br/confirmacao_pagamento")
|
42
|
+
|
43
|
+
A :url_retorno tem que ser uma URL válida, acessível pela internet. O processo funciona
|
44
|
+
assim:
|
45
|
+
|
46
|
+
* você inicia a transação e recebe um ID de transacao
|
47
|
+
|
48
|
+
* sua aplicação devolve um HTTP POST ao endereço em LwPagtoCerto.DefaultCheckoutUrl
|
49
|
+
com o campo "tdi" igual ao ID da transacao. isso redirecionará o seu cliente ao
|
50
|
+
site do pagamento certo, com todos os dados do pedido e já pronto para pagar
|
51
|
+
|
52
|
+
* depois que o seu cliente efetua o pagamento corretamente, o Pagamento Certo fará
|
53
|
+
um HTTP POST de volta à sua aplicação, na URL que você passou no :url_retorno,
|
54
|
+
devolvendo novamente o ID da transação no "params[:tdi]" (crie um controller Rails
|
55
|
+
e cheque isso na action "create", por exemplo). Por exemplo, se você tiver um
|
56
|
+
recurso assim:
|
57
|
+
|
58
|
+
# config/routes.rb
|
59
|
+
map.resource :checkout
|
60
|
+
|
61
|
+
# app/controllers/checkout_controller
|
62
|
+
class CheckoutController < ApplicationController
|
63
|
+
def create
|
64
|
+
id_transacao = params[:tdi]
|
65
|
+
lw = LwPagtoCerto.new(:chave_vendedor => "XXXXXXXX-AAAA-BBBB-CCCC-ZZZZZZZZZZZZ")
|
66
|
+
retorno = lw.consulta(id_transacao)
|
67
|
+
if retorno[:cod_retorno] == "15"
|
68
|
+
flash[:success] = "Pagamento bem sucedido"
|
69
|
+
else
|
70
|
+
flash[:error] = retorno[:mensagem_retorno]
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
Nesse caso a :url_retorno seria www.meusite.com/checkout
|
76
|
+
|
77
|
+
* como já adiantado no código acima, note a chamada à API de consulta da transação onde
|
78
|
+
você poderá ver se deu tudo certo ou não.
|
79
|
+
|
80
|
+
Uma vez criado a instância de LwPagtoCerto, preencha os dados do cliente corretamente
|
81
|
+
conforme o exemplo abaixo:
|
82
|
+
|
83
|
+
lw.comprador = {
|
84
|
+
:Nome => "Fabio Akita",
|
85
|
+
:Email => "fabio.akita@locaweb.com.br",
|
86
|
+
:Cpf => "12312312300",
|
87
|
+
:Rg => "123456780",
|
88
|
+
:Ddd => "11",
|
89
|
+
:Telefone => "12345678",
|
90
|
+
:TipoPessoa => "Fisica",
|
91
|
+
# :RazaoSocial => "",
|
92
|
+
# :Cnpj => "",
|
93
|
+
}
|
94
|
+
lw.pagamento = {
|
95
|
+
:Modulo => "Boleto",
|
96
|
+
# :Tipo => "",
|
97
|
+
}
|
98
|
+
lw.pedido = {
|
99
|
+
:Numero => "12345",
|
100
|
+
:ValorSubTotal => "2000",
|
101
|
+
:ValorFrete => "000",
|
102
|
+
:ValorAcrescimo => "000",
|
103
|
+
:ValorDesconto => "000",
|
104
|
+
:ValorTotal => "2000",
|
105
|
+
:Itens => {
|
106
|
+
:Item => {
|
107
|
+
:CodProduto => "4321",
|
108
|
+
:DescProduto => "Livro",
|
109
|
+
:Quantidade => "1",
|
110
|
+
:ValorUnitario => "2000",
|
111
|
+
:ValorTotal => "2000",
|
112
|
+
},
|
113
|
+
},
|
114
|
+
:Cobranca => {
|
115
|
+
:Endereco => "Rua Foo",
|
116
|
+
:Numero => "123",
|
117
|
+
:Bairro => "Foo",
|
118
|
+
:Cidade => "Sao Paulo",
|
119
|
+
:Cep => "12345678",
|
120
|
+
:Estado => "SP",
|
121
|
+
},
|
122
|
+
:Entrega => {
|
123
|
+
:Endereco => "Rua Foo",
|
124
|
+
:Numero => "123",
|
125
|
+
:Bairro => "Foo",
|
126
|
+
:Cidade => "Sao Paulo",
|
127
|
+
:Cep => "12345678",
|
128
|
+
:Estado => "SP",
|
129
|
+
},
|
130
|
+
}
|
131
|
+
|
132
|
+
Com o objeto LwPagtoCerto preenchido corretamente você deve chamar o método "inicia", que
|
133
|
+
começará uma transação aberta com o Pagamento Certo, lhe devolvendo o ID da transação. É
|
134
|
+
depois deste ponto que se faz o HTTP POST ao Pagamento Certo passando essa ID no campo
|
135
|
+
"tdi" do Post.
|
136
|
+
|
137
|
+
retorno = lw.inicia()
|
138
|
+
# => {:mensagem_retorno=>"Transa\303\247\303\243o iniciada.",
|
139
|
+
:id_transacao=>"YYYYYYYY-DDDD-EEEE-FFFF-ZZZZZZZZZZZZ",
|
140
|
+
:codigo=>"45383", :cod_retorno=>"0"}
|
141
|
+
|
142
|
+
Além disso, o objeto "retorno" ainda tem um método extra "cod_retorno_mensagem" para
|
143
|
+
traduzir o código no campo :cod_retorno.
|
144
|
+
|
145
|
+
Como explicado, depois que o cliente faz o pagamento, o Pagamento Certo te redireciona
|
146
|
+
à :url_retorno que você passou, repassando o ID da transação e então você pode verificar
|
147
|
+
o resultado assim:
|
148
|
+
|
149
|
+
retorno = lw.consulta("YYYYYYYY-DDDD-EEEE-FFFF-ZZZZZZZZZZZZ")
|
150
|
+
# => {:mensagem_retorno=>"Transa\303\247\303\243o ainda n\303\243o processada.",
|
151
|
+
:id_transacao=>"YYYYYYYY-DDDD-EEEE-FFFF-ZZZZZZZZZZZZ", :cod_retorno=>"12"}
|
152
|
+
|
153
|
+
Aqui também, o objeto "retorno" ainda tem um método extra "cod_retorno_mensagem" para
|
154
|
+
traduzir o código no campo :cod_retorno. Procure por mais constantes no arquivo
|
155
|
+
"lib/lw-pagto-certo/version.rb"
|
156
|
+
|
157
|
+
== REFERENCES
|
158
|
+
|
159
|
+
Para entender o fluxo em detalhes bem como cada um dos dados retornados, vá ao site:
|
160
|
+
|
161
|
+
http://pagamentocerto.com.br/downloads/
|
162
|
+
|
163
|
+
E baixe o kit de integração, que contém uma documentação detalhada em PDF.
|
@@ -0,0 +1,210 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
gem "soap4r", "~> 1.5.0"
|
3
|
+
require 'activesupport'
|
4
|
+
require 'builder'
|
5
|
+
require File.expand_path(File.dirname(__FILE__)) + '/lw-pagto-certo/defaultDriver.rb'
|
6
|
+
require File.expand_path(File.dirname(__FILE__)) + '/lw-pagto-certo/version.rb'
|
7
|
+
|
8
|
+
class LwPagtoCerto
|
9
|
+
DefaultEndpointUrl = "https://www.pagamentocerto.com.br/vendedor/vendedor.asmx"
|
10
|
+
DefaultCheckoutUrl = "https://www.pagamentocerto.com.br/pagamento/pagamento.aspx"
|
11
|
+
|
12
|
+
attr_accessor :chave_vendedor # chave criada ao se cadastrar no Pagto. Certo
|
13
|
+
attr_accessor :url_retorno # URL da sua aplicação para onde o Pagto. Certo redirecionará após o pagto.
|
14
|
+
|
15
|
+
# Dados de comprador - Hash
|
16
|
+
# {
|
17
|
+
# :Nome => "", # 3 a 255
|
18
|
+
# :Email => "", # 5 a 100
|
19
|
+
# :Cpf => "", # 11
|
20
|
+
# :Rg => "", # opcional 5 a 14
|
21
|
+
# :Ddd => "", # opcional 2
|
22
|
+
# :Telefone => "", # opcional 7 a 8
|
23
|
+
# :TipoPessoa => "", # 6 a 8
|
24
|
+
# :RazaoSocial => "", # 5 a 255
|
25
|
+
# :Cnpj => "", # 1 a 50
|
26
|
+
# }
|
27
|
+
attr_accessor :comprador
|
28
|
+
|
29
|
+
# Dados de pagamento - Hash
|
30
|
+
# {
|
31
|
+
# :Modulo => "", # 6 a 13
|
32
|
+
# :Tipo => "", # opcional 0 a 15
|
33
|
+
# }
|
34
|
+
attr_accessor :pagamento
|
35
|
+
|
36
|
+
# Dados do Pedido - Hash
|
37
|
+
# {
|
38
|
+
# :Numero => "", # seu número interno de controle do pedido
|
39
|
+
# :ValorSubTotal => "000", # dinheiro = 999.88 = 99988
|
40
|
+
# :ValorFrete => "000", # centavos são sempre os dois ultimos digitos
|
41
|
+
# :ValorAcrescimo => "000",
|
42
|
+
# :ValorDesconto => "000",
|
43
|
+
# :ValorTotal => "000",
|
44
|
+
# :Itens => {
|
45
|
+
# :Item => {
|
46
|
+
# :CodProduto => "", # 1 a 40
|
47
|
+
# :DescProduto => "", # 1 a 100
|
48
|
+
# :Quantidade => "0", #
|
49
|
+
# :ValorUnitario => "000", # 3 a 14
|
50
|
+
# :ValorTotal => "000", # 3 a 14
|
51
|
+
# },
|
52
|
+
# },
|
53
|
+
# :Cobranca => {
|
54
|
+
# :Endereco => "",
|
55
|
+
# :Numero => "",
|
56
|
+
# :Bairro => "",
|
57
|
+
# :Cidade => "",
|
58
|
+
# :Cep => "", # 8 dígitos
|
59
|
+
# :Estado => "", # precisa ser válido, como ex. SP, RJ, etc.
|
60
|
+
# },
|
61
|
+
# :Entrega => {
|
62
|
+
# :Endereco => "",
|
63
|
+
# :Numero => "",
|
64
|
+
# :Bairro => "",
|
65
|
+
# :Cidade => "",
|
66
|
+
# :Cep => "", # 8 dígitos
|
67
|
+
# :Estado => "", # precisa ser válido, como ex. SP, RJ, etc.
|
68
|
+
# }
|
69
|
+
# }
|
70
|
+
attr_accessor :pedido
|
71
|
+
|
72
|
+
mattr_accessor :soap
|
73
|
+
self.soap = ::VendedorSoap.new(DefaultEndpointUrl)
|
74
|
+
|
75
|
+
def initialize(options = {})
|
76
|
+
self.chave_vendedor = options[:chave_vendedor] || ""
|
77
|
+
self.url_retorno = options[:url_retorno] || ""
|
78
|
+
%w(comprador pagamento pedido).each do |method|
|
79
|
+
send("#{method}=".to_sym, {})
|
80
|
+
end
|
81
|
+
yield(self) if block_given?
|
82
|
+
end
|
83
|
+
|
84
|
+
# Inicia Transação
|
85
|
+
#
|
86
|
+
# Passa a estrutura Hash com os elementos de Transação documentadas acima
|
87
|
+
# ou pega a configuração feita via "setters"
|
88
|
+
#
|
89
|
+
# Exemplo:
|
90
|
+
#
|
91
|
+
# lw = LwPagtoCerto.new(:chave_vendedor => "xxxxx", :url_retorno => "http://dominio.com/pagto")
|
92
|
+
# lw.comprador = { :Nome => "Fabio", :Email => "fabio.akita@locaweb.com.br", .....}
|
93
|
+
# lw.pagamento = { :Modulo => LwPagtoCerto::Modulo::BOLETO }
|
94
|
+
# ...
|
95
|
+
# retorno = lw.inicia do |l|
|
96
|
+
# l.cobranca = { :Endereco => "", :Numero => "", ..... }
|
97
|
+
# end
|
98
|
+
#
|
99
|
+
# puts retorno[:cod_retorno]
|
100
|
+
# puts retorno[:mensagem_retorno]
|
101
|
+
def inicia(transacao = nil)
|
102
|
+
transacao = transacao || build_transacao
|
103
|
+
yield(self) if block_given?
|
104
|
+
payload = IniciaTransacao.new( self.chave_vendedor, self.url_retorno, transacao )
|
105
|
+
response = LwPagtoCerto.soap.iniciaTransacao(payload)
|
106
|
+
response = Hash.from_xml(response.iniciaTransacaoResult)
|
107
|
+
response = response["loca_web"]["transacao"].symbolize_keys
|
108
|
+
|
109
|
+
response[:data] = Time.parse(response[:data].gsub(/(\d+)\/(\d+)\/(\d+)\s(.*)/,
|
110
|
+
"#{$3}-#{$2}-#{$1}T#{$4}")) if response[:data]
|
111
|
+
if response[:CodRetorno]
|
112
|
+
response.instance_eval do
|
113
|
+
def cod_retorno_mensagem
|
114
|
+
LwPagtoCerto::INICIA_COD_RETORNO[self[:CodRetorno].to_sym]
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
response
|
119
|
+
end
|
120
|
+
|
121
|
+
# Consulta os Dados de uma Transação que já foi Paga
|
122
|
+
#
|
123
|
+
# lw = LwPagtoCerto.new(:chave_vendedor => "xxxxx", :url_retorno => "http://dominio.com/pagto")
|
124
|
+
# retorno = lw.consulta("xxxxxxxx") # passa Id da transação retornada ao chamar "inicia"
|
125
|
+
#
|
126
|
+
# puts retorno[:CodRetorno]
|
127
|
+
# puts retorno[:IdTransacao]
|
128
|
+
# puts retorno[:Codigo]
|
129
|
+
# puts retorno[:data] # => "26/3/2009 15:19:41"
|
130
|
+
# puts retorno[:MensagemRetorno]
|
131
|
+
def consulta(id_transacao = "")
|
132
|
+
payload = ConsultaTransacao.new self.chave_vendedor, id_transacao
|
133
|
+
response = LwPagtoCerto.soap.consultaTransacao(payload)
|
134
|
+
response = Hash.from_xml(response.consultaTransacaoResult)
|
135
|
+
response = response["loca_web"]["transacao"].symbolize_keys
|
136
|
+
if response[:CodRetorno]
|
137
|
+
response.instance_eval do
|
138
|
+
def cod_retorno_mensagem
|
139
|
+
LwPagtoCerto::FINALIZA_COD_RETORNO[self[:CodRetorno].to_sym]
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
response
|
144
|
+
end
|
145
|
+
|
146
|
+
def consultaPedido(id_transacao = "")
|
147
|
+
payload = ConsultaTransacao.new self.chave_vendedor, id_transacao
|
148
|
+
response = LwPagtoCerto.soap.consultaTransacao(payload)
|
149
|
+
response = Hash.from_xml(response.consultaTransacaoResult)
|
150
|
+
return response["loca_web"]["pedido"].symbolize_keys if response["loca_web"]["pedido"]
|
151
|
+
return []
|
152
|
+
end
|
153
|
+
|
154
|
+
# Usado internamento pelo Inicia Transacao para gerar o XML
|
155
|
+
# que define a transacao sendo iniciada. Utilize os accessors
|
156
|
+
# comprador, pagamento e pedido conforme comentado no começo do
|
157
|
+
# arquivo
|
158
|
+
def build_transacao
|
159
|
+
result = ""
|
160
|
+
xml = Builder::XmlMarkup.new(:indent => 2, :target => result)
|
161
|
+
xml.instruct!
|
162
|
+
xml.LocaWeb do |lw|
|
163
|
+
lw.Comprador do |c|
|
164
|
+
%w(Nome Email Cpf Rg Ddd Telefone TipoPessoa RazaoSocial Cnpj).each do |field|
|
165
|
+
eval "c.#{field} comprador[field.to_sym]" if comprador[field.to_sym]
|
166
|
+
end
|
167
|
+
end
|
168
|
+
lw.Pagamento do |p|
|
169
|
+
%w(Modulo Tipo).each do |field|
|
170
|
+
eval "p.#{field} pagamento[field.to_sym]" if pagamento[field.to_sym]
|
171
|
+
end
|
172
|
+
end
|
173
|
+
lw.Pedido do |p|
|
174
|
+
%w(Numero ValorSubTotal ValorFrete ValorAcrescimo ValorDesconto ValorTotal).each do |field|
|
175
|
+
eval "p.#{field} pedido[field.to_sym]" if pedido[field.to_sym]
|
176
|
+
end
|
177
|
+
if pedido[:Itens]
|
178
|
+
p.Itens do |items|
|
179
|
+
pedido[:Itens].each do |key, item|
|
180
|
+
items.Item do
|
181
|
+
%w(CodProduto DescProduto Quantidade ValorUnitario ValorTotal).each do |field|
|
182
|
+
eval "items.#{field} item[field.to_sym]" if item[field.to_sym]
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
if pedido[:Cobranca]
|
189
|
+
p.Cobranca do |c|
|
190
|
+
%w(Endereco Numero Bairro Cidade Cep Estado).each do |field|
|
191
|
+
eval "c.#{field} pedido[:Cobranca][field.to_sym]" if pedido[:Cobranca][field.to_sym]
|
192
|
+
end
|
193
|
+
end
|
194
|
+
end
|
195
|
+
if pedido[:Entrega]
|
196
|
+
p.Entrega do |c|
|
197
|
+
%w(Endereco Numero Bairro Cidade Cep Estado).each do |field|
|
198
|
+
eval "c.#{field} pedido[:Cobranca][field.to_sym]" if pedido[:Entrega][field.to_sym]
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
result
|
205
|
+
end
|
206
|
+
|
207
|
+
def endpoint_url(url)
|
208
|
+
soap.endpoint_url = url
|
209
|
+
end
|
210
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'xsd/qname'
|
2
|
+
|
3
|
+
# {http://www.locaweb.com.br}IniciaTransacao
|
4
|
+
# chaveVendedor - SOAP::SOAPString
|
5
|
+
# urlRetorno - SOAP::SOAPString
|
6
|
+
# xml - SOAP::SOAPString
|
7
|
+
class IniciaTransacao
|
8
|
+
attr_accessor :chaveVendedor
|
9
|
+
attr_accessor :urlRetorno
|
10
|
+
attr_accessor :xml
|
11
|
+
|
12
|
+
def initialize(chaveVendedor = nil, urlRetorno = nil, xml = nil)
|
13
|
+
@chaveVendedor = chaveVendedor
|
14
|
+
@urlRetorno = urlRetorno
|
15
|
+
@xml = xml
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# {http://www.locaweb.com.br}IniciaTransacaoResponse
|
20
|
+
# iniciaTransacaoResult - SOAP::SOAPString
|
21
|
+
class IniciaTransacaoResponse
|
22
|
+
attr_accessor :iniciaTransacaoResult
|
23
|
+
|
24
|
+
def initialize(iniciaTransacaoResult = nil)
|
25
|
+
@iniciaTransacaoResult = iniciaTransacaoResult
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# {http://www.locaweb.com.br}PagaTransacao
|
30
|
+
# chaveVendedor - SOAP::SOAPString
|
31
|
+
# urlRetorno - SOAP::SOAPString
|
32
|
+
# xml - SOAP::SOAPString
|
33
|
+
# xmlCartao - SOAP::SOAPString
|
34
|
+
class PagaTransacao
|
35
|
+
attr_accessor :chaveVendedor
|
36
|
+
attr_accessor :urlRetorno
|
37
|
+
attr_accessor :xml
|
38
|
+
attr_accessor :xmlCartao
|
39
|
+
|
40
|
+
def initialize(chaveVendedor = nil, urlRetorno = nil, xml = nil, xmlCartao = nil)
|
41
|
+
@chaveVendedor = chaveVendedor
|
42
|
+
@urlRetorno = urlRetorno
|
43
|
+
@xml = xml
|
44
|
+
@xmlCartao = xmlCartao
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# {http://www.locaweb.com.br}PagaTransacaoResponse
|
49
|
+
# pagaTransacaoResult - SOAP::SOAPString
|
50
|
+
class PagaTransacaoResponse
|
51
|
+
attr_accessor :pagaTransacaoResult
|
52
|
+
|
53
|
+
def initialize(pagaTransacaoResult = nil)
|
54
|
+
@pagaTransacaoResult = pagaTransacaoResult
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# {http://www.locaweb.com.br}ConsultaTransacao
|
59
|
+
# chaveVendedor - SOAP::SOAPString
|
60
|
+
# idTransacao - SOAP::SOAPString
|
61
|
+
class ConsultaTransacao
|
62
|
+
attr_accessor :chaveVendedor
|
63
|
+
attr_accessor :idTransacao
|
64
|
+
|
65
|
+
def initialize(chaveVendedor = nil, idTransacao = nil)
|
66
|
+
@chaveVendedor = chaveVendedor
|
67
|
+
@idTransacao = idTransacao
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
# {http://www.locaweb.com.br}ConsultaTransacaoResponse
|
72
|
+
# consultaTransacaoResult - SOAP::SOAPString
|
73
|
+
class ConsultaTransacaoResponse
|
74
|
+
attr_accessor :consultaTransacaoResult
|
75
|
+
|
76
|
+
def initialize(consultaTransacaoResult = nil)
|
77
|
+
@consultaTransacaoResult = consultaTransacaoResult
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__)) + '/default.rb'
|
2
|
+
require File.expand_path(File.dirname(__FILE__)) + '/defaultMappingRegistry.rb'
|
3
|
+
require 'soap/rpc/driver'
|
4
|
+
|
5
|
+
class VendedorSoap < ::SOAP::RPC::Driver
|
6
|
+
DefaultEndpointUrl = "https://www.pagamentocerto.com.br/vendedor/vendedor.asmx"
|
7
|
+
|
8
|
+
Methods = [
|
9
|
+
[ "http://www.locaweb.com.br/IniciaTransacao",
|
10
|
+
"iniciaTransacao",
|
11
|
+
[ ["in", "parameters", ["::SOAP::SOAPElement", "http://www.locaweb.com.br", "IniciaTransacao"]],
|
12
|
+
["out", "parameters", ["::SOAP::SOAPElement", "http://www.locaweb.com.br", "IniciaTransacaoResponse"]] ],
|
13
|
+
{ :request_style => :document, :request_use => :literal,
|
14
|
+
:response_style => :document, :response_use => :literal,
|
15
|
+
:faults => {} }
|
16
|
+
],
|
17
|
+
[ "http://www.locaweb.com.br/PagaTransacao",
|
18
|
+
"pagaTransacao",
|
19
|
+
[ ["in", "parameters", ["::SOAP::SOAPElement", "http://www.locaweb.com.br", "PagaTransacao"]],
|
20
|
+
["out", "parameters", ["::SOAP::SOAPElement", "http://www.locaweb.com.br", "PagaTransacaoResponse"]] ],
|
21
|
+
{ :request_style => :document, :request_use => :literal,
|
22
|
+
:response_style => :document, :response_use => :literal,
|
23
|
+
:faults => {} }
|
24
|
+
],
|
25
|
+
[ "http://www.locaweb.com.br/ConsultaTransacao",
|
26
|
+
"consultaTransacao",
|
27
|
+
[ ["in", "parameters", ["::SOAP::SOAPElement", "http://www.locaweb.com.br", "ConsultaTransacao"]],
|
28
|
+
["out", "parameters", ["::SOAP::SOAPElement", "http://www.locaweb.com.br", "ConsultaTransacaoResponse"]] ],
|
29
|
+
{ :request_style => :document, :request_use => :literal,
|
30
|
+
:response_style => :document, :response_use => :literal,
|
31
|
+
:faults => {} }
|
32
|
+
]
|
33
|
+
]
|
34
|
+
|
35
|
+
def initialize(endpoint_url = nil)
|
36
|
+
endpoint_url ||= DefaultEndpointUrl
|
37
|
+
super(endpoint_url, nil)
|
38
|
+
self.mapping_registry = DefaultMappingRegistry::EncodedRegistry
|
39
|
+
self.literal_mapping_registry = DefaultMappingRegistry::LiteralRegistry
|
40
|
+
init_methods
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def init_methods
|
46
|
+
Methods.each do |definitions|
|
47
|
+
opt = definitions.last
|
48
|
+
if opt[:request_style] == :document
|
49
|
+
add_document_operation(*definitions)
|
50
|
+
else
|
51
|
+
add_rpc_operation(*definitions)
|
52
|
+
qname = definitions[0]
|
53
|
+
name = definitions[2]
|
54
|
+
if qname.name != name and qname.name.capitalize == name.capitalize
|
55
|
+
::SOAP::Mapping.define_singleton_method(self, qname.name) do |*arg|
|
56
|
+
__send__(name, *arg)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__)) + '/default.rb'
|
2
|
+
require 'soap/mapping'
|
3
|
+
|
4
|
+
module DefaultMappingRegistry
|
5
|
+
EncodedRegistry = ::SOAP::Mapping::EncodedRegistry.new
|
6
|
+
LiteralRegistry = ::SOAP::Mapping::LiteralRegistry.new
|
7
|
+
NsWwwLocawebComBr = "http://www.locaweb.com.br"
|
8
|
+
|
9
|
+
LiteralRegistry.register(
|
10
|
+
:class => IniciaTransacao,
|
11
|
+
:schema_name => XSD::QName.new(NsWwwLocawebComBr, "IniciaTransacao"),
|
12
|
+
:schema_element => [
|
13
|
+
["chaveVendedor", "SOAP::SOAPString", [0, 1]],
|
14
|
+
["urlRetorno", "SOAP::SOAPString", [0, 1]],
|
15
|
+
["xml", "SOAP::SOAPString", [0, 1]]
|
16
|
+
]
|
17
|
+
)
|
18
|
+
|
19
|
+
LiteralRegistry.register(
|
20
|
+
:class => IniciaTransacaoResponse,
|
21
|
+
:schema_name => XSD::QName.new(NsWwwLocawebComBr, "IniciaTransacaoResponse"),
|
22
|
+
:schema_element => [
|
23
|
+
["iniciaTransacaoResult", ["SOAP::SOAPString", XSD::QName.new(NsWwwLocawebComBr, "IniciaTransacaoResult")], [0, 1]]
|
24
|
+
]
|
25
|
+
)
|
26
|
+
|
27
|
+
LiteralRegistry.register(
|
28
|
+
:class => PagaTransacao,
|
29
|
+
:schema_name => XSD::QName.new(NsWwwLocawebComBr, "PagaTransacao"),
|
30
|
+
:schema_element => [
|
31
|
+
["chaveVendedor", "SOAP::SOAPString", [0, 1]],
|
32
|
+
["urlRetorno", "SOAP::SOAPString", [0, 1]],
|
33
|
+
["xml", "SOAP::SOAPString", [0, 1]],
|
34
|
+
["xmlCartao", "SOAP::SOAPString", [0, 1]]
|
35
|
+
]
|
36
|
+
)
|
37
|
+
|
38
|
+
LiteralRegistry.register(
|
39
|
+
:class => PagaTransacaoResponse,
|
40
|
+
:schema_name => XSD::QName.new(NsWwwLocawebComBr, "PagaTransacaoResponse"),
|
41
|
+
:schema_element => [
|
42
|
+
["pagaTransacaoResult", ["SOAP::SOAPString", XSD::QName.new(NsWwwLocawebComBr, "PagaTransacaoResult")], [0, 1]]
|
43
|
+
]
|
44
|
+
)
|
45
|
+
|
46
|
+
LiteralRegistry.register(
|
47
|
+
:class => ConsultaTransacao,
|
48
|
+
:schema_name => XSD::QName.new(NsWwwLocawebComBr, "ConsultaTransacao"),
|
49
|
+
:schema_element => [
|
50
|
+
["chaveVendedor", "SOAP::SOAPString", [0, 1]],
|
51
|
+
["idTransacao", "SOAP::SOAPString", [0, 1]]
|
52
|
+
]
|
53
|
+
)
|
54
|
+
|
55
|
+
LiteralRegistry.register(
|
56
|
+
:class => ConsultaTransacaoResponse,
|
57
|
+
:schema_name => XSD::QName.new(NsWwwLocawebComBr, "ConsultaTransacaoResponse"),
|
58
|
+
:schema_element => [
|
59
|
+
["consultaTransacaoResult", ["SOAP::SOAPString", XSD::QName.new(NsWwwLocawebComBr, "ConsultaTransacaoResult")], [0, 1]]
|
60
|
+
]
|
61
|
+
)
|
62
|
+
end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="http://www.locaweb.com.br" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="http://www.locaweb.com.br" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
|
3
|
+
<wsdl:types>
|
4
|
+
<s:schema elementFormDefault="qualified" targetNamespace="http://www.locaweb.com.br">
|
5
|
+
<s:element name="IniciaTransacao">
|
6
|
+
<s:complexType>
|
7
|
+
<s:sequence>
|
8
|
+
<s:element minOccurs="0" maxOccurs="1" name="chaveVendedor" type="s:string" />
|
9
|
+
<s:element minOccurs="0" maxOccurs="1" name="urlRetorno" type="s:string" />
|
10
|
+
<s:element minOccurs="0" maxOccurs="1" name="xml" type="s:string" />
|
11
|
+
</s:sequence>
|
12
|
+
</s:complexType>
|
13
|
+
</s:element>
|
14
|
+
<s:element name="IniciaTransacaoResponse">
|
15
|
+
<s:complexType>
|
16
|
+
<s:sequence>
|
17
|
+
<s:element minOccurs="0" maxOccurs="1" name="IniciaTransacaoResult" type="s:string" />
|
18
|
+
</s:sequence>
|
19
|
+
</s:complexType>
|
20
|
+
</s:element>
|
21
|
+
<s:element name="PagaTransacao">
|
22
|
+
<s:complexType>
|
23
|
+
<s:sequence>
|
24
|
+
<s:element minOccurs="0" maxOccurs="1" name="chaveVendedor" type="s:string" />
|
25
|
+
<s:element minOccurs="0" maxOccurs="1" name="urlRetorno" type="s:string" />
|
26
|
+
<s:element minOccurs="0" maxOccurs="1" name="xml" type="s:string" />
|
27
|
+
<s:element minOccurs="0" maxOccurs="1" name="xmlCartao" type="s:string" />
|
28
|
+
</s:sequence>
|
29
|
+
</s:complexType>
|
30
|
+
</s:element>
|
31
|
+
<s:element name="PagaTransacaoResponse">
|
32
|
+
<s:complexType>
|
33
|
+
<s:sequence>
|
34
|
+
<s:element minOccurs="0" maxOccurs="1" name="PagaTransacaoResult" type="s:string" />
|
35
|
+
</s:sequence>
|
36
|
+
</s:complexType>
|
37
|
+
</s:element>
|
38
|
+
<s:element name="ConsultaTransacao">
|
39
|
+
<s:complexType>
|
40
|
+
<s:sequence>
|
41
|
+
<s:element minOccurs="0" maxOccurs="1" name="chaveVendedor" type="s:string" />
|
42
|
+
<s:element minOccurs="0" maxOccurs="1" name="idTransacao" type="s:string" />
|
43
|
+
</s:sequence>
|
44
|
+
</s:complexType>
|
45
|
+
</s:element>
|
46
|
+
<s:element name="ConsultaTransacaoResponse">
|
47
|
+
<s:complexType>
|
48
|
+
<s:sequence>
|
49
|
+
<s:element minOccurs="0" maxOccurs="1" name="ConsultaTransacaoResult" type="s:string" />
|
50
|
+
</s:sequence>
|
51
|
+
</s:complexType>
|
52
|
+
</s:element>
|
53
|
+
</s:schema>
|
54
|
+
</wsdl:types>
|
55
|
+
<wsdl:message name="IniciaTransacaoSoapIn">
|
56
|
+
<wsdl:part name="parameters" element="tns:IniciaTransacao" />
|
57
|
+
</wsdl:message>
|
58
|
+
<wsdl:message name="IniciaTransacaoSoapOut">
|
59
|
+
<wsdl:part name="parameters" element="tns:IniciaTransacaoResponse" />
|
60
|
+
</wsdl:message>
|
61
|
+
<wsdl:message name="PagaTransacaoSoapIn">
|
62
|
+
<wsdl:part name="parameters" element="tns:PagaTransacao" />
|
63
|
+
</wsdl:message>
|
64
|
+
<wsdl:message name="PagaTransacaoSoapOut">
|
65
|
+
<wsdl:part name="parameters" element="tns:PagaTransacaoResponse" />
|
66
|
+
</wsdl:message>
|
67
|
+
<wsdl:message name="ConsultaTransacaoSoapIn">
|
68
|
+
<wsdl:part name="parameters" element="tns:ConsultaTransacao" />
|
69
|
+
</wsdl:message>
|
70
|
+
<wsdl:message name="ConsultaTransacaoSoapOut">
|
71
|
+
<wsdl:part name="parameters" element="tns:ConsultaTransacaoResponse" />
|
72
|
+
</wsdl:message>
|
73
|
+
<wsdl:portType name="VendedorSoap">
|
74
|
+
<wsdl:operation name="IniciaTransacao">
|
75
|
+
<wsdl:input message="tns:IniciaTransacaoSoapIn" />
|
76
|
+
<wsdl:output message="tns:IniciaTransacaoSoapOut" />
|
77
|
+
</wsdl:operation>
|
78
|
+
<wsdl:operation name="PagaTransacao">
|
79
|
+
<wsdl:input message="tns:PagaTransacaoSoapIn" />
|
80
|
+
<wsdl:output message="tns:PagaTransacaoSoapOut" />
|
81
|
+
</wsdl:operation>
|
82
|
+
<wsdl:operation name="ConsultaTransacao">
|
83
|
+
<wsdl:input message="tns:ConsultaTransacaoSoapIn" />
|
84
|
+
<wsdl:output message="tns:ConsultaTransacaoSoapOut" />
|
85
|
+
</wsdl:operation>
|
86
|
+
</wsdl:portType>
|
87
|
+
<wsdl:binding name="VendedorSoap" type="tns:VendedorSoap">
|
88
|
+
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
|
89
|
+
<wsdl:operation name="IniciaTransacao">
|
90
|
+
<soap:operation soapAction="http://www.locaweb.com.br/IniciaTransacao" style="document" />
|
91
|
+
<wsdl:input>
|
92
|
+
<soap:body use="literal" />
|
93
|
+
</wsdl:input>
|
94
|
+
<wsdl:output>
|
95
|
+
<soap:body use="literal" />
|
96
|
+
</wsdl:output>
|
97
|
+
</wsdl:operation>
|
98
|
+
<wsdl:operation name="PagaTransacao">
|
99
|
+
<soap:operation soapAction="http://www.locaweb.com.br/PagaTransacao" style="document" />
|
100
|
+
<wsdl:input>
|
101
|
+
<soap:body use="literal" />
|
102
|
+
</wsdl:input>
|
103
|
+
<wsdl:output>
|
104
|
+
<soap:body use="literal" />
|
105
|
+
</wsdl:output>
|
106
|
+
</wsdl:operation>
|
107
|
+
<wsdl:operation name="ConsultaTransacao">
|
108
|
+
<soap:operation soapAction="http://www.locaweb.com.br/ConsultaTransacao" style="document" />
|
109
|
+
<wsdl:input>
|
110
|
+
<soap:body use="literal" />
|
111
|
+
</wsdl:input>
|
112
|
+
<wsdl:output>
|
113
|
+
<soap:body use="literal" />
|
114
|
+
</wsdl:output>
|
115
|
+
</wsdl:operation>
|
116
|
+
</wsdl:binding>
|
117
|
+
<wsdl:binding name="VendedorSoap12" type="tns:VendedorSoap">
|
118
|
+
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
|
119
|
+
<wsdl:operation name="IniciaTransacao">
|
120
|
+
<soap12:operation soapAction="http://www.locaweb.com.br/IniciaTransacao" style="document" />
|
121
|
+
<wsdl:input>
|
122
|
+
<soap12:body use="literal" />
|
123
|
+
</wsdl:input>
|
124
|
+
<wsdl:output>
|
125
|
+
<soap12:body use="literal" />
|
126
|
+
</wsdl:output>
|
127
|
+
</wsdl:operation>
|
128
|
+
<wsdl:operation name="PagaTransacao">
|
129
|
+
<soap12:operation soapAction="http://www.locaweb.com.br/PagaTransacao" style="document" />
|
130
|
+
<wsdl:input>
|
131
|
+
<soap12:body use="literal" />
|
132
|
+
</wsdl:input>
|
133
|
+
<wsdl:output>
|
134
|
+
<soap12:body use="literal" />
|
135
|
+
</wsdl:output>
|
136
|
+
</wsdl:operation>
|
137
|
+
<wsdl:operation name="ConsultaTransacao">
|
138
|
+
<soap12:operation soapAction="http://www.locaweb.com.br/ConsultaTransacao" style="document" />
|
139
|
+
<wsdl:input>
|
140
|
+
<soap12:body use="literal" />
|
141
|
+
</wsdl:input>
|
142
|
+
<wsdl:output>
|
143
|
+
<soap12:body use="literal" />
|
144
|
+
</wsdl:output>
|
145
|
+
</wsdl:operation>
|
146
|
+
</wsdl:binding>
|
147
|
+
<wsdl:service name="Vendedor">
|
148
|
+
<wsdl:port name="VendedorSoap" binding="tns:VendedorSoap">
|
149
|
+
<soap:address location="https://www.pagamentocerto.com.br/vendedor/vendedor.asmx" />
|
150
|
+
</wsdl:port>
|
151
|
+
<wsdl:port name="VendedorSoap12" binding="tns:VendedorSoap12">
|
152
|
+
<soap12:address location="https://www.pagamentocerto.com.br/vendedor/vendedor.asmx" />
|
153
|
+
</wsdl:port>
|
154
|
+
</wsdl:service>
|
155
|
+
</wsdl:definitions>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
class LwPagtoCerto
|
2
|
+
VERSION = '0.0.5'
|
3
|
+
|
4
|
+
MODULO_CARTAO = "CartaoCredito"
|
5
|
+
MODULO_BOLETO = "Boleto"
|
6
|
+
TIPO_VISA = "Visa"
|
7
|
+
TIPO_AMEX = "AmericanExpress"
|
8
|
+
TIPO_PESSOA_FISICA = "Fisica"
|
9
|
+
TIPO_PESSOA_JURIDICA = "Juridica"
|
10
|
+
|
11
|
+
MODULO = [MODULO_CARTAO, MODULO_BOLETO]
|
12
|
+
TIPO = [TIPO_VISA, TIPO_AMEX]
|
13
|
+
TIPO_PESSOA = [TIPO_PESSOA_FISICA, TIPO_PESSOA_JURIDICA]
|
14
|
+
|
15
|
+
INICIA_COD_RETORNO = {
|
16
|
+
:"0" => "Transação iniciada.",
|
17
|
+
:"1" => "Dados de entrada incorretos:",
|
18
|
+
:"2" => "Vendedor não autenticado.",
|
19
|
+
:"3" => "Conta de vendedor desativada.",
|
20
|
+
:"4" => "Conta de comprador desativada.",
|
21
|
+
:"5" => "Dados de comprador incorretos:",
|
22
|
+
:"6" => "XML inválido:",
|
23
|
+
:"7" => "XML mal formatado.",
|
24
|
+
:"8" => "Dados de pagamento incorretos:",
|
25
|
+
:"9" => "Dados de pedido incorretos:",
|
26
|
+
:"10" => "Erro ao iniciar a transação.",
|
27
|
+
:"21" => "CPF não pertence à conta de comprador informada.",
|
28
|
+
}
|
29
|
+
|
30
|
+
FINALIZA_COD_RETORNO = {
|
31
|
+
:"11" => "Transação não encontrada.",
|
32
|
+
:"12" => "Transação ainda não processada.",
|
33
|
+
:"13" => "Transação em processamento.",
|
34
|
+
:"14" => "Transação expirada.",
|
35
|
+
:"15" => "Transação processada.",
|
36
|
+
:"16" => "Erro ao consultar a transação.",
|
37
|
+
:"17" => "Transação com tempo de pagamento expirado.",
|
38
|
+
:"18" => "Usuário fechou a janela de pagamento.",
|
39
|
+
:"19" => "Pagamento cancelado pelo usuário.",
|
40
|
+
:"20" => "Número máximo de tentativas de pagamento atingido.",
|
41
|
+
}
|
42
|
+
end
|
metadata
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lw-pagto-certo
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.5
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Fabio Akita
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-03-27 00:00:00 -03:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: activesupport
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 2.0.2
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: builder
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.1.0
|
34
|
+
version:
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: soap4r
|
37
|
+
type: :runtime
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">"
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 1.5.0
|
44
|
+
version:
|
45
|
+
description: "Integra\xC3\xA7\xC3\xA3o para o servi\xC3\xA7o Pagamento Certo, da Locaweb."
|
46
|
+
email: fabio.akita@locaweb.com.br
|
47
|
+
executables: []
|
48
|
+
|
49
|
+
extensions: []
|
50
|
+
|
51
|
+
extra_rdoc_files: []
|
52
|
+
|
53
|
+
files:
|
54
|
+
- History.txt
|
55
|
+
- lib/lw-pagto-certo/default.rb
|
56
|
+
- lib/lw-pagto-certo/defaultDriver.rb
|
57
|
+
- lib/lw-pagto-certo/defaultMappingRegistry.rb
|
58
|
+
- lib/lw-pagto-certo/pagto-20090326.wsdl
|
59
|
+
- lib/lw-pagto-certo/version.rb
|
60
|
+
- lib/lw-pagto-certo.rb
|
61
|
+
- Manifest.txt
|
62
|
+
- README.rdoc
|
63
|
+
has_rdoc: true
|
64
|
+
homepage: http://pagamentocerto.com.br
|
65
|
+
licenses: []
|
66
|
+
|
67
|
+
post_install_message:
|
68
|
+
rdoc_options: []
|
69
|
+
|
70
|
+
require_paths:
|
71
|
+
- lib
|
72
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: "0"
|
77
|
+
version:
|
78
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: "0"
|
83
|
+
version:
|
84
|
+
requirements: []
|
85
|
+
|
86
|
+
rubyforge_project:
|
87
|
+
rubygems_version: 1.3.5
|
88
|
+
signing_key:
|
89
|
+
specification_version: 2
|
90
|
+
summary: "Integra\xC3\xA7\xC3\xA3o para o servi\xC3\xA7o Pagamento Certo, da Locaweb."
|
91
|
+
test_files: []
|
92
|
+
|