catarse_pagarme 2.3.10 → 2.4.0

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: 18c70a97dc75f3a4393f18ffbd3556b608c38aba
4
- data.tar.gz: ab7d9147e8269bf844398bf7d7fbb2f4002734be
3
+ metadata.gz: 415da7334098845435424c47e308397ebbcf1250
4
+ data.tar.gz: 0801a8de19aae2c980fd9b44407c3975120883a6
5
5
  SHA512:
6
- metadata.gz: b26e1eff2c24abe6cc908bc18f92a67f86deffd54fcd97ca991e4530a7539edb44aebe9481d53cbdfdd1dc4e7f6f7e2f55e9d4b3bbb9837add666039d4801ee2
7
- data.tar.gz: 648ed04c24df704b038dbf9bda2556f747b4a59ef8172e5dbb86421c1747714a027df8fb1c030919872f719780d29a1da01ce7152d235bf27beafaa58269eaea
6
+ metadata.gz: 56a44204b6cd1feb1edf0546859e16681a49b8dae1a8d6741e87e0093189e751fae2d4229a689348dd7899714986d9eb8f0215e45f80be2c7389f99a539ea85f
7
+ data.tar.gz: 7fe2f172eac029cc469ea9651e3b23c891b874b11fbb2c1d911117076c208b455d7f23a206132f492c227f97a3062d33464cc6bf916b43ba1c0fd20aeafc6051
@@ -1,6 +1,7 @@
1
1
  module CatarsePagarme
2
2
  class ContributionDelegator
3
3
  attr_accessor :contribution, :transaction
4
+ include FeeCalculatorConcern
4
5
 
5
6
  def initialize(contribution)
6
7
  configure_pagarme
@@ -74,34 +75,6 @@ module CatarsePagarme
74
75
  })
75
76
  end
76
77
 
77
- def get_fee(payment_method, acquirer_name = nil)
78
- value = self.contribution.value
79
- installment_value = self.contribution.installment_value
80
- installments = self.contribution.installments
81
- cents_fee = CatarsePagarme.configuration.credit_card_cents_fee.to_f
82
- pagarme_tax = CatarsePagarme.configuration.pagarme_tax.to_f
83
- cielo_tax = CatarsePagarme.configuration.cielo_tax.to_f
84
- stone_tax = CatarsePagarme.configuration.stone_tax.to_f
85
-
86
- if payment_method == PaymentType::SLIP
87
- CatarsePagarme.configuration.slip_tax.to_f
88
- else
89
- if acquirer_name == 'stone'
90
- if installments > 1
91
- (((installment_value * installments) * pagarme_tax) + cents_fee).round(2) + ((installment_value * stone_tax).round(2) * installments)
92
- else
93
- ((value * pagarme_tax) + cents_fee).round(2) + (value * stone_tax).round(2)
94
- end
95
- else
96
- if installments > 1
97
- (((installment_value * installments) * pagarme_tax) + cents_fee).round(2) + ((installment_value * cielo_tax).round(2) * installments)
98
- else
99
- ((value * pagarme_tax) + cents_fee).round(2) + (value * cielo_tax).round(2)
100
- end
101
- end
102
- end
103
- end
104
-
105
78
  protected
106
79
 
107
80
  def bank_account_attributes
@@ -0,0 +1,54 @@
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
+ current_tax = self.transaction.card_brand == 'diners' ? installment_diners_tax : installment_not_diners_tax
14
+ self.contribution.installments > 1 ? tax_calc_for_installment(current_tax) : tax_calc(cielo_tax)
15
+ end
16
+ end
17
+ end
18
+
19
+ protected
20
+
21
+ def tax_calc acquirer_tax
22
+ ((self.contribution.value * pagarme_tax) + cents_fee).round(2) + (self.contribution.value * acquirer_tax).round(2)
23
+ end
24
+
25
+ def tax_calc_for_installment acquirer_tax
26
+ (((self.contribution.installment_value * self.contribution.installments) * pagarme_tax) + cents_fee).round(2) + ((self.contribution.installment_value * acquirer_tax).round(2) * self.contribution.installments)
27
+ end
28
+
29
+ def cents_fee
30
+ CatarsePagarme.configuration.credit_card_cents_fee.to_f
31
+ end
32
+
33
+ def pagarme_tax
34
+ CatarsePagarme.configuration.pagarme_tax.to_f
35
+ end
36
+
37
+ def cielo_tax
38
+ CatarsePagarme.configuration.cielo_tax.to_f
39
+ end
40
+
41
+ def stone_tax
42
+ CatarsePagarme.configuration.stone_tax.to_f
43
+ end
44
+
45
+ def installment_diners_tax
46
+ CatarsePagarme.configuration.cielo_installment_diners_tax.to_f
47
+ end
48
+
49
+ def installment_not_diners_tax
50
+ CatarsePagarme.configuration.cielo_installment_not_diners_tax.to_f
51
+ end
52
+
53
+ end
54
+ end
@@ -11,6 +11,7 @@ module CatarsePagarme
11
11
 
12
12
  def change_contribution_state
13
13
  self.contribution.update_attributes(attributes_to_contribution)
14
+ update_fee
14
15
  self.contribution.payment_notifications.create(extra_data: self.transaction.to_json)
15
16
  delegator.change_status_by_transaction(self.transaction.status)
16
17
  end
@@ -22,7 +23,6 @@ module CatarsePagarme
22
23
  def attributes_to_contribution
23
24
  {
24
25
  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,
@@ -33,6 +33,12 @@ module CatarsePagarme
33
33
  }
34
34
  end
35
35
 
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
+
36
42
  def delegator
37
43
  self.contribution.pagarme_delegator
38
44
  end
@@ -1,7 +1,8 @@
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, :cielo_tax
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
5
6
 
6
7
  def initialize
7
8
  self.api_key = ''
@@ -17,6 +18,8 @@ module CatarsePagarme
17
18
  self.pagarme_tax = 0.0063
18
19
  self.stone_tax = 0.0307
19
20
  self.cielo_tax = 0.038
21
+ self.cielo_installment_diners_tax = 0.048
22
+ self.cielo_installment_not_diners_tax = 0.0455
20
23
  end
21
24
  end
22
25
  end
@@ -1,3 +1,3 @@
1
1
  module CatarsePagarme
2
- VERSION = "2.3.10"
2
+ VERSION = "2.4.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: '4901720080344448', payment_card_name: 'Foo bar',
31
- payment_card_source: '143', payment_card_installments: '1' }
30
+ payment_card_date: '10/17', payment_card_number: '4012888888881881', payment_card_name: 'Foo bar',
31
+ payment_card_source: '574', payment_card_installments: '1' }
32
32
 
33
33
  end
34
34
 
35
- it 'payment_status should be filled and not failed' do
35
+ it 'payment_status should be filled' do
36
36
  expect(ActiveSupport::JSON.decode(response.body)['payment_status']).not_to be_nil
37
37
  end
38
38
 
@@ -1,8 +1,16 @@
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
+ }
4
11
  before do
5
12
  PagarMe.stub(:validate_fingerprint).and_return(true)
13
+ PagarMe::Transaction.stub(:find_by_id).and_return(fake_transaction)
6
14
  end
7
15
 
8
16
  let(:project) { create(:project, goal: 10_000, state: 'online') }
@@ -30,12 +30,22 @@ 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
+
33
41
  before do
34
42
  CatarsePagarme.configuration.stub(:slip_tax).and_return(2.00)
35
43
  CatarsePagarme.configuration.stub(:credit_card_tax).and_return(0.01)
36
44
  CatarsePagarme.configuration.stub(:pagarme_tax).and_return(0.0063)
37
45
  CatarsePagarme.configuration.stub(:cielo_tax).and_return(0.038)
38
46
  CatarsePagarme.configuration.stub(:stone_tax).and_return(0.0307)
47
+
48
+ delegator.stub(:transaction).and_return(fake_transaction)
39
49
  end
40
50
 
41
51
  context 'when choice is slip' do
@@ -40,7 +40,7 @@ describe CatarsePagarme::CreditCardTransaction do
40
40
  describe '#charge!' do
41
41
  describe 'with valid attributes' do
42
42
  before do
43
- contribution.should_receive(:update_attributes).and_call_original
43
+ contribution.should_receive(:update_attributes).at_least(1).and_call_original
44
44
  CatarsePagarme::ContributionDelegator.any_instance.should_receive(:change_status_by_transaction).with('paid')
45
45
 
46
46
  card_transaction.charge!
@@ -52,7 +52,7 @@ describe CatarsePagarme::CreditCardTransaction do
52
52
  end
53
53
 
54
54
  it "should update contribution payment_service_fee" do
55
- expect(contribution.payment_service_fee.to_f).to eq(1.39)
55
+ expect(contribution.payment_service_fee.to_f).to eq(4.08)
56
56
  end
57
57
 
58
58
  it "should update contribution payment_method" do
@@ -8,7 +8,7 @@ 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(nil)
11
+ transaction.stub(:installments).and_return(1)
12
12
  transaction.stub(:acquirer_name).and_return('pagarme')
13
13
  transaction.stub(:tid).and_return('123123')
14
14
  transaction
@@ -72,7 +72,7 @@ describe CatarsePagarme::SlipTransaction do
72
72
  before do
73
73
  slip_transaction.should_receive(:update_user_bank_account).and_call_original
74
74
  slip_transaction.user.should_receive(:update_attributes).and_return(true)
75
- contribution.should_receive(:update_attributes).and_call_original
75
+ contribution.should_receive(:update_attributes).at_least(1).and_call_original
76
76
  CatarsePagarme::ContributionDelegator.any_instance.should_receive(:change_status_by_transaction).with('paid')
77
77
 
78
78
  slip_transaction.charge!
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_Rw4JR98FmYST2ngEHtMvVf5QJW7Eoo')
33
+ PagarMe.stub(:api_key).and_return('ak_test_XLoo19QDn9kg5JFGU70x12IA4NqbAv')
34
34
  PaymentEngines.stub(:configuration).and_return({})
35
35
  end
36
36
  end
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: 2.3.10
4
+ version: 2.4.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: 2014-12-18 00:00:00.000000000 Z
12
+ date: 2014-12-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -116,6 +116,7 @@ files:
116
116
  - app/models/catarse_pagarme/credit_card_concern.rb
117
117
  - app/models/catarse_pagarme/credit_card_delegator.rb
118
118
  - app/models/catarse_pagarme/credit_card_transaction.rb
119
+ - app/models/catarse_pagarme/fee_calculator_concern.rb
119
120
  - app/models/catarse_pagarme/payment_type.rb
120
121
  - app/models/catarse_pagarme/save_credit_card_transaction.rb
121
122
  - app/models/catarse_pagarme/slip_transaction.rb