catarse_iugu 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8e2f6e9068fbb86ce2cf0a467effcf15f815de17
4
- data.tar.gz: 1e338c05a38a86e4da7ad6e7fbaf9b030d37a5d6
3
+ metadata.gz: c8d95a037f293e5bcae056bbb0868469ab1192be
4
+ data.tar.gz: 11b3f07eb5ef021a4369ce78a4b54b125182e0f4
5
5
  SHA512:
6
- metadata.gz: ca4822fdf35c5431891ac89c7168ed46da35e818d0b14549a1bb9c46030f4d03c9327c35d306ff5b7212c2ca082828ab0a94bf3cd1615df57068e144f6f8c946
7
- data.tar.gz: 03e8f10619644b90a4c0de61f37c3d3d92585ac53c48116fa187014a99b26b9c31ad471ab9307227854ba53cecdcf7ed025ef5e2721ce57f725efbbd65cfce1a
6
+ metadata.gz: 19d01c1605baa99d62df0ee2971afa725974c22f2b01d3409f68e229951ef25d5ff5ff2f7195a0e4b0e9299460e288026331d9a41580164f2b4a126932b916b0
7
+ data.tar.gz: a9953911391a68010763e35cccbb5685f19d719d909dffaa9166445486f2347d59fb1a13e133f9cfab8df346d383318c860aeb9ba3805583d77ead8da850e6d8
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- catarse_iugu (0.1.2)
4
+ catarse_iugu (0.1.3)
5
5
  iugu
6
6
  rails (~> 4.1)
7
7
  slim-rails
@@ -2,6 +2,8 @@ $(window).bind("load", function() {
2
2
  Iugu.setAccountID(IUGU_ACCOUNT_ID);
3
3
  Iugu.setTestMode(true);
4
4
  Iugu.setup();
5
+ $('#catarse-iugu-loader').addClass('hidden');
6
+ $('#catarse_iugu_form').removeClass('hidden');
5
7
  });
6
8
 
7
9
  jQuery(function($) {
@@ -12,11 +14,76 @@ jQuery(function($) {
12
14
 
13
15
  function tokenResponseHandler(data) {
14
16
  if (data.errors) {
15
- alert("Erro salvando cartão: " + JSON.stringify(data.errors));
17
+ showErrors(data.errors);
16
18
  } else {
17
19
  $("#token").val( data.id );
18
20
  form.get(0).submit();
19
21
  }
20
22
  }
23
+
24
+ function showErrors(errors) {
25
+ if (errors.number) {
26
+ $('[data-iugu=number]').addClass('error');
27
+ }
28
+
29
+ if (errors.verification_value) {
30
+ $('[data-iugu=verification_value]').addClass('error');
31
+ }
32
+
33
+ if (errors.expiration) {
34
+ $('[data-iugu=expiration]').addClass('error');
35
+ }
36
+
37
+ if (errors.first_name || errors.last_name) {
38
+ $('[data-iugu=full_name]').addClass('error');
39
+ }
40
+
41
+ $('#iugu-error-messages').html(
42
+ Object.keys(errors)
43
+ .map(function toPair(key) {
44
+ if (!Array.isArray(errors[key])) {
45
+ return { key: key, errors: [errors[key]] };
46
+ }
47
+ return { key: key, errors: errors[key] };
48
+ })
49
+ .map(errorMessageFor)
50
+ .map(toListItem)
51
+ );
52
+ }
53
+
54
+ function errorMessageFor(error) {
55
+ var requiredErrors = {
56
+ first_name: 'Você deve preencher seu primeiro nome',
57
+ last_name: 'Você deve preencher seu último nome',
58
+ expiration: 'Você deve preencher a data de expiração do cartão com uma data futura',
59
+ verification_value: 'Você deve preencher o código de validação do cartão',
60
+ number: 'Você deve preencher o número do cartão'
61
+ };
62
+
63
+ if (error.errors[0] === 'is_invalid') {
64
+ return requiredErrors[error.key];
65
+ }
66
+
67
+ switch (error.key) {
68
+ case 'number':
69
+ if (error.errors.filter(isEqual("is not a valid credit card number")).length) {
70
+ return 'O número do cartão não é válido';
71
+ }
72
+ break;
73
+
74
+ default:
75
+ throw new Error('Unrecognized error: ', JSON.stringify(error));
76
+ }
77
+ }
78
+
79
+ function toListItem(content) {
80
+ return '<li>' + content + '</li>';
81
+ }
82
+
83
+ function isEqual(target) {
84
+ return function delayedIsEqual(element) {
85
+ return element == target;
86
+ }
87
+ }
21
88
  });
22
89
  });
@@ -153,12 +153,80 @@
153
153
  background-position: 0px -66px;
154
154
  }
155
155
 
156
- /* Non Credit Card Form - Token Area */
157
- .token-area {
158
- margin-top: 20px;
159
- margin-bottom: 20px;
160
- border: 1px dotted #CCC;
161
- display: block;
162
- padding: 20px;
163
- background: #EFEFEF;
156
+ .error {
157
+ border: 1px solid red !important;
158
+ }
159
+
160
+ /* Loader */
161
+
162
+ .loader {
163
+ color: #dddddd;
164
+ font-size: 20px;
165
+ margin: 100px auto;
166
+ width: 1em;
167
+ height: 1em;
168
+ border-radius: 50%;
169
+ position: relative;
170
+ text-indent: -9999em;
171
+ -webkit-animation: load4 1.3s infinite linear;
172
+ animation: load4 1.3s infinite linear;
173
+ -webkit-transform: translateZ(0);
174
+ -ms-transform: translateZ(0);
175
+ transform: translateZ(0);
176
+ }
177
+
178
+ @-webkit-keyframes load4 {
179
+ 0%,
180
+ 100% {
181
+ box-shadow: 0 -3em 0 0.2em, 2em -2em 0 0em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 0;
182
+ }
183
+ 12.5% {
184
+ box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 -1em;
185
+ }
186
+ 25% {
187
+ box-shadow: 0 -3em 0 -0.5em, 2em -2em 0 0, 3em 0 0 0.2em, 2em 2em 0 0, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 -1em;
188
+ }
189
+ 37.5% {
190
+ box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em;
191
+ }
192
+ 50% {
193
+ box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em;
194
+ }
195
+ 62.5% {
196
+ box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em;
197
+ }
198
+ 75% {
199
+ box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0;
200
+ }
201
+ 87.5% {
202
+ box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em;
203
+ }
204
+ }
205
+
206
+ @keyframes load4 {
207
+ 0%,
208
+ 100% {
209
+ box-shadow: 0 -3em 0 0.2em, 2em -2em 0 0em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 0;
210
+ }
211
+ 12.5% {
212
+ box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em, 3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 -1em;
213
+ }
214
+ 25% {
215
+ box-shadow: 0 -3em 0 -0.5em, 2em -2em 0 0, 3em 0 0 0.2em, 2em 2em 0 0, 0 3em 0 -1em, -2em 2em 0 -1em, -3em 0 0 -1em, -2em -2em 0 -1em;
216
+ }
217
+ 37.5% {
218
+ box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em, -2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em;
219
+ }
220
+ 50% {
221
+ box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em, -2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em;
222
+ }
223
+ 62.5% {
224
+ box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0, -2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em;
225
+ }
226
+ 75% {
227
+ box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em, 3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0;
228
+ }
229
+ 87.5% {
230
+ box-shadow: 0em -3em 0 0, 2em -2em 0 -1em, 3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em, -2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em;
231
+ }
164
232
  }
@@ -26,12 +26,12 @@ class CatarseIugu::IuguController < ApplicationController
26
26
  PaymentEngines.create_payment_notification contribution_id: contribution.id, payment_id: payment.id
27
27
  redirect_to main_app.project_contribution_path(contribution.project, contribution)
28
28
  else
29
- flash[:error] = "Houve um erro ao realizar o pagamento."
29
+ flash[:notice] = "Houve um erro ao realizar o pagamento: #{charge.message}"
30
30
  redirect_to main_app.new_project_contribution_path(contribution.project)
31
31
  end
32
32
  rescue Exception => e
33
33
  Rails.logger.info "-----> #{e.inspect}"
34
- flash[:failure] = e.message
34
+ flash[:notice] = "Houve um erro ao realizar o pagamento: #{e.message}"
35
35
  return redirect_to main_app.new_project_contribution_path(contribution.project)
36
36
  end
37
37
  end
@@ -4,7 +4,11 @@ javascript:
4
4
  = javascript_include_tag 'catarse_iugu'
5
5
  = stylesheet_link_tag 'catarse_iugu'
6
6
 
7
- form#catarse_iugu_form action=(pay_iugu_path(@contribution)) method="POST"
7
+ #catarse-iugu-loader.loader
8
+
9
+ ul#iugu-error-messages
10
+
11
+ form#catarse_iugu_form.hidden action=(pay_iugu_path(@contribution)) method="POST"
8
12
  .usable-creditcard-form
9
13
  .wrapper
10
14
  .input-group.nmb_a
@@ -23,8 +27,6 @@ form#catarse_iugu_form action=(pay_iugu_path(@contribution)) method="POST"
23
27
  img alt="Visa, Master, Diners. Amex" border="0" src="http://storage.pupui.com.br/9CA0F40E971643D1B7C8DE46BBC18396/assets/cc-icons.e8f4c6b4db3cc0869fa93ad535acbfe7.png" /
24
28
  a.iugu-btn href="http://iugu.com" tabindex="-1"
25
29
  img alt=("Pagamentos por Iugu") border="0" src="http://storage.pupui.com.br/9CA0F40E971643D1B7C8DE46BBC18396/assets/payments-by-iugu.1df7caaf6958f1b5774579fa807b5e7f.png" /
26
- .token-area
27
- label for="token" Token do Cartão de Crédito - Enviar para seu Servidor
28
- input#token name="token" readonly="true" size="64" style="text-align:center" type="text" value="" /
30
+ input#token name="token" type="hidden" value="" /
29
31
  div
30
- button type="submit" Salvar
32
+ button type="submit" Enviar
@@ -1,3 +1,3 @@
1
1
  module CatarseIugu
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: catarse_iugu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - mrodrigues
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-14 00:00:00.000000000 Z
11
+ date: 2016-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails