unlock_moip 0.0.5 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/unlock_moip.js.coffee +9 -26
- data/app/assets/stylesheets/unlock_moip/contributions/edit.sass +1 -7
- data/app/assets/stylesheets/unlock_moip/contributions/form.sass +1 -1
- data/app/controllers/unlock_moip/contributions_controller.rb +2 -57
- data/app/views/unlock_moip/contributions/_form.html.slim +2 -19
- data/app/views/unlock_moip/contributions/edit.html.slim +3 -7
- data/config/initializers/register.rb +1 -4
- data/lib/unlock_moip/models/contribution.rb +16 -11
- data/lib/unlock_moip/models/gateway.rb +4 -0
- data/lib/unlock_moip/version.rb +1 -1
- metadata +8 -9
- data/app/views/unlock_moip/contributions/_gateway_data.html.slim +0 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc03ae3313500f874e417d7619bc987909b4bcbb
|
4
|
+
data.tar.gz: d76184ef2694455bd5f0fadcf76cd36cf4f64447
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 75581b94b79d765e89184c0f171931384b0d9c6d6bb1b5a1271cb788b5a5e24003b5dc38ebf67a0b33edd0548a3cd80518c838b8c8ee66b865d60561581938f7
|
7
|
+
data.tar.gz: bd85f97f2736af5f1ee49cd474c81650e97c4d5289b2e6de00846a8e34379901b9023a30321ec8da0ff7ed3d3ff49e0e71509080235d0dfd5d9d348ea241d5a0
|
@@ -1,16 +1,13 @@
|
|
1
1
|
$(document).ready ->
|
2
|
-
if action() == "new" and controller() == "contributions" and namespace() == "initiatives"
|
3
|
-
$('#contribution_value').maskMoney
|
4
|
-
thousands: ''
|
5
|
-
decimal: ''
|
6
|
-
precision: 0
|
7
2
|
if action() == "edit" and controller() == "contributions" and namespace() == "unlockmoip"
|
8
|
-
$('#pay_form
|
3
|
+
$('#pay_form').on "submit", (event) ->
|
9
4
|
event.preventDefault()
|
10
5
|
event.stopPropagation()
|
11
|
-
|
12
|
-
form = $('#pay_form')
|
6
|
+
form = $(@)
|
13
7
|
submit = form.find('[type=submit]')
|
8
|
+
return unless submit.is(':visible')
|
9
|
+
submit.hide()
|
10
|
+
billing_info_ok = false
|
14
11
|
status = form.find('.gateway_data')
|
15
12
|
terms = form.find('#terms')
|
16
13
|
status.removeClass 'success'
|
@@ -20,14 +17,12 @@ $(document).ready ->
|
|
20
17
|
status.addClass 'failure'
|
21
18
|
status.html("<h4>Você precisa aceitar os termos de uso para continuar.</h4>")
|
22
19
|
status.show()
|
20
|
+
submit.show()
|
23
21
|
else
|
24
22
|
status.html("<h4>Enviando dados de pagamento para o Moip...</h4><ul></ul>")
|
25
|
-
token = form.data('token')
|
26
|
-
plan_code = form.data('plan')
|
27
|
-
submit.hide()
|
28
23
|
status.show()
|
29
24
|
if MoipAssinaturas?
|
30
|
-
moip = new MoipAssinaturas(token)
|
25
|
+
moip = new MoipAssinaturas(form.data('token'))
|
31
26
|
moip.callback (response) ->
|
32
27
|
status.find('h4').html("#{response.message} (Moip)")
|
33
28
|
unless response.has_errors()
|
@@ -36,22 +31,10 @@ $(document).ready ->
|
|
36
31
|
subscription = new Subscription()
|
37
32
|
subscription.with_code(form.data('subscription'))
|
38
33
|
subscription.with_customer(customer)
|
39
|
-
subscription.with_plan_code(
|
34
|
+
subscription.with_plan_code(form.data('plan'))
|
40
35
|
moip.subscribe(subscription)
|
41
36
|
else
|
42
|
-
|
43
|
-
$.ajax
|
44
|
-
url: form.data('activate'),
|
45
|
-
type: 'PUT',
|
46
|
-
dataType: 'json',
|
47
|
-
success: (response) ->
|
48
|
-
window.location.href = form.data('show')
|
49
|
-
error: (response) ->
|
50
|
-
status.find('h4').html("Não foi possível ativar sua assinatura")
|
51
|
-
status.addClass 'failure'
|
52
|
-
for error in response.responseJSON.errors
|
53
|
-
status.find('ul').append("<li>#{error}</li>")
|
54
|
-
submit.show()
|
37
|
+
$('form.edit_contribution').submit()
|
55
38
|
else
|
56
39
|
status.addClass 'failure'
|
57
40
|
for error in response.errors
|
@@ -1,13 +1,7 @@
|
|
1
1
|
body[data-action="edit"][data-controller="contributions"][data-namespace="unlockmoip"]
|
2
2
|
article
|
3
|
-
width: 92%
|
4
|
-
+media($tablet)
|
5
|
-
width: 90%
|
6
|
-
+media($desktop)
|
7
|
-
width: 70%
|
8
|
-
margin-left: auto
|
9
|
-
margin-right: auto
|
10
3
|
form
|
4
|
+
margin-top: 0
|
11
5
|
.field
|
12
6
|
float: left
|
13
7
|
width: 100%
|
@@ -1,4 +1,4 @@
|
|
1
|
-
body[data-action="new"][data-controller="contributions"][data-namespace="initiatives"], body[data-action="create"][data-controller="contributions"]
|
1
|
+
body[data-action="new"][data-controller="contributions"][data-namespace="initiatives"], body[data-action="create"][data-controller="contributions"]
|
2
2
|
article
|
3
3
|
form
|
4
4
|
em
|
@@ -1,14 +1,6 @@
|
|
1
1
|
class UnlockMoip::ContributionsController < ::ApplicationController
|
2
2
|
|
3
|
-
|
4
|
-
actions :create, :edit
|
5
|
-
custom_actions member: %i[activate suspend]
|
6
|
-
respond_to :html, except: [:activate, :suspend]
|
7
|
-
respond_to :json, only: [:activate, :suspend]
|
8
|
-
|
9
|
-
after_action :verify_authorized
|
10
|
-
after_action :verify_policy_scoped, only: %i[]
|
11
|
-
before_action :authenticate_user!, only: %i[edit]
|
3
|
+
is_unlock_gateway
|
12
4
|
|
13
5
|
def create
|
14
6
|
|
@@ -17,14 +9,7 @@ class UnlockMoip::ContributionsController < ::ApplicationController
|
|
17
9
|
params[:contribution][:user_attributes][:birthdate] = params[:pickadate_birthdate_submit]
|
18
10
|
end
|
19
11
|
|
20
|
-
|
21
|
-
@initiative = Initiative.find(contribution_params[:initiative_id])
|
22
|
-
@gateways = @initiative.gateways.without_state(:draft).order(:ordering)
|
23
|
-
@contribution = @initiative.contributions.new(contribution_params)
|
24
|
-
@contribution.gateway_state = @contribution.gateway.state
|
25
|
-
authorize @contribution
|
26
|
-
|
27
|
-
if @contribution.save
|
12
|
+
if create_contribution
|
28
13
|
|
29
14
|
data = {}
|
30
15
|
# Storing the customer_code and subscription_code
|
@@ -152,48 +137,8 @@ class UnlockMoip::ContributionsController < ::ApplicationController
|
|
152
137
|
flash[:success] = "Apoio iniciado com sucesso! Agora é só realizar o pagamento :D"
|
153
138
|
return redirect_to edit_moip_contribution_path(@contribution)
|
154
139
|
|
155
|
-
else
|
156
|
-
return render '/initiatives/contributions/new'
|
157
140
|
end
|
158
141
|
|
159
142
|
end
|
160
143
|
|
161
|
-
def edit
|
162
|
-
edit! { authorize resource }
|
163
|
-
end
|
164
|
-
|
165
|
-
def activate
|
166
|
-
transition_state("activate", :active)
|
167
|
-
end
|
168
|
-
|
169
|
-
def suspend
|
170
|
-
transition_state("suspend", :suspended)
|
171
|
-
end
|
172
|
-
|
173
|
-
private
|
174
|
-
|
175
|
-
def transition_state(transition, state)
|
176
|
-
authorize resource
|
177
|
-
errors = []
|
178
|
-
if resource.send("can_#{transition}?")
|
179
|
-
begin
|
180
|
-
if resource.moip_state_name != state
|
181
|
-
response = Moip::Assinaturas::Subscription.send(transition.to_sym, resource.subscription_code, resource.moip_auth)
|
182
|
-
resource.send("#{transition}!") if response[:success]
|
183
|
-
else
|
184
|
-
resource.send("#{transition}!")
|
185
|
-
end
|
186
|
-
rescue
|
187
|
-
errors << "Não foi possível alterar o status de seu apoio."
|
188
|
-
end
|
189
|
-
else
|
190
|
-
errors << "Não é permitido alterar o status deste apoio."
|
191
|
-
end
|
192
|
-
render(json: {success: (errors.size == 0), errors: errors}, status: ((errors.size == 0) ? 200 : 422))
|
193
|
-
end
|
194
|
-
|
195
|
-
def contribution_params
|
196
|
-
params.require(:contribution).permit(*policy(@contribution || Contribution.new).permitted_attributes)
|
197
|
-
end
|
198
|
-
|
199
144
|
end
|
@@ -1,23 +1,6 @@
|
|
1
1
|
= form_for @contribution, url: moip_contributions_path, method: :post do |form|
|
2
|
-
|
3
|
-
|
4
|
-
h3 Atenção! Este unlock encontra-se em modo de testes (Sandbox) no Moip.
|
5
|
-
ul
|
6
|
-
li Nenhum apoio realizado neste modo será concretizado.
|
7
|
-
li Você pode testar livremente, sem medo de ser debitado.
|
8
|
-
- if @contribution.errors.any?
|
9
|
-
#error_explanation.warning
|
10
|
-
h3 = "#{pluralize(@contribution.errors.count, "erro impediu", "erros impediram")} que este apoio fosse salvo:"
|
11
|
-
ul
|
12
|
-
- @contribution.errors.full_messages.each do |msg|
|
13
|
-
li= msg
|
14
|
-
= form.hidden_field :user_id
|
15
|
-
= form.hidden_field :initiative_id
|
16
|
-
= form.hidden_field :gateway_id, value: gateway.id
|
17
|
-
h3 Com quanto você quer apoiar por mês?
|
18
|
-
= form.label :value
|
19
|
-
= form.text_field :value, class: "has_em"
|
20
|
-
em Assinatura mensal cobrada via cartão de crédito pelo meio de pagamentos #{link_to 'Moip', 'https://moip.com.br/', target: :_blank }. Você pode suspender #{ link_to 'a qualquer momento', my_contributions_path, target: :_blank }.
|
2
|
+
= render partial: 'initiatives/contributions/sandbox_warning', locals: { gateway: gateway }
|
3
|
+
= render partial: 'initiatives/contributions/base_form', locals: { form: form, gateway: gateway }
|
21
4
|
h3 Preencha e revise os dados para pagamento
|
22
5
|
= form.fields_for :user do |user_fields|
|
23
6
|
= user_fields.hidden_field :id
|
@@ -2,13 +2,9 @@
|
|
2
2
|
= "Dados de pagamento"
|
3
3
|
- content_for :external_js do
|
4
4
|
script type="text/javascript" src="https://#{( @contribution.gateway.sandbox? ? 'sandbox' : 'api' )}.moip.com.br/moip-assinaturas.min.js"
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
h3 Atenção! Este unlock encontra-se em modo de testes (Sandbox) no Moip.
|
9
|
-
ul
|
10
|
-
li Nenhum apoio realizado neste modo será concretizado.
|
11
|
-
li Você pode testar livremente, sem medo de ser debitado.
|
5
|
+
= form_for @contribution, url: activate_moip_contribution_path(@contribution), method: :put, html: { style: 'display: none'} do |form|
|
6
|
+
form#pay_form autocomplete="off" data-token=@contribution.gateway.settings["token"] data-plan=@contribution.plan_code data-customer=@contribution.customer_code data-subscription=@contribution.subscription_code
|
7
|
+
= render partial: 'initiatives/contributions/sandbox_warning', locals: { gateway: @contribution.gateway }
|
12
8
|
.field
|
13
9
|
= label_tag :holder_name, "Nome escrito no cartão de crédito"
|
14
10
|
= text_field_tag :holder_name, "", autocomplete: "off"
|
@@ -6,7 +6,13 @@ module UnlockMoip
|
|
6
6
|
|
7
7
|
def moip_auth
|
8
8
|
return {} unless self.gateway && self.gateway.settings
|
9
|
-
{
|
9
|
+
{
|
10
|
+
moip_auth: {
|
11
|
+
token: self.gateway.settings["token"],
|
12
|
+
key: self.gateway.settings["key"],
|
13
|
+
sandbox: self.gateway.sandbox?
|
14
|
+
}
|
15
|
+
}
|
10
16
|
end
|
11
17
|
|
12
18
|
def plan_code
|
@@ -33,7 +39,11 @@ module UnlockMoip
|
|
33
39
|
end
|
34
40
|
end
|
35
41
|
|
36
|
-
def
|
42
|
+
def gateway_identifier
|
43
|
+
self.gateway_data && self.gateway_data["subscription_code"]
|
44
|
+
end
|
45
|
+
|
46
|
+
def state_on_gateway
|
37
47
|
begin
|
38
48
|
response = Moip::Assinaturas::Subscription.details(self.subscription_code, self.moip_auth)
|
39
49
|
rescue
|
@@ -50,15 +60,10 @@ module UnlockMoip
|
|
50
60
|
end
|
51
61
|
end
|
52
62
|
|
53
|
-
def
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
self.activate! if self.can_activate?
|
58
|
-
when :suspended
|
59
|
-
self.suspend! if self.can_suspend?
|
60
|
-
end
|
61
|
-
end
|
63
|
+
def update_state_on_gateway!(state)
|
64
|
+
transition = self.transition_by_state(state)
|
65
|
+
response = Moip::Assinaturas::Subscription.send(transition, self.subscription_code, self.moip_auth)
|
66
|
+
response[:success]
|
62
67
|
end
|
63
68
|
|
64
69
|
end
|
data/lib/unlock_moip/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unlock_moip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Weinmann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -25,33 +25,33 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 4.1.6
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: unlock_gateway
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.1.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.1.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: moip-assinaturas
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 0.4.2
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.4.2
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: sqlite3
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -83,7 +83,6 @@ files:
|
|
83
83
|
- app/assets/stylesheets/unlock_moip/unlock_moip.sass
|
84
84
|
- app/controllers/unlock_moip/contributions_controller.rb
|
85
85
|
- app/views/unlock_moip/contributions/_form.html.slim
|
86
|
-
- app/views/unlock_moip/contributions/_gateway_data.html.slim
|
87
86
|
- app/views/unlock_moip/contributions/edit.html.slim
|
88
87
|
- config/initializers/moip_assinaturas.rb
|
89
88
|
- config/initializers/register.rb
|
@@ -1,5 +0,0 @@
|
|
1
|
-
ul
|
2
|
-
li Seu código de assinatura é <strong>#{@contribution.subscription_code}</strong>
|
3
|
-
li Seu pagamento ainda será processado pelo <a href='https://www.moip.com.br/' target='_blank'>Moip</a>.
|
4
|
-
li Se você quiser suspender seu apoio, basta acessar o menu <a href='/my_contributions'>Unlocks apoiados</a> a qualquer momento.
|
5
|
-
li Sua próxima cobrança será realizada em #{@contribution.next_invoice_date}.
|