spree_pag_seguro 1.0.0.beta22 → 1.0.0.beta23
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/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
|
-
|