spree_account_recurring 1.0.7 → 1.1.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/LICENSE +1 -1
- data/README.md +10 -3
- data/app/assets/javascripts/spree/backend/spree_account_recurring.js +1 -0
- data/app/assets/javascripts/spree/frontend/spree_account_recurring.js +1 -0
- data/app/assets/javascripts/{store → spree/frontend}/stripe.js +4 -0
- data/app/assets/stylesheets/spree/backend/spree_account_recurring.css +3 -0
- data/app/assets/stylesheets/spree/frontend/spree_account_recurring.css +3 -0
- data/app/models/concerns/before_each.rb +21 -0
- data/app/models/concerns/spree/recurring/stripe_recurring/api_handler.rb +1 -0
- data/app/models/spree/recurring.rb +0 -6
- data/app/models/spree/recurring/stripe_recurring.rb +3 -1
- data/app/models/spree/user_decorator.rb +2 -6
- data/app/views/spree/admin/recurrings/_form.html.erb +1 -1
- data/app/views/spree/admin/recurrings/edit.html.erb +1 -3
- data/app/views/spree/subscriptions/new.html.erb +1 -1
- data/config/routes.rb +6 -2
- data/db/migrate/20140404114919_change_datatype_for_amount_in_spree_plans.rb +1 -1
- data/lib/generators/spree_account_recurring/install/install_generator.rb +4 -4
- data/lib/spree_account_recurring/engine.rb +0 -11
- metadata +92 -77
- data/app/assets/javascripts/admin/spree_account_recurring.js +0 -1
- data/app/assets/javascripts/store/spree_account_recurring.js +0 -1
- data/app/assets/stylesheets/admin/spree_account_recurring.css +0 -3
- data/app/assets/stylesheets/store/spree_account_recurring.css +0 -3
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Spree Account Recurring [](https://codeclimate.com/github/vinsol/spree-account-recurring) [](https://codeclimate.com/github/vinsol/spree-account-recurring) [](https://travis-ci.org/vinsol/spree-account-recurring)
|
2
2
|
=========================
|
3
3
|
|
4
4
|
Spree extension to manage recurring payments/subscriptions using [Stripe Payment Gateway](https://stripe.com/).
|
@@ -10,11 +10,18 @@ Installation
|
|
10
10
|
|
11
11
|
Install `spree_account_recurring` by adding the following to your `Gemfile`:
|
12
12
|
|
13
|
+
```ruby
|
14
|
+
gem 'spree_account_recurring'
|
15
|
+
```
|
16
|
+
|
17
|
+
For older version of Spree
|
18
|
+
|
13
19
|
```ruby
|
14
20
|
# Spree 2.1.x
|
15
|
-
gem 'spree_account_recurring', '
|
21
|
+
gem 'spree_account_recurring', '1.0.1'
|
16
22
|
```
|
17
23
|
|
24
|
+
|
18
25
|
Bundle your dependencies and run the installation generator:
|
19
26
|
|
20
27
|
```shell
|
@@ -106,4 +113,4 @@ Credits
|
|
106
113
|
|
107
114
|
[](http://vinsol.com)
|
108
115
|
|
109
|
-
Copyright (c) 2014 [vinsol.com](http://vinsol.com "Ruby on Rails, iOS and Android developers"), released under the New MIT License
|
116
|
+
Copyright (c) 2014 [vinsol.com](http://vinsol.com "Ruby on Rails, iOS and Android developers"), released under the New MIT License
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require spree/backend
|
@@ -0,0 +1 @@
|
|
1
|
+
//= require spree/frontend
|
@@ -20,6 +20,10 @@ $(document).ready(function(){
|
|
20
20
|
// For errors that happen later.
|
21
21
|
Spree.stripePaymentMethod.prepend("<div id='stripeError' class='errorExplanation' style='display:none'></div>")
|
22
22
|
|
23
|
+
$(".cardNumber").payment('formatCardNumber');
|
24
|
+
$(".cardExpiry").payment('formatCardExpiry');
|
25
|
+
$(".cardCode").payment('formatCardCVC');
|
26
|
+
|
23
27
|
$('.continue').on('click', function(){
|
24
28
|
$('#stripeError').hide();
|
25
29
|
if(Spree.stripePaymentMethod.is(':visible')){
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module BeforeEach
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
module ClassMethods
|
5
|
+
def method_added(method)
|
6
|
+
method = method.to_s.gsub(/_with(out)?_before$/, '')
|
7
|
+
with_method, without_method = "#{method}_with_before", "#{method}_without_before"
|
8
|
+
|
9
|
+
return if method == 'before_each' or method_defined?(with_method)
|
10
|
+
|
11
|
+
define_method(with_method) do |*args, &block|
|
12
|
+
before_each
|
13
|
+
send(without_method, *args, &block)
|
14
|
+
end
|
15
|
+
alias_method_chain(method, :before)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def before_each
|
20
|
+
end
|
21
|
+
end
|
@@ -10,8 +10,6 @@ module Spree
|
|
10
10
|
has_many :plans
|
11
11
|
attr_readonly :type
|
12
12
|
validates :type, :name, presence: true
|
13
|
-
validates :type, uniqueness: { message: 'of provider recurring already exists' }
|
14
|
-
|
15
13
|
scope :active, -> { undeleted.where(active: true) }
|
16
14
|
|
17
15
|
def self.display_name
|
@@ -25,9 +23,5 @@ module Spree
|
|
25
23
|
def default_plan
|
26
24
|
plans.default
|
27
25
|
end
|
28
|
-
|
29
|
-
def has_preferred_keys?
|
30
|
-
preferred_secret_key.present? && preferred_public_key.present?
|
31
|
-
end
|
32
26
|
end
|
33
27
|
end
|
@@ -8,7 +8,9 @@ module Spree
|
|
8
8
|
INTERVAL = { week: 'Weekly', month: 'Monthly', year: 'Annually' }
|
9
9
|
CURRENCY = { usd: 'USD', gbp: 'GBP', jpy: 'JPY', eur: 'EUR', aud: 'AUD', hkd: 'HKD', sek: 'SEK', nok: 'NOK', dkk: 'DKK', pen: 'PEN', cad: 'CAD'}
|
10
10
|
|
11
|
-
|
11
|
+
def before_each
|
12
|
+
set_api_key
|
13
|
+
end
|
12
14
|
end
|
13
15
|
end
|
14
16
|
end
|
@@ -1,13 +1,9 @@
|
|
1
1
|
Spree::User.class_eval do
|
2
2
|
has_many :subscriptions
|
3
3
|
|
4
|
-
def find_or_create_stripe_customer(token
|
4
|
+
def find_or_create_stripe_customer(token)
|
5
5
|
return api_customer if stripe_customer_id?
|
6
|
-
customer =
|
7
|
-
Stripe::Customer.create(description: email, email: email, card: token)
|
8
|
-
else
|
9
|
-
Stripe::Customer.create(description: email, email: email)
|
10
|
-
end
|
6
|
+
customer = Stripe::Customer.create(description: email, email: email, card: token)
|
11
7
|
update_column(:stripe_customer_id, customer.id)
|
12
8
|
customer
|
13
9
|
end
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<div class="alpha four columns">
|
6
6
|
<div id="preference-settings" data-hook class="field">
|
7
7
|
<%= label_tag nil, Spree.t(:provider) %>
|
8
|
-
<%= select(:recurring, :type,
|
8
|
+
<%= select(:recurring, :type, Spree::Recurring.subclasses.collect {|pro| [pro.display_name, pro]}, {}, {disabled: !@recurring.new_record?, class: 'select2 fullwidth'}) %>
|
9
9
|
|
10
10
|
<% unless @recurring.new_record? %>
|
11
11
|
<%= preference_fields(@recurring, f) %>
|
@@ -16,9 +16,7 @@
|
|
16
16
|
<fieldset class="no-border-top">
|
17
17
|
<%= render :partial => 'form', :locals => { :f => f } %>
|
18
18
|
<div data-hook="buttons" class="filter-actions actions">
|
19
|
-
|
20
|
-
<%= button_link_to Spree.t(:manage_plans), admin_recurring_plans_url(@recurring) %>
|
21
|
-
<% end %>
|
19
|
+
<%= button_link_to Spree.t(:manage_plans), admin_recurring_plans_url(@recurring) %>
|
22
20
|
<%= button Spree.t('actions.update'), 'icon-refresh' %>
|
23
21
|
</div>
|
24
22
|
</fieldset>
|
@@ -33,4 +33,4 @@
|
|
33
33
|
<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
|
34
34
|
<script type="text/javascript">Stripe.setPublishableKey("<%= @plan.provider.preferred_public_key %>");</script>
|
35
35
|
<script>Spree.stripePaymentMethod = $('#plan_' + <%= @plan.id %> + '_subscribe')</script>
|
36
|
-
<%= javascript_include_tag "
|
36
|
+
<%= javascript_include_tag "spree/frontend/stripe" %>
|
data/config/routes.rb
CHANGED
@@ -4,8 +4,12 @@ Spree::Core::Engine.routes.draw do
|
|
4
4
|
resources :plans, except: :show
|
5
5
|
end
|
6
6
|
|
7
|
-
resources :
|
8
|
-
|
7
|
+
resources :reports, only: :index do
|
8
|
+
collection do
|
9
|
+
resources :subscriptions, only: :index
|
10
|
+
resources :subscription_events, only: :index
|
11
|
+
end
|
12
|
+
end
|
9
13
|
end
|
10
14
|
|
11
15
|
resources :recurring_hooks, only: :none do
|
@@ -5,13 +5,13 @@ module SpreeAccountRecurring
|
|
5
5
|
class_option :auto_run_migrations, :type => :boolean, :default => false
|
6
6
|
|
7
7
|
def add_javascripts
|
8
|
-
append_file '
|
9
|
-
append_file '
|
8
|
+
append_file 'vendor/assets/javascripts/spree/frontend/all.js', "//= require spree/frontend/spree_account_recurring\n"
|
9
|
+
append_file 'vendor/assets/javascripts/spree/backend/all.js', "//= require spree/backend/spree_account_recurring\n"
|
10
10
|
end
|
11
11
|
|
12
12
|
def add_stylesheets
|
13
|
-
inject_into_file '
|
14
|
-
inject_into_file '
|
13
|
+
inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/spree_account_recurring\n", :before => /\*\//, :verbose => true
|
14
|
+
inject_into_file 'vendor/assets/stylesheets/spree/backend/all.css', " *= require spree/backend/spree_account_recurring\n", :before => /\*\//, :verbose => true
|
15
15
|
end
|
16
16
|
|
17
17
|
def add_migrations
|
@@ -1,18 +1,11 @@
|
|
1
1
|
module SpreeAccountRecurring
|
2
2
|
class Engine < Rails::Engine
|
3
3
|
require 'spree/core'
|
4
|
-
require 'spree/core/environment_extension.rb'
|
5
|
-
require 'spree/core/environment.rb'
|
6
|
-
|
7
4
|
isolate_namespace Spree
|
8
5
|
engine_name 'spree_account_recurring'
|
9
6
|
|
10
7
|
config.autoload_paths += %W(#{config.root}/lib)
|
11
8
|
|
12
|
-
Spree::Core::Environment.class_eval do
|
13
|
-
attr_accessor :recurring_providers
|
14
|
-
end
|
15
|
-
|
16
9
|
# use rspec for tests
|
17
10
|
config.generators do |g|
|
18
11
|
g.test_framework :rspec
|
@@ -25,9 +18,5 @@ module SpreeAccountRecurring
|
|
25
18
|
end
|
26
19
|
|
27
20
|
config.to_prepare &method(:activate).to_proc
|
28
|
-
|
29
|
-
initializer "spree.register.recurring_providers" do |app|
|
30
|
-
app.config.spree.recurring_providers = [Spree::Recurring::StripeRecurring]
|
31
|
-
end
|
32
21
|
end
|
33
22
|
end
|
metadata
CHANGED
@@ -1,94 +1,98 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: spree_account_recurring
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 1.1.0
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Priyank Gupta
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
17
|
+
|
18
|
+
date: 2014-04-07 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: spree_core
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: '2.1'
|
22
|
-
type: :runtime
|
23
22
|
prerelease: false
|
24
|
-
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
24
|
none: false
|
26
|
-
requirements:
|
25
|
+
requirements:
|
27
26
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
requirements:
|
35
|
-
- - '='
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: 1.10.1
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 7
|
29
|
+
segments:
|
30
|
+
- 2
|
31
|
+
- 2
|
32
|
+
version: "2.2"
|
38
33
|
type: :runtime
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: stripe
|
39
37
|
prerelease: false
|
40
|
-
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
39
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
40
|
+
requirements:
|
41
|
+
- - "="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 61
|
44
|
+
segments:
|
45
|
+
- 1
|
46
|
+
- 10
|
47
|
+
- 1
|
45
48
|
version: 1.10.1
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: stripe_tester
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
|
-
requirements:
|
51
|
-
- - ! '>='
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0'
|
54
49
|
type: :runtime
|
50
|
+
version_requirements: *id002
|
51
|
+
- !ruby/object:Gem::Dependency
|
52
|
+
name: stripe_tester
|
55
53
|
prerelease: false
|
56
|
-
|
54
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
57
55
|
none: false
|
58
|
-
requirements:
|
59
|
-
- -
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
|
62
|
-
|
56
|
+
requirements:
|
57
|
+
- - ">="
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
hash: 3
|
60
|
+
segments:
|
61
|
+
- 0
|
62
|
+
version: "0"
|
63
|
+
type: :runtime
|
64
|
+
version_requirements: *id003
|
65
|
+
- !ruby/object:Gem::Dependency
|
63
66
|
name: rspec-rails
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
|
-
requirements:
|
67
|
-
- - ~>
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '2.13'
|
70
|
-
type: :development
|
71
67
|
prerelease: false
|
72
|
-
|
68
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
73
69
|
none: false
|
74
|
-
requirements:
|
70
|
+
requirements:
|
75
71
|
- - ~>
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
|
78
|
-
|
79
|
-
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
hash: 25
|
74
|
+
segments:
|
75
|
+
- 2
|
76
|
+
- 13
|
77
|
+
version: "2.13"
|
78
|
+
type: :development
|
79
|
+
version_requirements: *id004
|
80
|
+
description: Spree extension to manage recurring payments/subscriptions using Stripe Payment Gateway.
|
80
81
|
email: info@vinsol.com
|
81
82
|
executables: []
|
83
|
+
|
82
84
|
extensions: []
|
85
|
+
|
83
86
|
extra_rdoc_files: []
|
84
|
-
|
87
|
+
|
88
|
+
files:
|
85
89
|
- LICENSE
|
86
90
|
- README.md
|
87
|
-
- app/assets/javascripts/
|
88
|
-
- app/assets/javascripts/
|
89
|
-
- app/assets/javascripts/
|
90
|
-
- app/assets/stylesheets/
|
91
|
-
- app/assets/stylesheets/
|
91
|
+
- app/assets/javascripts/spree/backend/spree_account_recurring.js
|
92
|
+
- app/assets/javascripts/spree/frontend/spree_account_recurring.js
|
93
|
+
- app/assets/javascripts/spree/frontend/stripe.js
|
94
|
+
- app/assets/stylesheets/spree/backend/spree_account_recurring.css
|
95
|
+
- app/assets/stylesheets/spree/frontend/spree_account_recurring.css
|
92
96
|
- app/controllers/concerns/spree/admin/ransack_date_search.rb
|
93
97
|
- app/controllers/spree/admin/plans_controller.rb
|
94
98
|
- app/controllers/spree/admin/recurrings_controller.rb
|
@@ -97,6 +101,7 @@ files:
|
|
97
101
|
- app/controllers/spree/plans_controller.rb
|
98
102
|
- app/controllers/spree/recurring_hooks_controller.rb
|
99
103
|
- app/controllers/spree/subscriptions_controller.rb
|
104
|
+
- app/models/concerns/before_each.rb
|
100
105
|
- app/models/concerns/restrictive_destroyer.rb
|
101
106
|
- app/models/concerns/spree/plan/api_handler.rb
|
102
107
|
- app/models/concerns/spree/recurring/stripe_recurring/api_handler/plan_api_handler.rb
|
@@ -147,28 +152,38 @@ files:
|
|
147
152
|
- db/migrate/20140404114919_change_datatype_for_amount_in_spree_plans.rb
|
148
153
|
homepage: http://vinsol.com
|
149
154
|
licenses: []
|
155
|
+
|
150
156
|
post_install_message:
|
151
157
|
rdoc_options: []
|
152
|
-
|
158
|
+
|
159
|
+
require_paths:
|
153
160
|
- lib
|
154
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
161
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
155
162
|
none: false
|
156
|
-
requirements:
|
157
|
-
- -
|
158
|
-
- !ruby/object:Gem::Version
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
hash: 53
|
167
|
+
segments:
|
168
|
+
- 1
|
169
|
+
- 9
|
170
|
+
- 3
|
159
171
|
version: 1.9.3
|
160
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
172
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
161
173
|
none: false
|
162
|
-
requirements:
|
163
|
-
- -
|
164
|
-
- !ruby/object:Gem::Version
|
165
|
-
|
166
|
-
|
174
|
+
requirements:
|
175
|
+
- - ">="
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
hash: 3
|
178
|
+
segments:
|
179
|
+
- 0
|
180
|
+
version: "0"
|
181
|
+
requirements:
|
167
182
|
- none
|
168
183
|
rubyforge_project:
|
169
|
-
rubygems_version: 1.8.
|
184
|
+
rubygems_version: 1.8.24
|
170
185
|
signing_key:
|
171
186
|
specification_version: 3
|
172
|
-
summary: Spree extension to manage recurring payments/subscriptions using Stripe Payment
|
173
|
-
Gateway.
|
187
|
+
summary: Spree extension to manage recurring payments/subscriptions using Stripe Payment Gateway.
|
174
188
|
test_files: []
|
189
|
+
|
@@ -1 +0,0 @@
|
|
1
|
-
//= require admin/spree_backend
|
@@ -1 +0,0 @@
|
|
1
|
-
//= require store/spree_frontend
|