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.
@@ -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
-