spree_aprova_facil 0.0.1 → 0.9.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.
- data/.DS_Store +0 -0
- data/app/models/gateway/cobre_bem_aprova_facil.rb +18 -0
- data/lib/active_merchant/billing/gateways/aprova_facil.rb +112 -104
- data/lib/spree_aprova_facil.rb +3 -5
- data/lib/spree_aprova_facil/version.rb +1 -1
- data/spree_aprova_facil.gemspec +2 -1
- metadata +39 -47
- data/app/models/gateway/experia_aprova_facil.rb +0 -5
data/.DS_Store
CHANGED
Binary file
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class Gateway::CobreBemAprovaFacil < Gateway
|
2
|
+
preference :login, :string
|
3
|
+
|
4
|
+
def provider_class
|
5
|
+
ActiveMerchant::Billing::AprovaFacilGateway
|
6
|
+
end
|
7
|
+
|
8
|
+
def options
|
9
|
+
# add :test key in the options hash, as that is what the ActiveMerchant::Billing::AuthorizeNetGateway expects
|
10
|
+
if self.prefers? :test_mode
|
11
|
+
self.class.default_preferences[:test] = true
|
12
|
+
else
|
13
|
+
self.class.default_preferences.delete(:test)
|
14
|
+
end
|
15
|
+
|
16
|
+
super
|
17
|
+
end
|
18
|
+
end
|
@@ -1,143 +1,151 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
begin
|
3
|
+
require "aprova_facil"
|
4
|
+
rescue LoadError
|
5
|
+
raise "Could not load the aprova_facil gem. Use `gem install aprova_facil` to install it."
|
6
|
+
end
|
1
7
|
module ActiveMerchant #:nodoc:
|
2
8
|
module Billing #:nodoc:
|
3
9
|
class AprovaFacilGateway < Gateway
|
4
|
-
|
10
|
+
|
11
|
+
# The countries the gateway supports merchants from as 2 digit ISO country codes
|
5
12
|
self.supported_countries = ['BR']
|
6
|
-
|
7
|
-
|
13
|
+
|
14
|
+
# The card types supported by the payment gateway
|
15
|
+
self.supported_cardtypes = [:visa, :master, :american_express, :discover]
|
16
|
+
|
17
|
+
# The homepage URL of the gateway
|
18
|
+
self.homepage_url = 'http://www.cobrebem.com/'
|
19
|
+
|
20
|
+
# The name of the gateway
|
21
|
+
self.display_name = 'Aprova Fácil'
|
22
|
+
|
8
23
|
def initialize(options = {})
|
24
|
+
requires!(options, :login)
|
9
25
|
@options = options
|
10
|
-
|
11
|
-
|
12
|
-
def authorize(money, creditcard, options = {})
|
13
|
-
card = add_creditcard(creditcard,options)
|
14
|
-
|
15
|
-
approval_response = gateway.aprovar(card)
|
26
|
+
super
|
16
27
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
{ :transaction_id => approval_response[:transacao] },
|
22
|
-
:authorization => approval_response[:codigo_autorizacao]
|
23
|
-
)
|
24
|
-
else
|
25
|
-
Response.new(
|
26
|
-
approval_response[:aprovada],
|
27
|
-
approval_response[:resultado],
|
28
|
-
{ :transaction_id => approval_response[:transacao] },
|
29
|
-
:authorization => approval_response[:codigo_autorizacao]
|
30
|
-
)
|
28
|
+
AprovaFacil::Config.usuario = @options[:login]
|
29
|
+
|
30
|
+
if @options[:test]
|
31
|
+
AprovaFacil::Config.teste = true
|
31
32
|
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def authorize(money, creditcard, options = {})
|
36
|
+
post = {}
|
37
|
+
add_invoice(post, options)
|
38
|
+
add_creditcard(post, creditcard)
|
39
|
+
add_customer_data(post, options)
|
40
|
+
|
41
|
+
commit('authonly', money, post)
|
32
42
|
end
|
33
|
-
|
43
|
+
|
44
|
+
def purchase(money, creditcard, options = {})
|
45
|
+
post = {}
|
46
|
+
add_invoice(post, options)
|
47
|
+
add_creditcard(post, creditcard)
|
48
|
+
add_customer_data(post, options)
|
49
|
+
|
50
|
+
commit('sale', money, post)
|
51
|
+
end
|
52
|
+
|
34
53
|
def capture(money, authorization, options = {})
|
35
|
-
|
36
|
-
|
37
|
-
if success?(capture_response)
|
38
|
-
#response_to_spree(approval_response,capture_response)
|
39
|
-
else
|
40
|
-
Response.new false, approval_response[:resultado]
|
41
|
-
end
|
42
|
-
|
54
|
+
post = {:transaction => authorization}
|
55
|
+
commit('capture', money, post)
|
43
56
|
end
|
44
57
|
|
45
|
-
def
|
46
|
-
|
58
|
+
def void(authorization, options = {})
|
59
|
+
post = {:transaction => authorization}
|
60
|
+
commit('void', nil, post)
|
47
61
|
end
|
62
|
+
|
63
|
+
private
|
64
|
+
|
65
|
+
def add_customer_data(post, options)
|
66
|
+
if options.has_key? :email
|
67
|
+
post[:email] = options[:email]
|
68
|
+
post[:email_customer] = false
|
69
|
+
end
|
48
70
|
|
49
|
-
|
50
|
-
|
51
|
-
credit_response = gateway.cancelar(creditcard.transacao_anterior)
|
52
|
-
if credited?(credit_response)
|
53
|
-
response_to_spree_to_credit(credit_response)
|
54
|
-
else
|
55
|
-
response_to_spree_to_credit(credit_response)
|
71
|
+
if options.has_key? :ip
|
72
|
+
post[:ip_comprador] = options[:ip]
|
56
73
|
end
|
57
74
|
end
|
58
75
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
76
|
+
def add_invoice(post, options)
|
77
|
+
post[:documento] = options[:order_id]
|
78
|
+
end
|
79
|
+
|
80
|
+
def add_creditcard(post, creditcard)
|
81
|
+
post[:numero_cartao] = creditcard.number
|
82
|
+
post[:codigo_seguranca] = creditcard.verification_value if creditcard.verification_value?
|
83
|
+
post[:ano_validade] = creditcard.year.to_s[-2,2]
|
84
|
+
post[:mes_validade] = sprintf("%.2i",creditcard.month).to_s
|
85
|
+
post[:nome_portador] = "#{creditcard.first_name} #{creditcard.last_name}"
|
86
|
+
post[:bandeira] = code_for_brand_of creditcard
|
87
|
+
end
|
65
88
|
|
66
89
|
|
67
|
-
|
90
|
+
|
91
|
+
def commit(action, money, parameters)
|
68
92
|
|
69
|
-
|
70
|
-
response[:aprovada] || response[:capturado]
|
71
|
-
end
|
93
|
+
parameters[:valor] = format_amount(money.to_f)
|
72
94
|
|
73
|
-
|
74
|
-
@gateway ||= AprovaFacil.new
|
75
|
-
end
|
95
|
+
cartao = AprovaFacil::CartaoCredito.new(parameters)
|
76
96
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
when '
|
82
|
-
|
97
|
+
case action
|
98
|
+
when 'authonly'
|
99
|
+
resultado = gateway.aprovar(cartao)
|
100
|
+
parameters[:transaction] = resultado[:transacao]
|
101
|
+
when 'sale'
|
102
|
+
resultado = gateway.aprovar(cartao)
|
103
|
+
if resultado[:aprovada]
|
104
|
+
resultado = resultado.merge gateway.capturar(resultado[:transacao])
|
105
|
+
parameters[:transaction] = resultado[:transacao]
|
106
|
+
end
|
107
|
+
|
108
|
+
when 'capture'
|
109
|
+
resultado = gateway.capturar(parameters[:transaction])
|
110
|
+
when 'void'
|
111
|
+
resultado = gateway.cancelar parameters[:transaction]
|
83
112
|
end
|
84
|
-
end
|
85
113
|
|
86
|
-
def last_digits_from(string)
|
87
|
-
string[-2,2]
|
88
|
-
end
|
89
114
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
month
|
95
|
-
end
|
115
|
+
Response.new(success?(resultado), resultado[:resultado], {:transaction_id => parameters[:transaction]} ,
|
116
|
+
:test => test?,
|
117
|
+
:authorization => resultado[:codigo_autorizacao]
|
118
|
+
)
|
96
119
|
end
|
97
120
|
|
98
|
-
def
|
99
|
-
|
121
|
+
def message_from(response)
|
122
|
+
end
|
123
|
+
|
124
|
+
def post_data(action, parameters = {})
|
100
125
|
end
|
101
126
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
:codigo_seguranca => creditcard.verification_value,
|
107
|
-
:mes_validade => creditcard_month(creditcard.month),
|
108
|
-
:ano_validade => last_digits_from(creditcard.year),
|
109
|
-
:bandeira => code_for_brand_of(creditcard),
|
110
|
-
:ip_comprador => options[:ip],
|
111
|
-
:nome_portador => full_name_from(creditcard)
|
112
|
-
)
|
127
|
+
private
|
128
|
+
|
129
|
+
def gateway
|
130
|
+
@gateway ||= AprovaFacil.new
|
113
131
|
end
|
114
132
|
|
115
|
-
def
|
116
|
-
|
117
|
-
capture_response[:capturado],
|
118
|
-
capture_response[:resultado],
|
119
|
-
{ :transaction_id => approval_response[:transacao] },
|
120
|
-
:authorization => approval_response[:codigo_autorizacao]
|
121
|
-
)
|
133
|
+
def success?(response)
|
134
|
+
response[:aprovada] || response[:capturado] || response[:cancelado]
|
122
135
|
end
|
123
136
|
|
124
|
-
def
|
125
|
-
|
137
|
+
def format_amount(amount)
|
138
|
+
amount / 100
|
139
|
+
end
|
126
140
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
response_to_spree(approval_response,capture_response)
|
134
|
-
end
|
135
|
-
else
|
136
|
-
Response.new false, approval_response[:resultado]
|
141
|
+
def code_for_brand_of(creditcard)
|
142
|
+
case CreditCard.type? creditcard.number
|
143
|
+
when 'visa' then AprovaFacil::CartaoCredito::Bandeira::VISA
|
144
|
+
when 'master' then AprovaFacil::CartaoCredito::Bandeira::MASTERCARD
|
145
|
+
when 'american_express' then AprovaFacil::CartaoCredito::Bandeira::AMEX
|
146
|
+
when 'diners_club' then AprovaFacil::CartaoCredito::Bandeira::DINERS
|
137
147
|
end
|
138
148
|
end
|
139
|
-
|
140
149
|
end
|
141
150
|
end
|
142
151
|
end
|
143
|
-
|
data/lib/spree_aprova_facil.rb
CHANGED
@@ -1,23 +1,21 @@
|
|
1
1
|
require "spree_aprova_facil/version"
|
2
|
-
require 'spree_core'
|
3
|
-
require 'spree_aprova_facil_hooks'
|
4
2
|
require 'active_merchant/billing/gateways/aprova_facil'
|
5
3
|
require 'aprova_facil'
|
6
4
|
|
7
5
|
module SpreeAprovaFacil
|
8
6
|
class Engine < Rails::Engine
|
9
7
|
|
10
|
-
|
11
|
-
ActiveMerchant::Billing::AprovaFacilGateway
|
8
|
+
config.autoload_paths += %W(#{config.root}/lib)
|
12
9
|
|
13
10
|
|
14
11
|
def self.activate
|
15
12
|
Dir.glob(File.join(File.dirname(__FILE__), "../app/**/*_decorator*.rb")) do |c|
|
16
13
|
Rails.env.production? ? require(c) : load(c)
|
17
14
|
end
|
18
|
-
Gateway::
|
15
|
+
Gateway::CobreBemAprovaFacil.register
|
19
16
|
end
|
20
17
|
|
21
18
|
config.to_prepare &method(:activate).to_proc
|
22
19
|
end
|
23
20
|
end
|
21
|
+
|
data/spree_aprova_facil.gemspec
CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.name = "spree_aprova_facil"
|
7
7
|
s.version = SpreeAprovaFacil::VERSION
|
8
8
|
s.authors = ["Raphael Costa"]
|
9
|
-
s.email = ["raphael@
|
9
|
+
s.email = ["raphael@raphaelcosta.net"]
|
10
10
|
s.homepage = ""
|
11
11
|
s.summary = %q{Aprova Fácil Payment Gateway to Spree}
|
12
12
|
s.description = %q{Aprova Fácil Payment Gateway to Spree}
|
@@ -20,4 +20,5 @@ Gem::Specification.new do |s|
|
|
20
20
|
|
21
21
|
s.add_runtime_dependency "spree_core", '>= 0.60.1'
|
22
22
|
s.add_runtime_dependency "aprova_facil", '>= 1.2.0'
|
23
|
+
|
23
24
|
end
|
metadata
CHANGED
@@ -1,49 +1,45 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_aprova_facil
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.9.0
|
4
5
|
prerelease:
|
5
|
-
version: 0.0.1
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Raphael Costa
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2011-12-27 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
16
15
|
name: spree_core
|
17
|
-
|
18
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70142140773840 !ruby/object:Gem::Requirement
|
19
17
|
none: false
|
20
|
-
requirements:
|
21
|
-
- -
|
22
|
-
- !ruby/object:Gem::Version
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
23
21
|
version: 0.60.1
|
24
22
|
type: :runtime
|
25
|
-
version_requirements: *id001
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: aprova_facil
|
28
23
|
prerelease: false
|
29
|
-
|
24
|
+
version_requirements: *70142140773840
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: aprova_facil
|
27
|
+
requirement: &70142140773140 !ruby/object:Gem::Requirement
|
30
28
|
none: false
|
31
|
-
requirements:
|
32
|
-
- -
|
33
|
-
- !ruby/object:Gem::Version
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
34
32
|
version: 1.2.0
|
35
33
|
type: :runtime
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70142140773140
|
36
|
+
description: Aprova Fácil Payment Gateway to Spree
|
37
|
+
email:
|
38
|
+
- raphael@raphaelcosta.net
|
40
39
|
executables: []
|
41
|
-
|
42
40
|
extensions: []
|
43
|
-
|
44
41
|
extra_rdoc_files: []
|
45
|
-
|
46
|
-
files:
|
42
|
+
files:
|
47
43
|
- .DS_Store
|
48
44
|
- .gitignore
|
49
45
|
- Gemfile
|
@@ -52,7 +48,7 @@ files:
|
|
52
48
|
- Rakefile
|
53
49
|
- app/.DS_Store
|
54
50
|
- app/models/.DS_Store
|
55
|
-
- app/models/gateway/
|
51
|
+
- app/models/gateway/cobre_bem_aprova_facil.rb
|
56
52
|
- config/routes.rb
|
57
53
|
- lib/.DS_Store
|
58
54
|
- lib/active_merchant/billing/gateways/aprova_facil.rb
|
@@ -62,32 +58,28 @@ files:
|
|
62
58
|
- lib/tasks/install.rake
|
63
59
|
- lib/tasks/spree_aprova_facil.rake
|
64
60
|
- spree_aprova_facil.gemspec
|
65
|
-
homepage:
|
61
|
+
homepage: ''
|
66
62
|
licenses: []
|
67
|
-
|
68
63
|
post_install_message:
|
69
64
|
rdoc_options: []
|
70
|
-
|
71
|
-
require_paths:
|
65
|
+
require_paths:
|
72
66
|
- lib
|
73
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
67
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
74
68
|
none: false
|
75
|
-
requirements:
|
76
|
-
- -
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version:
|
79
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - ! '>='
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0'
|
73
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
80
74
|
none: false
|
81
|
-
requirements:
|
82
|
-
- -
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
version:
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
85
79
|
requirements: []
|
86
|
-
|
87
80
|
rubyforge_project: spree_aprova_facil
|
88
|
-
rubygems_version: 1.8.
|
81
|
+
rubygems_version: 1.8.10
|
89
82
|
signing_key:
|
90
83
|
specification_version: 3
|
91
|
-
summary:
|
84
|
+
summary: Aprova Fácil Payment Gateway to Spree
|
92
85
|
test_files: []
|
93
|
-
|