catarse_pagarme 1.5.3 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +7 -7
  3. data/app/assets/javascripts/catarse_pagarme/application.js +1 -1
  4. data/app/assets/javascripts/catarse_pagarme/credit_card.js +19 -21
  5. data/app/assets/javascripts/catarse_pagarme/payment_choice.js +0 -1
  6. data/app/assets/javascripts/catarse_pagarme/payment_slip.js +6 -6
  7. data/app/controllers/catarse_pagarme/credit_card_base_controller.rb +4 -4
  8. data/app/controllers/catarse_pagarme/notifications_controller.rb +1 -14
  9. data/app/controllers/catarse_pagarme/slip_controller.rb +3 -3
  10. data/app/helpers/catarse_pagarme/application_helper.rb +1 -1
  11. data/app/models/catarse_pagarme/contribution_delegator.rb +10 -14
  12. data/app/models/catarse_pagarme/transaction_base.rb +2 -11
  13. data/app/views/catarse_pagarme/pagarme/_terms.html.slim +6 -0
  14. data/app/views/catarse_pagarme/pagarme/review.html.slim +103 -104
  15. data/catarse_pagarme.gemspec +1 -1
  16. data/config/routes.rb +1 -4
  17. data/lib/catarse_pagarme/configuration.rb +1 -10
  18. data/lib/catarse_pagarme/version.rb +1 -1
  19. data/spec/controllers/catarse_pagarme/credit_cards_controller_spec.rb +3 -3
  20. data/spec/controllers/catarse_pagarme/notifications_controller_spec.rb +2 -10
  21. data/spec/models/catarse_pagarme/contribution_delegator_spec.rb +1 -14
  22. data/spec/models/catarse_pagarme/credit_card_transaction_spec.rb +2 -15
  23. data/spec/models/catarse_pagarme/slip_transaction_spec.rb +2 -15
  24. data/spec/spec_helper.rb +1 -1
  25. data/spec/support/factories.rb +3 -8
  26. metadata +5 -8
  27. data/app/models/catarse_pagarme/bank_account_concern.rb +0 -58
  28. data/app/models/catarse_pagarme/fee_calculator_concern.rb +0 -66
  29. data/spec/models/catarse_pagarme/bank_account_concern_spec.rb +0 -46
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e4ba46bca94f1ff4f9461ea5ee5b99798e1e80f7
4
- data.tar.gz: 082fc8e59856c856bf6f3dab97c710027f935fe9
3
+ metadata.gz: ea2622f55d3204092b95029e30222ee11d53ef09
4
+ data.tar.gz: db723fbfa732d4415e27ac35f277aebc5bfe8435
5
5
  SHA512:
6
- metadata.gz: dc5e1858379c685bceb097b3737db4f8cbaa35ee202165f2f65aa416db7d157fbc3233101c936a61db78256317f9847b92204bcebd12b09d6fb5076fcf3826e2
7
- data.tar.gz: 236f314db22fb50785f5fe70ff5ef01fc35785ae7112d1de196bd4233f20f6340fe8dc34f5b56e78181868b1f523d27016300949190abe8ba2ca428f2eb64ac2
6
+ metadata.gz: 959cc0e8544a66213446bf515ab834087d1ac24750aa8eb8ed400db618261e7406fb20eaf55ab2bf31a9e9c4b2a58536d8516f11c9d19698fc0880aca35b8f8b
7
+ data.tar.gz: 53922520a96378bc0387cfdccbadbba0e00e6bc68c00cf79f25d6972850d13216dcb53e06e9035963868ee43cf8254002dbe04db7b3241e2307514040eead0ff
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- catarse_pagarme (1.5.2)
5
- pagarme (~> 1.9.9)
4
+ catarse_pagarme (2.0.0)
5
+ pagarme (~> 1.9.5)
6
6
  rails (~> 4.0)
7
7
 
8
8
  GEM
@@ -52,8 +52,8 @@ GEM
52
52
  mime-types (1.25.1)
53
53
  minitest (5.4.0)
54
54
  multi_json (1.10.1)
55
- netrc (0.10.2)
56
- pagarme (1.9.9)
55
+ netrc (0.7.7)
56
+ pagarme (1.9.6)
57
57
  multi_json
58
58
  rest-client
59
59
  pg (0.17.1)
@@ -92,15 +92,15 @@ GEM
92
92
  rspec-core (~> 2.14.0)
93
93
  rspec-expectations (~> 2.14.0)
94
94
  rspec-mocks (~> 2.14.0)
95
- sprockets (2.12.3)
95
+ sprockets (2.12.2)
96
96
  hike (~> 1.2)
97
97
  multi_json (~> 1.0)
98
98
  rack (~> 1.0)
99
99
  tilt (~> 1.1, != 1.3.0)
100
- sprockets-rails (2.2.2)
100
+ sprockets-rails (2.1.4)
101
101
  actionpack (>= 3.0)
102
102
  activesupport (>= 3.0)
103
- sprockets (>= 2.8, < 4.0)
103
+ sprockets (~> 2.8)
104
104
  thor (0.19.1)
105
105
  thread_safe (0.3.4)
106
106
  tilt (1.4.1)
@@ -3,7 +3,7 @@ App.addChild('PagarmeForm', {
3
3
 
4
4
  activate: function() {
5
5
  this.message = this.$('.next_step_after_valid_document .alert-danger');
6
- this.loader = this.$('.loader');
6
+ this.loader = this.$('.loader img');
7
7
 
8
8
  this.contributionId = $('input#contribution_id').val();
9
9
  this.projectId = $('input#project_id').val();
@@ -5,30 +5,28 @@ App.views.PagarmeForm.addChild('PaymentCard', {
5
5
  'keyup input[type="text"]' : 'creditCardInputValidator',
6
6
  'keyup #payment_card_number' : 'onKeyupPaymentCardNumber',
7
7
  'click input#credit_card_submit' : 'onSubmit',
8
- 'click a.use_another-card': 'showCreditCardForm'
8
+ 'change .creditcard-records' : 'onChangeCard'
9
+ },
10
+
11
+ onChangeCard: function(event){
12
+ var $target = $(event.currentTarget);
13
+ $target.siblings().removeClass('selected');
14
+ $target.addClass('selected');
15
+ if($(event.target).val() == 0){
16
+ this.$('.type_card_data').slideDown('slow');
17
+ }
18
+ else{
19
+ this.$('.type_card_data').slideUp('slow');
20
+ }
9
21
  },
10
22
 
11
23
  activate: function(options){
12
24
  var that = this;
13
25
  this.pagarmeForm = this.parent;
14
- this.message = this.$('.alert-danger');
26
+ this.message = this.$('.payment-error-message');
15
27
  this.$('input#payment_card_date').mask('99/99');
16
28
  },
17
29
 
18
- showCreditCardForm: function(e) {
19
- var that = this;
20
- e.preventDefault();
21
-
22
- that.$('ul.my_credit_cards').hide();
23
- that.$('a.use_another-card ').hide();
24
- that.$('.type_card_data').show();
25
- that.$('.save_card').show();
26
-
27
- $.each(that.$('.my_credit_cards input:radio[name=payment_subscription_card]'), function(i, item) {
28
- $(item).prop('checked', false);
29
- });
30
- },
31
-
32
30
  getUrl: function(){
33
31
  var that = this;
34
32
  var url = '';
@@ -52,7 +50,7 @@ App.views.PagarmeForm.addChild('PaymentCard', {
52
50
  },
53
51
 
54
52
  selectedCard: function() {
55
- return this.$('.my_credit_cards input:radio[name=payment_subscription_card]:checked');
53
+ return this.$('input:radio[data-stored][name=payment_subscription_card]:checked');
56
54
  },
57
55
 
58
56
  hasSelectedSomeCard: function() {
@@ -81,7 +79,7 @@ App.views.PagarmeForm.addChild('PaymentCard', {
81
79
 
82
80
  getInstallments: function() {
83
81
  if(this.hasSelectedSomeCard()) {
84
- return this.$('.my_credit_cards select#payment_card_installments').val();
82
+ return this.$('.my-credit-cards .selected select#payment_card_installments').val();
85
83
  } else {
86
84
  return this.$('.type_card_data select#payment_card_installments').val();
87
85
  }
@@ -102,8 +100,8 @@ App.views.PagarmeForm.addChild('PaymentCard', {
102
100
  that.parent.loader.hide();
103
101
 
104
102
  if(response.payment_status == 'failed'){
105
- that.message.find('p').html(response.message);
106
- that.message.fadeIn('fast')
103
+ that.message.find('.message-text').html(response.message);
104
+ that.message.slideDown('slow')
107
105
 
108
106
  $(e.currentTarget).show();
109
107
  } else {
@@ -120,7 +118,7 @@ App.views.PagarmeForm.addChild('PaymentCard', {
120
118
  },
121
119
 
122
120
  onKeyupPaymentCardNumber: function(e){
123
- this.$('input#payment_card_flag').val(this.getCardFlag($(e.currentTarget).val()))
121
+ this.$('#payment_card_flag').html(this.getCardFlag($(e.currentTarget).val()))
124
122
  },
125
123
 
126
124
  getCardFlag: function(number) {
@@ -16,7 +16,6 @@ App.views.PagarmeForm.addChild('PaymentChoice', {
16
16
 
17
17
  activate: function(){
18
18
  var that = this.parent;
19
-
20
19
  that.$('input#payment_type_credit_card').click();
21
20
  }
22
21
  });
@@ -8,7 +8,7 @@ App.views.PagarmeForm.addChild('PaymentSlip', {
8
8
 
9
9
  activate: function(options){
10
10
  this.PagarmeForm = this.parent;
11
- this.message = this.$('.alert-danger');
11
+ this.message = this.$('.payment-error-message');
12
12
  this.$('#user_bank_account_attributes_name').brbanks();
13
13
  },
14
14
 
@@ -44,18 +44,18 @@ App.views.PagarmeForm.addChild('PaymentSlip', {
44
44
  }
45
45
  };
46
46
 
47
- $.post('/payment/pagarme/'+that.PagarmeForm.contributionId+'/pay_slip.json', bankAccountAttributes, null, 'json').success(function(response){
47
+ $.post('/payment/pagarme/'+that.PagarmeForm.contributionId+'/pay_slip', bankAccountAttributes).success(function(response){
48
48
  parent.loader.hide();
49
49
  if(response.payment_status == 'failed'){
50
- that.message.find('p').html(response.message);
51
- that.message.fadeIn('fast')
50
+ that.message.find('.message-text').html(response.message);
51
+ that.message.slideDown('slow')
52
52
 
53
53
  $(e.currentTarget).show();
54
54
  } else if(response.boleto_url) {
55
- var link = $('<a target="__blank">'+response.boleto_url+'</a>')
55
+ var link = $('<a class="alt-link" target="__blank">'+response.boleto_url+'</a>')
56
56
  link.attr('href', response.boleto_url);
57
57
  that.$('.link_content').empty().html(link);
58
- that.$('.payment_section:visible .subtitle').fadeIn('fast');
58
+ that.$('#payment-slip-link').slideDown('slow');
59
59
  }
60
60
  });
61
61
  }
@@ -18,7 +18,7 @@ module CatarsePagarme
18
18
  end
19
19
 
20
20
  def get_installment
21
- if contribution.value.to_f < CatarsePagarme.configuration.minimum_value_for_installment.to_f
21
+ if contribution.value < CatarsePagarme.configuration.minimum_value_for_installment
22
22
  1
23
23
  elsif params[:payment_card_installments].to_i > 0
24
24
  params[:payment_card_installments].to_i
@@ -36,9 +36,9 @@ module CatarsePagarme
36
36
  card_expiration_year: splited_month_and_year[1],
37
37
  card_cvv: params[:payment_card_source],
38
38
  amount: delegator.value_with_installment_tax(get_installment),
39
- postback_url: ipn_pagarme_index_url(host: CatarsePagarme.configuration.host,
40
- subdomain: CatarsePagarme.configuration.subdomain,
41
- protocol: CatarsePagarme.configuration.protocol),
39
+ postback_url: ipn_pagarme_url(contribution, host: CatarsePagarme.configuration.host,
40
+ subdomain: CatarsePagarme.configuration.subdomain,
41
+ protocol: CatarsePagarme.configuration.protocol),
42
42
  installments: get_installment,
43
43
  customer: {
44
44
  email: contribution.user.email,
@@ -8,25 +8,12 @@ module CatarsePagarme
8
8
  contribution.payment_notifications.create(extra_data: params.to_json)
9
9
 
10
10
  if PagarMe::validate_fingerprint(contribution.try(:payment_id), params[:fingerprint])
11
-
12
- if params[:current_status] == 'paid' && params[:desired_status] == 'refunded'
13
- contribution.try(:invalid_refund)
14
- else
15
- delegator.change_status_by_transaction(params[:current_status])
16
- delegator.fill_acquirer_data
17
- end
18
-
11
+ delegator.change_status_by_transaction(params[:current_status])
19
12
  return render nothing: true, status: 200
20
13
  end
21
14
  end
22
15
 
23
16
  render nothing: true, status: 404
24
17
  end
25
-
26
- protected
27
-
28
- def contribution
29
- @contribution ||= PaymentEngines.find_payment({ payment_id: params[:id] })
30
- end
31
18
  end
32
19
  end
@@ -21,9 +21,9 @@ module CatarsePagarme
21
21
  payment_method: 'boleto',
22
22
  boleto_expiration_date: 2.days.from_now,
23
23
  amount: delegator.value_for_transaction,
24
- postback_url: ipn_pagarme_index_url(host: CatarsePagarme.configuration.host,
25
- subdomain: CatarsePagarme.configuration.subdomain,
26
- protocol: CatarsePagarme.configuration.protocol),
24
+ postback_url: ipn_pagarme_url(contribution, host: CatarsePagarme.configuration.host,
25
+ subdomain: CatarsePagarme.configuration.subdomain,
26
+ protocol: CatarsePagarme.configuration.protocol),
27
27
  customer: {
28
28
  email: contribution.user.email,
29
29
  name: contribution.user.name
@@ -6,7 +6,7 @@ module CatarsePagarme
6
6
 
7
7
  collection = installments.map do |installment|
8
8
  installment_number = installment[0].to_i
9
- if installment_number <= CatarsePagarme.configuration.max_installments.to_i
9
+ if installment_number <= CatarsePagarme.configuration.max_installments
10
10
  amount = installment[1]['installment_amount'] / 100.0
11
11
 
12
12
  optional_text = nil
@@ -1,7 +1,6 @@
1
1
  module CatarsePagarme
2
2
  class ContributionDelegator
3
3
  attr_accessor :contribution, :transaction
4
- include FeeCalculatorConcern
5
4
 
6
5
  def initialize(contribution)
7
6
  configure_pagarme
@@ -21,15 +20,6 @@ module CatarsePagarme
21
20
  end
22
21
  end
23
22
 
24
- def fill_acquirer_data
25
- if !contribution.acquirer_name.present? || !contribution.acquirer_tid.present?
26
- contribution.update_attributes({
27
- acquirer_name: transaction.acquirer_name,
28
- acquirer_tid: transaction.tid
29
- })
30
- end
31
- end
32
-
33
23
  def refund
34
24
  if contribution.is_credit_card?
35
25
  transaction.refund
@@ -52,10 +42,6 @@ module CatarsePagarme
52
42
  end
53
43
  end
54
44
 
55
- def value_for_installment(installment)
56
- get_installment(installment).try(:[], "installment_amount")
57
- end
58
-
59
45
  def transaction
60
46
  @transaction ||= ::PagarMe::Transaction.find_by_id(self.contribution.payment_id)
61
47
  end
@@ -75,6 +61,16 @@ module CatarsePagarme
75
61
  })
76
62
  end
77
63
 
64
+ def get_fee(payment_method, acquirer_name = nil)
65
+ if payment_method == PaymentType::SLIP
66
+ CatarsePagarme.configuration.slip_tax.to_f
67
+ else
68
+ if acquirer_name != 'cielo'
69
+ (self.contribution.value * CatarsePagarme.configuration.credit_card_tax.to_f) + CatarsePagarme.configuration.credit_card_cents_fee.to_f
70
+ end
71
+ end
72
+ end
73
+
78
74
  protected
79
75
 
80
76
  def bank_account_attributes
@@ -11,7 +11,6 @@ module CatarsePagarme
11
11
 
12
12
  def change_contribution_state
13
13
  self.contribution.update_attributes(attributes_to_contribution)
14
- update_fee
15
14
  self.contribution.payment_notifications.create(extra_data: self.transaction.to_json)
16
15
  delegator.change_status_by_transaction(self.transaction.status)
17
16
  end
@@ -23,22 +22,14 @@ module CatarsePagarme
23
22
  def attributes_to_contribution
24
23
  {
25
24
  payment_choice: payment_method,
25
+ payment_service_fee: delegator.get_fee(payment_method, self.transaction.acquirer_name),
26
26
  payment_id: self.transaction.id,
27
27
  payment_method: 'Pagarme',
28
28
  slip_url: self.transaction.boleto_url,
29
- installments: (self.transaction.installments || 1),
30
- installment_value: (delegator.value_for_installment(self.transaction.installments || 0) / 100.0).to_f,
31
- acquirer_name: self.transaction.acquirer_name,
32
- acquirer_tid: self.transaction.tid
29
+ installments: (self.transaction.installments || 1)
33
30
  }
34
31
  end
35
32
 
36
- def update_fee
37
- self.contribution.update_attributes({
38
- payment_service_fee: delegator.get_fee(payment_method, self.transaction.acquirer_name),
39
- })
40
- end
41
-
42
33
  def delegator
43
34
  self.contribution.pagarme_delegator
44
35
  end
@@ -0,0 +1,6 @@
1
+ .fontsize-smallest.u-text-center.u-marginbottom-30
2
+ | Ao apoiar, você concorda com os
3
+ = link_to 'Termos de Uso', main_app.terms_of_use_path, class: 'alt-link'
4
+ | e
5
+ = link_to 'Política de Privacidade', main_app.privacy_policy_path, class: 'alt-link'
6
+
@@ -3,111 +3,110 @@
3
3
  = form_tag 'javascript:void(0);', :class => 'pagarme' do
4
4
 
5
5
  .next_step_after_valid_document
6
+ .w-row.list_payment.w-form
7
+ .w-col.w-col-7.w-col-small-7.back-payment-moip-options-column
8
+ = radio_button_tag 'payment_type', "credit_card", false, class: 'w-radio-input back-payment-radio-button'
9
+ = label_tag :payment_type_credit_card, nil, class: "cards w-form-label" do
10
+ = image_tag 'catarse_bootstrap/payment_cards.jpg'
11
+ .w-col.w-col-5.w-col-small-5.back-payment-moip-options-column
12
+ = radio_button_tag 'payment_type', "slip", false, class: 'w-radio-input back-payment-radio-button'
13
+ = label_tag :payment_type_slip, class: "boleto w-form-label" do
14
+ = image_tag 'catarse_bootstrap/payment_boleto.jpg'
6
15
 
7
- .list_payment
8
- .input
9
- = radio_button_tag 'payment_type', "credit_card"
10
- = label_tag :payment_type_credit_card, nil, :class => "cards"
11
-
12
- = radio_button_tag 'payment_type', "slip"
13
- = label_tag :payment_type_slip, 'Boleto', :class => "boleto"
14
-
16
+ .formwrapper
15
17
  #payment_type_credit_card_section.payment_section
16
- h3= t('projects.contributions.review.form.labels.payment_card')
17
-
18
- .clearfix
19
-
20
- .bootstrap-twitter style="float: none;"
21
- .alert.alert-danger.hide
22
- p.error_msg
23
- .clearfix
24
-
25
- .clearfix
26
-
27
- .choose_card
28
- ul class="my_credit_cards #{(current_user.credit_cards.present? ? '' : 'hide')}"
29
- - current_user.credit_cards.each_with_index do |credit_card, i|
30
- li.credit_card
31
- .radio_button
32
- = radio_button_tag :payment_subscription_card, credit_card.subscription_id, { checked: (i == 0) }
33
- .select_installments
34
- - if @contribution.value.to_f >= CatarsePagarme.configuration.minimum_value_for_installment.to_f
35
- = select_tag :payment_card_installments, options_for_select(installments_for_select(@contribution))
36
- .card_info
18
+ div[class="my-credit-cards w-form back-payment-form-creditcard formwrapper records-choice #{(current_user.credit_cards.present? ? '' : 'w-hidden')}"]
19
+ - current_user.credit_cards.each_with_index do |credit_card, i|
20
+ .w-row.creditcard-records
21
+ .w-col.w-col-1
22
+ .w-radio.w-clearfix.back-payment-credit-card-radio-field
23
+ = radio_button_tag :payment_subscription_card, credit_card.subscription_id, i == 0, {"data-stored" => true}
24
+ .w-col.w-col-2
25
+ .fontsize-small.fontweight-semibold.text-success
26
+ = credit_card.card_brand.upcase
27
+ .w-col.w-col-5
28
+ .fontsize-small.fontweight-semibold.u-marginbottom-20
37
29
  = "XXXX.XXXX.XXXX.#{credit_card.last_digits}"
38
- .card_brand
39
- = credit_card.card_brand
40
- .clearfix
41
-
42
- .bootstrap-twitter
43
- a href='javascript:void(0)' class="btn use_another-card #{(current_user.credit_cards.present? ? '' : 'hide')}"
44
- | Utilizar outro cartão
45
-
46
- div class="type_card_data #{(current_user.credit_cards.present? ? 'hide' : '')}"
47
- .div
48
- .owner_outside
49
- .owner
50
- ol.inputs
51
- li.name
52
- = label_tag :payment_card_name, t('projects.contributions.edit.form_labels.payment_card_name')
53
- = text_field_tag :payment_card_name, nil
54
- - if @contribution.value.to_f >= CatarsePagarme.configuration.minimum_value_for_installment.to_f
55
- li.cpf
56
- = label_tag :payment_card_installments, t('projects.contributions.edit.form_labels.payment_card_installments')
57
- = select_tag :payment_card_installments, options_for_select(installments_for_select(@contribution))
58
- .div
59
- .infocard_outside
60
- .infocard
61
- ol.inputs
62
- li.number
63
- = label_tag :payment_card_number, t('projects.contributions.edit.form_labels.payment_card_number')
64
- = text_field_tag :payment_card_number, nil
65
- li.flag
66
- = label_tag :payment_card_flag, t('projects.contributions.edit.form_labels.payment_card_flag')
67
- = text_field_tag :payment_card_flag, nil, { disabled: true }
68
- li.source
69
- = label_tag :payment_card_source, t('projects.contributions.edit.form_labels.payment_card_source')
70
- = text_field_tag :payment_card_source, nil
71
- li.date
72
- = label_tag :payment_card_date, t('projects.contributions.edit.form_labels.payment_card_date')
73
- = text_field_tag :payment_card_date, nil
74
-
75
- .clearfix
76
- .bootstrap-twitter
77
- div class="save_card #{(current_user.credit_cards.present? ? 'hide' : '')}"
78
- = check_box_tag :payment_save_card, 1, false
79
- = label_tag :payment_save_card, t('projects.contributions.edit.payment_save_card')
80
- .loader.hide= image_tag('loading.gif')
81
- .clearfix
82
- = submit_tag t('projects.contributions.review.form.labels.submit'), :class => 'btn btn-primary btn-large', :id => "credit_card_submit"
83
-
84
- #payment_type_slip_section.hide.payment_section
85
- h3= t('projects.contributions.review.form.labels.payment_boleto')
86
- .clearfix
87
- .bootstrap-twitter style="float: none;"
88
- .alert.alert-danger.hide
89
- p.error_msg
90
- .clearfix
91
- .bootstrap-twitter
92
- .bootstrap-form
93
-
94
- .bootstrap-alert
95
- .alert.credit_alert
96
- = t('users.current_user_fields.bank_account_hint')
30
+ .w-col.w-col-4
31
+ = select_tag :payment_card_installments, options_for_select(installments_for_select(@contribution)), class: 'w-select text-field text-field-creditcard'
32
+ .w-row.creditcard-records
33
+ .w-col.w-col-1
34
+ .w-radio.w-clearfix.back-payment-credit-card-radio-field
35
+ = radio_button_tag :payment_subscription_card, 0
36
+ .w-col.w-col-11
37
+ .fontsize-small.fontweight-semibold.fontcolor-secondary
38
+ = t('projects.contributions.edit.form_labels.user_another_card')
39
+ div[class="w-form formwrapper type_card_data #{(current_user.credit_cards.present? ? 'w-hidden' : '')}"]
40
+ .w-row
41
+ .w-col.w-col-12
42
+ .field-label.fontweight-semibold
43
+ = label_tag :payment_card_name, t('projects.contributions.edit.form_labels.payment_card_name'), class: 'field-label fontweight-semibold'
44
+ = text_field_tag :payment_card_name, nil, class: 'w-input text-field'
45
+ .w-row
46
+ .w-col.w-col-6.w-sub-col
47
+ = label_tag :payment_card_number, t('projects.contributions.edit.form_labels.payment_card_number'), class: 'fontweight-semibold field-label'
48
+ .card-brand.prefix.text-field
49
+ #payment_card_flag.fontsize-smallest.fontcolor-secondary.u-text-center
50
+ |&nbsp;
51
+ .card-number
52
+ = text_field_tag :payment_card_number, nil, class: 'w-input text-field postfix'
53
+ .w-col.w-col-6
54
+ .w-row
55
+ .w-col.w-col-6.w-col-small-6.w-col-tiny-6.w-sub-col-middle
56
+ = label_tag :payment_card_source, t('projects.contributions.edit.form_labels.payment_card_source'), class: 'field-label fontweight-semibold'
57
+ = text_field_tag :payment_card_source, nil, class: 'w-input text-field'
58
+ .w-col.w-col-6.w-col-small-6.w-col-tiny-6
59
+ = label_tag :payment_card_date, t('projects.contributions.edit.form_labels.payment_card_date'), class: 'field-label fontweight-semibold'
60
+ = text_field_tag :payment_card_date, nil, class: 'w-input text-field'
61
+ - if @contribution.value >= CatarsePagarme.configuration.minimum_value_for_installment
62
+ .w-row
63
+ .w-col.w-col-6.w-sub-col
64
+ = label_tag :payment_card_installments, t('projects.contributions.edit.form_labels.payment_card_installments'), class: 'field-label fontweight-semibold'
65
+ = select_tag :payment_card_installments, options_for_select(installments_for_select(@contribution)), class: 'w-select text-field'
66
+ .w-checkbox.w-clearfix
67
+ = check_box_tag :payment_save_card, 1, false, class: 'w-checkbox-input'
68
+ = label_tag :payment_save_card, t('projects.contributions.edit.payment_save_card'), class: 'w-form-label'
69
+ .w-row
70
+ .w-col.w-col-12
71
+ .payment-error-message.card.card-error.u-radius.zindex-10.u-marginbottom-30.w-hidden
72
+ .fontsize-smaller.fontweight-bold.u-marginbottom-10= t('projects.contributions.edit.review_errors_title')
73
+ .message-text.fontsize-smaller = t('.review_errors')
74
+ .w-row
75
+ .w-col.w-col-push-3.w-col-6
76
+ #card-loading.loader.u-text-center.w-col.w-col-12.u-marginbottom-30 = image_tag "catarse_bootstrap/loader.gif"
77
+ = submit_tag t('projects.contributions.review.form.labels.submit'), :class => 'btn btn-large u-marginbottom-20', :id => "credit_card_submit"
78
+ = render partial: 'terms'
97
79
 
98
- = simple_form_for current_user, url: 'javascript:void(0)' do |f|
99
- .bank_accounts
100
- = f.simple_fields_for :bank_account do |bank_form|
101
- = bank_form.input :bank_id, as: :select, collection: Bank.to_collection, input_html: { style: 'width: 150px' }
102
- = bank_form.input :agency, as: :string
103
- = bank_form.input :agency_digit, as: :string
104
- = bank_form.input :account, as: :string
105
- = bank_form.input :account_digit, as: :string
106
- = bank_form.input :owner_name, as: :string, input_html: { value: bank_form.object.owner_name || current_user.full_name }
107
- = bank_form.input :owner_document, as: :string, input_html: { value: bank_form.object.owner_document || current_user.cpf }
108
- .clearfix
109
- .loader.hide= image_tag('loading.gif')
110
- = submit_tag t('projects.contributions.review.form.labels.build_boleto'), :class => 'btn btn-primary btn-large', :id => "build_boleto"
111
- .clearfix
112
- p.subtitle.hide= t('projects.contributions.review.form.labels.payment_boleto_subtitle')
113
- .link_content
80
+ #payment_type_slip_section.payment_section.w-hidden
81
+ = simple_form_for current_user, url: 'javascript:void(0)' do |f|
82
+ .bank_accounts
83
+ = f.simple_fields_for :bank_account do |bank_form|
84
+ .w-row
85
+ = bank_form.input :bank_id, as: :select, collection: Bank.order(:code, :name).to_collection, wrapper_html: {class: 'w-col w-col-12'}
86
+ .w-row
87
+ = bank_form.input :agency, as: :string, wrapper_html: {class: 'w-col w-sub-col-middle w-col-4 w-col-small-8'}
88
+ = bank_form.input :agency_digit, as: :string, wrapper_html: {class: 'w-col w-sub-col-middle w-sub-col w-col-2 w-col-small-4'}
89
+ = bank_form.input :account, as: :string, wrapper_html: {class: 'w-col w-sub-col-middle w-col-4 w-col-small-8'}
90
+ = bank_form.input :account_digit, as: :string, wrapper_html: {class: 'w-col w-col-2 w-col-small-4'}
91
+ .w-row
92
+ = bank_form.input :owner_name, as: :string, input_html: { value: bank_form.object.owner_name || current_user.full_name }, wrapper_html: {class: 'w-col w-sub-col w-col-6'}
93
+ = bank_form.input :owner_document, as: :string, input_html: { value: bank_form.object.owner_document || current_user.cpf }, wrapper_html: {class: 'w-col w-col-6'}
94
+ .w-row
95
+ .w-col.w-col-12
96
+ .card.card-message.u-radius.fontsize-small.zindex-10.u-marginbottom-30
97
+ | Após clicar no botão abaixo, você receberá um link com o boleto para completar o pagamento.
98
+ .w-row
99
+ .w-col.w-col-12
100
+ .payment-error-message.card.card-error.u-radius.zindex-10.u-marginbottom-30.w-hidden
101
+ .fontsize-smaller.fontweight-bold.u-marginbottom-10= t('projects.contributions.edit.review_errors_title')
102
+ .message-text.fontsize-smaller = t('.review_errors')
103
+ .w-row
104
+ .w-col.w-col-12
105
+ #payment-slip-link.card.card-message.fontsize-small.u-radius.u-marginbottom-30.zindex-10.w-hidden
106
+ .link_content.fontsize-smaller
107
+ .fontsize-smaller Você também receberá um email com esse boleto.
108
+ .w-row
109
+ .w-col.w-col-push-3.w-col-6
110
+ #card-loading.loader.u-text-center.w-col.w-col-12.u-marginbottom-30 = image_tag "catarse_bootstrap/loader.gif"
111
+ = submit_tag t('projects.contributions.review.form.labels.build_boleto'), :class => 'btn btn-large u-marginbottom-20', :id => "build_boleto"
112
+ = render partial: 'terms'
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
19
19
 
20
20
  s.add_dependency "rails", "~> 4.0"
21
- s.add_dependency "pagarme", "~> 1.9.9"
21
+ s.add_dependency "pagarme", "~> 1.9.5"
22
22
 
23
23
  s.add_development_dependency "rspec-rails", "~> 2.14.0"
24
24
  s.add_development_dependency "factory_girl_rails"
data/config/routes.rb CHANGED
@@ -4,15 +4,12 @@ CatarsePagarme::Engine.routes.draw do
4
4
  member do
5
5
  get :review
6
6
  put :second_slip, to: 'slip#update'
7
+ post :ipn, to: 'notifications#create'
7
8
  post :pay_credit_card, to: 'credit_cards#create'
8
9
  post :pay_slip, to: 'slip#create'
9
10
  post :pay_with_subscription, to: 'subscriptions#create'
10
11
  put :pay_with_subscription, to: 'subscriptions#update'
11
12
  end
12
13
 
13
- collection do
14
- post :ipn, to: 'notifications#create'
15
- end
16
-
17
14
  end
18
15
  end
@@ -1,9 +1,7 @@
1
1
  module CatarsePagarme
2
2
  class Configuration
3
3
  attr_accessor :api_key, :slip_tax, :credit_card_tax, :interest_rate, :host, :subdomain, :protocol,
4
- :max_installments, :minimum_value_for_installment, :credit_card_cents_fee, :pagarme_tax, :stone_tax,
5
- :cielo_tax, :cielo_installment_diners_tax, :cielo_installment_not_diners_tax,
6
- :cielo_installment_amex_tax, :cielo_installment_not_amex_tax
4
+ :max_installments, :minimum_value_for_installment, :credit_card_cents_fee
7
5
 
8
6
  def initialize
9
7
  self.api_key = ''
@@ -16,13 +14,6 @@ module CatarsePagarme
16
14
  self.host = 'catarse.me'
17
15
  self.subdomain = 'www'
18
16
  self.protocol = 'http'
19
- self.pagarme_tax = 0.0063
20
- self.stone_tax = 0.0307
21
- self.cielo_tax = 0.038
22
- self.cielo_installment_diners_tax = 0.048
23
- self.cielo_installment_not_diners_tax = 0.0455
24
- self.cielo_installment_amex_tax = 0.058
25
- self.cielo_installment_not_amex_tax = 0.048
26
17
  end
27
18
  end
28
19
  end
@@ -1,3 +1,3 @@
1
1
  module CatarsePagarme
2
- VERSION = "1.5.3"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -27,12 +27,12 @@ describe CatarsePagarme::CreditCardsController do
27
27
  before do
28
28
  post :create, {
29
29
  locale: :pt, project_id: project.id, contribution_id: contribution.id, use_route: 'catarse_pagarme',
30
- payment_card_date: '10/17', payment_card_number: '4012888888881881', payment_card_name: 'Foo bar',
31
- payment_card_source: '574', payment_card_installments: '1' }
30
+ payment_card_date: '10/17', payment_card_number: '4901720080344448', payment_card_name: 'Foo bar',
31
+ payment_card_source: '143', payment_card_installments: '1' }
32
32
 
33
33
  end
34
34
 
35
- it 'payment_status should be filled' do
35
+ it 'payment_status should be filled and not failed' do
36
36
  expect(ActiveSupport::JSON.decode(response.body)['payment_status']).not_to be_nil
37
37
  end
38
38
 
@@ -1,20 +1,12 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe CatarsePagarme::NotificationsController do
4
- let(:fake_transaction) {
5
- t = double
6
- t.stub(:card_brand).and_return('visa')
7
- t.stub(:acquirer_name).and_return('stone')
8
- t.stub(:tid).and_return('404040404')
9
- t
10
- }
11
4
  before do
12
5
  PagarMe.stub(:validate_fingerprint).and_return(true)
13
- PagarMe::Transaction.stub(:find_by_id).and_return(fake_transaction)
14
6
  end
15
7
 
16
8
  let(:project) { create(:project, goal: 10_000, state: 'online') }
17
- let(:contribution) { create(:contribution, value: 10, project: project, payment_id: 'abcd') }
9
+ let(:contribution) { create(:contribution, value: 10, project: project) }
18
10
  let(:credit_card) { create(:credit_card, subscription_id: '1542')}
19
11
 
20
12
  describe 'CREATE' do
@@ -32,7 +24,7 @@ describe CatarsePagarme::NotificationsController do
32
24
  context "with valid contribution" do
33
25
  before do
34
26
  PaymentEngines.stub(:find_payment).and_return(contribution)
35
- post :create, { locale: :pt, id: 'abcd', use_route: 'catarse_pagarme' }
27
+ post :create, { locale: :pt, id: contribution.id, use_route: 'catarse_pagarme' }
36
28
  end
37
29
 
38
30
  it "should save an extra_data into payment_notifications" do
@@ -30,22 +30,9 @@ describe CatarsePagarme::ContributionDelegator do
30
30
  end
31
31
 
32
32
  context "#get_fee" do
33
- let(:fake_transaction) {
34
- t = double
35
- t.stub(:card_brand).and_return('visa')
36
- t.stub(:acquirer_name).and_return('stone')
37
- t.stub(:acquirer_tid).and_return('404040404')
38
- t
39
- }
40
-
41
33
  before do
42
34
  CatarsePagarme.configuration.stub(:slip_tax).and_return(2.00)
43
35
  CatarsePagarme.configuration.stub(:credit_card_tax).and_return(0.01)
44
- CatarsePagarme.configuration.stub(:pagarme_tax).and_return(0.0063)
45
- CatarsePagarme.configuration.stub(:cielo_tax).and_return(0.038)
46
- CatarsePagarme.configuration.stub(:stone_tax).and_return(0.0307)
47
-
48
- delegator.stub(:transaction).and_return(fake_transaction)
49
36
  end
50
37
 
51
38
  context 'when choice is slip' do
@@ -55,7 +42,7 @@ describe CatarsePagarme::ContributionDelegator do
55
42
 
56
43
  context 'when choice is credit card' do
57
44
  subject { delegator.get_fee(CatarsePagarme::PaymentType::CREDIT_CARD).to_f }
58
- it { expect(subject).to eq(0.83) }
45
+ it { expect(subject).to eq(0.49) }
59
46
  end
60
47
  end
61
48
 
@@ -11,7 +11,6 @@ describe CatarsePagarme::CreditCardTransaction do
11
11
  transaction.stub(:boleto_url).and_return(nil)
12
12
  transaction.stub(:installments).and_return(3)
13
13
  transaction.stub(:acquirer_name).and_return('stone')
14
- transaction.stub(:tid).and_return('123123')
15
14
  transaction
16
15
  }
17
16
 
@@ -40,7 +39,7 @@ describe CatarsePagarme::CreditCardTransaction do
40
39
  describe '#charge!' do
41
40
  describe 'with valid attributes' do
42
41
  before do
43
- contribution.should_receive(:update_attributes).at_least(1).and_call_original
42
+ contribution.should_receive(:update_attributes).and_call_original
44
43
  CatarsePagarme::ContributionDelegator.any_instance.should_receive(:change_status_by_transaction).with('paid')
45
44
 
46
45
  card_transaction.charge!
@@ -52,7 +51,7 @@ describe CatarsePagarme::CreditCardTransaction do
52
51
  end
53
52
 
54
53
  it "should update contribution payment_service_fee" do
55
- expect(contribution.payment_service_fee.to_f).to eq(4.08)
54
+ expect(contribution.payment_service_fee.to_f).to eq(1.39)
56
55
  end
57
56
 
58
57
  it "should update contribution payment_method" do
@@ -66,18 +65,6 @@ describe CatarsePagarme::CreditCardTransaction do
66
65
  it "should update contribution payment_choice" do
67
66
  expect(contribution.payment_choice).to eq(CatarsePagarme::PaymentType::CREDIT_CARD)
68
67
  end
69
-
70
- it "should update contribution acquirer_name" do
71
- expect(contribution.acquirer_name).to eq('stone')
72
- end
73
-
74
- it "should update contribution acquirer_tid" do
75
- expect(contribution.acquirer_tid).to eq('123123')
76
- end
77
-
78
- it "should update contribution installment_value" do
79
- expect(contribution.installment_value).to_not be_nil
80
- end
81
68
  end
82
69
  end
83
70
 
@@ -8,9 +8,8 @@ describe CatarsePagarme::SlipTransaction do
8
8
  transaction.stub(:charge).and_return(true)
9
9
  transaction.stub(:status).and_return('paid')
10
10
  transaction.stub(:boleto_url).and_return('boleto url')
11
- transaction.stub(:installments).and_return(1)
11
+ transaction.stub(:installments).and_return(nil)
12
12
  transaction.stub(:acquirer_name).and_return('pagarme')
13
- transaction.stub(:tid).and_return('123123')
14
13
  transaction
15
14
  }
16
15
  let(:valid_attributes) do
@@ -72,7 +71,7 @@ describe CatarsePagarme::SlipTransaction do
72
71
  before do
73
72
  slip_transaction.should_receive(:update_user_bank_account).and_call_original
74
73
  slip_transaction.user.should_receive(:update_attributes).and_return(true)
75
- contribution.should_receive(:update_attributes).at_least(1).and_call_original
74
+ contribution.should_receive(:update_attributes).and_call_original
76
75
  CatarsePagarme::ContributionDelegator.any_instance.should_receive(:change_status_by_transaction).with('paid')
77
76
 
78
77
  slip_transaction.charge!
@@ -98,18 +97,6 @@ describe CatarsePagarme::SlipTransaction do
98
97
  it "should update contribution payment_choice" do
99
98
  expect(contribution.payment_choice).to eq(CatarsePagarme::PaymentType::SLIP)
100
99
  end
101
-
102
- it "should update contribution acquirer_name" do
103
- expect(contribution.acquirer_name).to eq('pagarme')
104
- end
105
-
106
- it "should update contribution acquirer_tid" do
107
- expect(contribution.acquirer_tid).to eq('123123')
108
- end
109
-
110
- it "should update contribution installment_value" do
111
- expect(contribution.installment_value).to_not be_nil
112
- end
113
100
  end
114
101
  end
115
102
 
data/spec/spec_helper.rb CHANGED
@@ -30,7 +30,7 @@ RSpec.configure do |config|
30
30
  end
31
31
 
32
32
  config.before(:each) do
33
- PagarMe.stub(:api_key).and_return('ak_test_XLoo19QDn9kg5JFGU70x12IA4NqbAv')
33
+ PagarMe.stub(:api_key).and_return('ak_test_Rw4JR98FmYST2ngEHtMvVf5QJW7Eoo')
34
34
  PaymentEngines.stub(:configuration).and_return({})
35
35
  end
36
36
  end
@@ -32,19 +32,14 @@ FactoryGirl.define do
32
32
  f.name_pt { generate(:name) }
33
33
  end
34
34
 
35
- factory :bank do |f|
36
- f.name { generate(:uid) }
37
- f.code { generate(:uid) }
38
- end
39
-
40
35
  factory :bank_account do |f|
41
- f.association :bank
36
+ f.name 'Foo bar'
42
37
  f.account '1234'
43
38
  f.account_digit '1'
44
39
  f.agency '1'
45
40
  f.agency_digit '2'
46
- f.owner_name 'fooo'
47
- f.owner_document '9889'
41
+ f.user_name 'fooo'
42
+ f.user_document '9889'
48
43
  end
49
44
 
50
45
  factory :project do |f|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: catarse_pagarme
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.3
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Antônio Roberto Silva
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-01-26 00:00:00.000000000 Z
12
+ date: 2014-10-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 1.9.9
34
+ version: 1.9.5
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 1.9.9
41
+ version: 1.9.5
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rspec-rails
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -110,18 +110,17 @@ files:
110
110
  - app/controllers/catarse_pagarme/slip_controller.rb
111
111
  - app/controllers/catarse_pagarme/subscriptions_controller.rb
112
112
  - app/helpers/catarse_pagarme/application_helper.rb
113
- - app/models/catarse_pagarme/bank_account_concern.rb
114
113
  - app/models/catarse_pagarme/contribution_concern.rb
115
114
  - app/models/catarse_pagarme/contribution_delegator.rb
116
115
  - app/models/catarse_pagarme/credit_card_concern.rb
117
116
  - app/models/catarse_pagarme/credit_card_delegator.rb
118
117
  - app/models/catarse_pagarme/credit_card_transaction.rb
119
- - app/models/catarse_pagarme/fee_calculator_concern.rb
120
118
  - app/models/catarse_pagarme/payment_type.rb
121
119
  - app/models/catarse_pagarme/save_credit_card_transaction.rb
122
120
  - app/models/catarse_pagarme/slip_transaction.rb
123
121
  - app/models/catarse_pagarme/subscription_transaction.rb
124
122
  - app/models/catarse_pagarme/transaction_base.rb
123
+ - app/views/catarse_pagarme/pagarme/_terms.html.slim
125
124
  - app/views/catarse_pagarme/pagarme/review.html.slim
126
125
  - app/views/layouts/catarse_pagarme/application.html.erb
127
126
  - bin/rails
@@ -191,7 +190,6 @@ files:
191
190
  - spec/dummy/public/500.html
192
191
  - spec/dummy/public/favicon.ico
193
192
  - spec/helpers/catarse_pagarme/application_helper_spec.rb
194
- - spec/models/catarse_pagarme/bank_account_concern_spec.rb
195
193
  - spec/models/catarse_pagarme/contribution_delegator_spec.rb
196
194
  - spec/models/catarse_pagarme/credit_card_transaction_spec.rb
197
195
  - spec/models/catarse_pagarme/slip_transaction_spec.rb
@@ -278,7 +276,6 @@ test_files:
278
276
  - spec/dummy/public/500.html
279
277
  - spec/dummy/public/favicon.ico
280
278
  - spec/helpers/catarse_pagarme/application_helper_spec.rb
281
- - spec/models/catarse_pagarme/bank_account_concern_spec.rb
282
279
  - spec/models/catarse_pagarme/contribution_delegator_spec.rb
283
280
  - spec/models/catarse_pagarme/credit_card_transaction_spec.rb
284
281
  - spec/models/catarse_pagarme/slip_transaction_spec.rb
@@ -1,58 +0,0 @@
1
- module CatarsePagarme::BankAccountConcern
2
- extend ActiveSupport::Concern
3
-
4
- included do
5
-
6
- validate :must_be_valid_on_pagarme
7
-
8
- def must_be_valid_on_pagarme
9
- pagarme_errors.each do |p_error|
10
- _attr = attributes_parsed_from_pagarme[p_error.parameter_name.to_sym]
11
- errors.add(_attr, :invalid)
12
- end
13
- end
14
-
15
- private
16
-
17
- def pagarme_errors
18
- configure_pagarme
19
- bank_account = ::PagarMe::BankAccount.new(attributes_parsed_to_pagarme)
20
-
21
- begin
22
- bank_account.create
23
-
24
- []
25
- rescue Exception => e
26
- e.errors
27
- end
28
- end
29
-
30
- def attributes_parsed_to_pagarme
31
- {
32
- bank_code: self.bank.try(:code),
33
- agencia: self.agency,
34
- agencia_dv: self.agency_digit,
35
- conta: self.account,
36
- conta_dv: self.account_digit,
37
- legal_name: self.owner_name,
38
- document_number: self.owner_document
39
- }
40
- end
41
-
42
- def attributes_parsed_from_pagarme
43
- {
44
- bank_code: :bank,
45
- agencia: :agency,
46
- agencia_dv: :agency_digit,
47
- conta: :account,
48
- conta_dv: :account_digit,
49
- legal_name: :owner_name,
50
- document_number: :owner_document
51
- }
52
- end
53
-
54
- def configure_pagarme
55
- ::PagarMe.api_key = CatarsePagarme.configuration.api_key
56
- end
57
- end
58
- end
@@ -1,66 +0,0 @@
1
- module CatarsePagarme::FeeCalculatorConcern
2
- extend ActiveSupport::Concern
3
-
4
- included do
5
-
6
- def get_fee(payment_method, acquirer_name = nil)
7
- if payment_method == ::CatarsePagarme::PaymentType::SLIP
8
- CatarsePagarme.configuration.slip_tax.to_f
9
- else
10
- if acquirer_name == 'stone'
11
- self.contribution.installments > 1 ? tax_calc_for_installment(stone_tax) : tax_calc(stone_tax)
12
- else
13
- if self.transaction.card_brand == 'amex'
14
- self.contribution.installments > 1 ? tax_calc_for_installment(cielo_installment_amex_tax) : tax_calc(cielo_installment_not_amex_tax)
15
- else
16
- current_tax = self.transaction.card_brand == 'diners' ? installment_diners_tax : installment_not_diners_tax
17
- self.contribution.installments > 1 ? tax_calc_for_installment(current_tax) : tax_calc(cielo_tax)
18
- end
19
- end
20
- end
21
- end
22
-
23
- protected
24
-
25
- def tax_calc acquirer_tax
26
- ((self.contribution.value * pagarme_tax) + cents_fee).round(2) + (self.contribution.value * acquirer_tax).round(2)
27
- end
28
-
29
- def tax_calc_for_installment acquirer_tax
30
- (((self.contribution.installment_value * self.contribution.installments) * pagarme_tax) + cents_fee).round(2) + ((self.contribution.installment_value * acquirer_tax).round(2) * self.contribution.installments)
31
- end
32
-
33
- def cents_fee
34
- CatarsePagarme.configuration.credit_card_cents_fee.to_f
35
- end
36
-
37
- def pagarme_tax
38
- CatarsePagarme.configuration.pagarme_tax.to_f
39
- end
40
-
41
- def cielo_tax
42
- CatarsePagarme.configuration.cielo_tax.to_f
43
- end
44
-
45
- def stone_tax
46
- CatarsePagarme.configuration.stone_tax.to_f
47
- end
48
-
49
- def installment_diners_tax
50
- CatarsePagarme.configuration.cielo_installment_diners_tax.to_f
51
- end
52
-
53
- def installment_not_diners_tax
54
- CatarsePagarme.configuration.cielo_installment_not_diners_tax.to_f
55
- end
56
-
57
- def cielo_installment_amex_tax
58
- CatarsePagarme.configuration.cielo_installment_amex_tax.to_f
59
- end
60
-
61
- def cielo_installment_not_amex_tax
62
- CatarsePagarme.configuration.cielo_installment_not_amex_tax.to_f
63
- end
64
-
65
- end
66
- end
@@ -1,46 +0,0 @@
1
- require 'spec_helper'
2
-
3
- class FakeBankAccount < BankAccount
4
- include CatarsePagarme::BankAccountConcern
5
- end
6
-
7
- describe FakeBankAccount do
8
- let(:bank) { create(:bank) }
9
-
10
- let(:valid_attr) do
11
- vb = build(:bank_account, bank: bank)
12
- vb.attributes
13
- end
14
-
15
- let(:valid_attr_on_pagarme) do
16
- {
17
- bank_id: bank.id,
18
- agency: '1732',
19
- agency_dv: '8',
20
- account: '25483',
21
- account_dv: 'X',
22
- owner_name: 'Lorem Ipsum',
23
- owner_document: '111.111.111-11'
24
- }
25
- end
26
-
27
- describe "validate :must_be_valid_on_pagarme" do
28
- context "when bank account has invalid data on pagarme" do
29
- let(:bank_account_on_pagarme) { FakeBankAccount.new(valid_attr) }
30
- let(:local_bank_account) { BankAccount.new(valid_attr) }
31
-
32
- it "local_bank_account should be valid" do
33
- expect(local_bank_account.valid?).to be_true
34
- end
35
-
36
- it "bank_account_on_pagarme should be not valid with these attrs" do
37
- expect(bank_account_on_pagarme.valid?).to be_false
38
- end
39
-
40
- it "bank_account_on_pagarme should be valid with another attrs" do
41
- subject { FakeBankAccount.new(valid_attr_on_pagarme).valid? }
42
- expect(subject).to be_true
43
- end
44
- end
45
- end
46
- end