spree_pag_seguro 1.0.0.beta22 → 1.0.0.beta23
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/spree/{base_controller_decorator.rb.rb → base_controller_decorator.rb} +1 -1
- data/app/controllers/spree/pag_seguro_controller.rb +56 -12
- data/app/models/spree/payment_notification.rb +15 -8
- data/config/locales/pt-BR.yml +1 -1
- data/db/migrate/20120106043500_create_spree_payment_notifications.rb +2 -5
- data/lib/generators/spree_pag_seguro/install/install_generator.rb +1 -1
- metadata +87 -87
@@ -6,7 +6,7 @@ Spree::BaseController.class_eval do
|
|
6
6
|
if (order.payment_state == "paid") or (order.payment_state == "credit_owed")
|
7
7
|
session[:order_id] = nil
|
8
8
|
order.line_items.destroy_all
|
9
|
-
flash[:notice] = t(:
|
9
|
+
flash[:notice] = t(:pag_seguro_payment_received)
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -1,26 +1,70 @@
|
|
1
1
|
module Spree
|
2
|
-
class PagSeguroController <
|
2
|
+
class PagSeguroController < BaseController
|
3
3
|
protect_from_forgery :except => [:notify]
|
4
4
|
|
5
5
|
def notify
|
6
|
-
|
7
|
-
token = Spree::PagSeguro::Config.token
|
8
|
-
notification_code = params[:notificationCode]
|
9
|
-
notification = ::PagSeguro::Notification.new(email, token, notification_code)
|
10
|
-
|
11
|
-
logger.info "PagSeguro Notification code: #{notification_code}\n\n\n"
|
12
|
-
logger.info "PagSeguro Notification inspect:\n#{notification.inspect}"
|
6
|
+
notification = Spree::PaymentNotification.create_from_params(params)
|
13
7
|
|
14
8
|
if notification.approved?
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
9
|
+
Order.transaction do
|
10
|
+
order = Spree::Order.find(notification.id)
|
11
|
+
|
12
|
+
#create payment for this order
|
13
|
+
payment = Spree::Payment.new
|
14
|
+
|
15
|
+
# 1. Assume that if payment notification comes, it's exactly for the amount
|
16
|
+
# sent to pagseguro (safe assumption -- cart can't be edited while on pagseguro)
|
17
|
+
# 2. Can't use Order#total, as it's intercepted by spree-multi-currency
|
18
|
+
# which might lead to lots of false "credit owed" payment states
|
19
|
+
# (when they should be "complete")
|
20
|
+
payment.amount = order.read_attribute(:total)
|
21
|
+
|
22
|
+
payment.payment_method = Spree::Order.pag_seguro_payment_method
|
23
|
+
order.payments << payment
|
24
|
+
payment.started_processing
|
25
|
+
|
26
|
+
order.payment.complete
|
27
|
+
|
28
|
+
until @order.state == "complete"
|
29
|
+
if @order.next!
|
30
|
+
@order.update!
|
31
|
+
state_callback(:after)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
19
35
|
end
|
36
|
+
|
20
37
|
render nothing: true, head: :ok
|
21
38
|
end
|
22
39
|
|
23
40
|
def callback
|
24
41
|
end
|
42
|
+
|
43
|
+
protected
|
44
|
+
# those methods are copy-pasted from CheckoutController
|
45
|
+
# we cannot inherit from that class unless we want to skip_before_filter
|
46
|
+
# half of calls in SpreeBase module
|
47
|
+
def state_callback(before_or_after = :before)
|
48
|
+
method_name = :"#{before_or_after}_#{@order.state}"
|
49
|
+
send(method_name) if respond_to?(method_name, true)
|
50
|
+
end
|
51
|
+
|
52
|
+
def before_address
|
53
|
+
@order.bill_address ||= Address.new
|
54
|
+
@order.ship_address ||= Address.new
|
55
|
+
end
|
56
|
+
|
57
|
+
def before_delivery
|
58
|
+
@order.shipping_method ||= (@order.rate_hash.first && @order.rate_hash.first[:shipping_method])
|
59
|
+
end
|
60
|
+
|
61
|
+
def before_payment
|
62
|
+
current_order.payments.destroy_all if request.put?
|
63
|
+
end
|
64
|
+
|
65
|
+
#This isn't working here in payment_nofitications_controller since IPN will run on a different session
|
66
|
+
def after_complete
|
67
|
+
session[:order_id] = nil
|
68
|
+
end
|
25
69
|
end
|
26
70
|
end
|
@@ -2,15 +2,22 @@ module Spree
|
|
2
2
|
class PaymentNotification < ActiveRecord::Base
|
3
3
|
belongs_to :order
|
4
4
|
serialize :params
|
5
|
-
after_create :mark_order_as_paid
|
6
5
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
6
|
+
def self.create_from_params(params)
|
7
|
+
email = Spree::PagSeguro::Config.email
|
8
|
+
token = Spree::PagSeguro::Config.token
|
9
|
+
notification_code = params[:notificationCode]
|
10
|
+
notification = ::PagSeguro::Notification.new(email, token, notification_code)
|
11
|
+
|
12
|
+
self.create!(
|
13
|
+
params: params,
|
14
|
+
order_id: notification.id,
|
15
|
+
status: notification.status,
|
16
|
+
transaction_id: notification.transaction_id,
|
17
|
+
notification_code: notification_code
|
18
|
+
)
|
19
|
+
|
20
|
+
notification
|
14
21
|
end
|
15
22
|
end
|
16
23
|
end
|
data/config/locales/pt-BR.yml
CHANGED
@@ -4,7 +4,7 @@ pt-BR:
|
|
4
4
|
please_enter_valid_zip: "Por favor, coloque seu código postal."
|
5
5
|
zip_code_if_you_have_one: "Código postal"
|
6
6
|
payment_failure: "Falha no Pagamento"
|
7
|
-
payment_pending: "
|
7
|
+
payment_pending: "Pagamento Pendente"
|
8
8
|
check_out_with_pag_seguro: "Compre com o PagSeguro"
|
9
9
|
pag_seguro_payment_received: "Obrigado. Nós recebemos seu pagamento para a órdem de compra. Sua compra será entregue em breve."
|
10
10
|
pag_seguro_order_processed_successfully: "Obrigado. Sua compra foi processada com sucesso. Você será notificado assim que recebermos o comprovante de pagamento do PagSeguro"
|
@@ -1,15 +1,12 @@
|
|
1
1
|
class CreateSpreePaymentNotifications < ActiveRecord::Migration
|
2
|
-
def
|
2
|
+
def change
|
3
3
|
create_table :spree_payment_notifications do |t|
|
4
4
|
t.text :params
|
5
5
|
t.string :status
|
6
6
|
t.string :transaction_id
|
7
7
|
t.integer :order_id
|
8
|
+
t.string :notification_code
|
8
9
|
t.timestamps
|
9
10
|
end
|
10
11
|
end
|
11
|
-
|
12
|
-
def self.down
|
13
|
-
drop_table :spree_payment_notifications
|
14
|
-
end
|
15
12
|
end
|
metadata
CHANGED
@@ -1,96 +1,100 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_pag_seguro
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0.beta23
|
5
|
+
prerelease: 6
|
5
6
|
platform: ruby
|
6
|
-
authors:
|
7
|
+
authors:
|
7
8
|
- Gregg Pollack, Sean Schofield, Tomasz Stachewicz, Buddhi DeSilva
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-02-16 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
16
15
|
name: spree_core
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
- !ruby/object:Gem::Version
|
16
|
+
requirement: &2153101560 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
23
21
|
version: 1.0.0.rc1
|
24
|
-
version:
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: pag_seguro
|
27
22
|
type: :runtime
|
28
|
-
|
29
|
-
version_requirements:
|
30
|
-
|
31
|
-
|
32
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2153101560
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: pag_seguro
|
27
|
+
requirement: &2153100880 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
33
32
|
version: 0.1.1
|
34
|
-
|
35
|
-
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2153100880
|
36
|
+
- !ruby/object:Gem::Dependency
|
36
37
|
name: capybara
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
- !ruby/object:Gem::Version
|
38
|
+
requirement: &2153100140 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - =
|
42
|
+
- !ruby/object:Gem::Version
|
43
43
|
version: 1.0.1
|
44
|
-
|
45
|
-
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *2153100140
|
47
|
+
- !ruby/object:Gem::Dependency
|
46
48
|
name: factory_girl
|
49
|
+
requirement: &2153099680 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
47
55
|
type: :development
|
48
|
-
|
49
|
-
version_requirements:
|
50
|
-
|
51
|
-
- - ">="
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: "0"
|
54
|
-
version:
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *2153099680
|
58
|
+
- !ruby/object:Gem::Dependency
|
56
59
|
name: ffaker
|
60
|
+
requirement: &2153099220 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
57
66
|
type: :development
|
58
|
-
|
59
|
-
version_requirements:
|
60
|
-
|
61
|
-
- - ">="
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version: "0"
|
64
|
-
version:
|
65
|
-
- !ruby/object:Gem::Dependency
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *2153099220
|
69
|
+
- !ruby/object:Gem::Dependency
|
66
70
|
name: rspec-rails
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
requirements:
|
71
|
+
requirement: &2153098720 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
71
74
|
- - ~>
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
version:
|
74
|
-
|
75
|
-
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '2.7'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *2153098720
|
80
|
+
- !ruby/object:Gem::Dependency
|
76
81
|
name: sqlite3
|
82
|
+
requirement: &2153098260 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
77
88
|
type: :development
|
78
|
-
|
79
|
-
version_requirements:
|
80
|
-
|
81
|
-
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: "0"
|
84
|
-
version:
|
85
|
-
description: Spree extension for integration with PagSeguro payment. Based on spree_pp_website_standart gem
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *2153098260
|
91
|
+
description: Spree extension for integration with PagSeguro payment. Based on spree_pp_website_standart
|
92
|
+
gem
|
86
93
|
email: tomekrs@o2.pl
|
87
94
|
executables: []
|
88
|
-
|
89
95
|
extensions: []
|
90
|
-
|
91
96
|
extra_rdoc_files: []
|
92
|
-
|
93
|
-
files:
|
97
|
+
files:
|
94
98
|
- README.md
|
95
99
|
- LICENSE
|
96
100
|
- lib/generators/spree_pag_seguro/install/install_generator.rb
|
@@ -102,7 +106,7 @@ files:
|
|
102
106
|
- app/assets/javascripts/store/spree_paypal_website_standard.js
|
103
107
|
- app/assets/stylesheets/admin/spree_paypal_website_standard.css
|
104
108
|
- app/assets/stylesheets/store/spree_paypal_website_standard.css
|
105
|
-
- app/controllers/spree/base_controller_decorator.rb
|
109
|
+
- app/controllers/spree/base_controller_decorator.rb
|
106
110
|
- app/controllers/spree/checkout_controller_decorator.rb
|
107
111
|
- app/controllers/spree/pag_seguro_controller.rb
|
108
112
|
- app/controllers/spree/payment_notifications_controller.rb
|
@@ -118,33 +122,29 @@ files:
|
|
118
122
|
- config/routes.rb
|
119
123
|
- db/migrate/20120106043500_create_spree_payment_notifications.rb
|
120
124
|
- spec/spec_helper.rb
|
121
|
-
has_rdoc: true
|
122
125
|
homepage: http://github.com/heavenstudio/spree-pag_seguro
|
123
126
|
licenses: []
|
124
|
-
|
125
127
|
post_install_message:
|
126
128
|
rdoc_options: []
|
127
|
-
|
128
|
-
require_paths:
|
129
|
+
require_paths:
|
129
130
|
- lib
|
130
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
131
|
-
|
132
|
-
|
133
|
-
|
131
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
132
|
+
none: false
|
133
|
+
requirements:
|
134
|
+
- - ! '>='
|
135
|
+
- !ruby/object:Gem::Version
|
134
136
|
version: 1.9.2
|
135
|
-
|
136
|
-
|
137
|
-
requirements:
|
138
|
-
- -
|
139
|
-
- !ruby/object:Gem::Version
|
137
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
|
+
none: false
|
139
|
+
requirements:
|
140
|
+
- - ! '>'
|
141
|
+
- !ruby/object:Gem::Version
|
140
142
|
version: 1.3.1
|
141
|
-
|
142
|
-
requirements:
|
143
|
+
requirements:
|
143
144
|
- none
|
144
145
|
rubyforge_project:
|
145
|
-
rubygems_version: 1.
|
146
|
+
rubygems_version: 1.8.10
|
146
147
|
signing_key:
|
147
148
|
specification_version: 3
|
148
149
|
summary: Spree extension for integration with PagSeguro payment
|
149
150
|
test_files: []
|
150
|
-
|