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.
@@ -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(:pp_ws_payment_received)
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 < Spree::BaseController
2
+ class PagSeguroController < BaseController
3
3
  protect_from_forgery :except => [:notify]
4
4
 
5
5
  def notify
6
- email = Spree::PagSeguro::Config.email
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
- order = Spree::Order.find(notification.id)
16
- order.next while order.state != 'confirm'
17
- order.payment.complete
18
- order.next while order.state != 'complete'
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
- private
8
-
9
- def mark_order_as_paid
10
- if(status == "Completed")
11
- logger.info "Order #{order.number} should be marked as paid now -- IPN status 'Completed'"
12
- #order.update_attributes({:paid_on => Date.today, :status_id => Status.PAID.id})
13
- end
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
@@ -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: "Payment Pendente"
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 self.up
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
@@ -1,4 +1,4 @@
1
- module SpreePaypalWebsiteStandard
1
+ module SpreePagSeguro
2
2
  module Generators
3
3
  class InstallGenerator < Rails::Generators::Base
4
4
  def add_migrations
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.beta22
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
- date: 2012-02-16 00:00:00 -02:00
13
- default_executable:
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
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
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
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
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
- version:
35
- - !ruby/object:Gem::Dependency
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *2153100880
36
+ - !ruby/object:Gem::Dependency
36
37
  name: capybara
37
- type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
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
- version:
45
- - !ruby/object:Gem::Dependency
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
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
50
- requirements:
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
- version_requirement:
59
- version_requirements: !ruby/object:Gem::Requirement
60
- requirements:
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
- type: :development
68
- version_requirement:
69
- version_requirements: !ruby/object:Gem::Requirement
70
- requirements:
71
+ requirement: &2153098720 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
71
74
  - - ~>
72
- - !ruby/object:Gem::Version
73
- version: "2.7"
74
- version:
75
- - !ruby/object:Gem::Dependency
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
- version_requirement:
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
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.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
- requirements:
132
- - - ">="
133
- - !ruby/object:Gem::Version
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
- version:
136
- required_rubygems_version: !ruby/object:Gem::Requirement
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
- version:
142
- requirements:
143
+ requirements:
143
144
  - none
144
145
  rubyforge_project:
145
- rubygems_version: 1.3.5
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
-