catarse_pagarme 2.14.11 → 2.16.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
  SHA256:
3
- metadata.gz: 841d304987ba35363555c773e7d88bfe799ce92c456a7e56bb12703f61a05c11
4
- data.tar.gz: c6dfa83886c55e65d4ae3ac720b4afd447654736e8c899306fd5e5f9a0126250
3
+ metadata.gz: 1aeb220af20a3e600ebd9a43bea5af0960a1b0a9bc417a71ce3363b3286f23d3
4
+ data.tar.gz: ead3a3b224139a7496b72c1957c9e6e208dc2bb1570e2f01a55d661e84e11d1c
5
5
  SHA512:
6
- metadata.gz: e253b3633d7da19d9c3700028b69b8791c7f294b67bce110b57c3a902f82f0b35effa888146841fdc992f562a6e96e34fec5ae713b89e587a9fdb870731238f5
7
- data.tar.gz: 704b88015accaeb1be02349e90c2ac0227e5964732d6dcca4787eb1daa95880c442ce9dd4e7a4dedc038818c2a6ffa244e6535e97bd97227ead58c6b6e6696eb
6
+ metadata.gz: 1a5d134e4a6c4e54c785be011e25601609bac15b5a2746ba0d029f08505f71eb124ce0c6a92f9be5e52a5b934c989ebcd615421f6f09d77a8d293e5be1065fd1
7
+ data.tar.gz: 17f9af0d132c6c93025c71d8100622fc427879fc1167813b73efdca3a7e799e2145ec2aed166192cb3a694b3f7647eb2924a809c6e767e601deeb66b76340c68
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- catarse_pagarme (2.14.11)
4
+ catarse_pagarme (2.16.0)
5
5
  countries (= 3.0.0)
6
6
  konduto-ruby (= 2.1.0)
7
7
  pagarme (= 2.1.4)
@@ -19,20 +19,24 @@ module CatarsePagarme
19
19
  payment_method: payment.payment_method
20
20
  }
21
21
  )
22
- ::Raven.capture_exception(exception)
22
+ ::Raven.capture_exception(exception, level: 'fatal')
23
23
  ::Raven.user_context({})
24
24
  end
25
25
 
26
26
  def metadata_attributes
27
27
  {
28
28
  key: payment.generate_key,
29
- contribution_id: payment.contribution.id,
29
+ contribution_id: payment.contribution.id.to_s,
30
+ project_id: payment.project.id.to_s,
30
31
  project_name: payment.project.name,
31
32
  permalink: payment.project.permalink,
32
33
  project_online: payment.project.online_at,
33
34
  project_expires: payment.project.expires_at,
34
35
  user_total_contributions: payment.user.contributions.was_confirmed.count,
35
- user_id: payment.user.id
36
+ user_id: payment.user.id,
37
+ common_user_id: payment.user.common_id.to_s,
38
+ user_name: payment.user.name,
39
+ user_email: payment.user.email
36
40
  }
37
41
  end
38
42
 
@@ -17,6 +17,8 @@ module CatarsePagarme
17
17
  render json: { payment_status: 'failed', message: e.message }
18
18
  rescue => e
19
19
  raven_capture(e)
20
+
21
+ render json: { payment_status: 'failed', message: e.message }
20
22
  end
21
23
 
22
24
  def get_installment_json
@@ -81,11 +83,7 @@ module CatarsePagarme
81
83
  end
82
84
 
83
85
  def document_number
84
- user_document = contribution.user.cpf.try(:gsub, /[-.\/_\s]/, '')
85
- card_owner_document = contribution.card_owner_document.try(:gsub, /[-.\/_\s]/, '')
86
- fallback_document = '00000000000'
87
-
88
- user_document || card_owner_document || fallback_document
86
+ contribution.user.cpf.try(:gsub, /[-.\/_\s]/, '')
89
87
  end
90
88
 
91
89
  def phone_matches
@@ -135,7 +133,7 @@ module CatarsePagarme
135
133
 
136
134
  def address_hash
137
135
  {
138
- country: contribution.country.try(:name),
136
+ country_code: contribution.country.try(:code),
139
137
  state: contribution.address_state,
140
138
  city: contribution.address_city,
141
139
  zipcode: contribution.address_zip_code.try(:gsub, /[-.\/_\s]/, ''),
@@ -46,7 +46,7 @@ module CatarsePagarme
46
46
  number: document_number
47
47
  }],
48
48
  },
49
- metadata: metadata_attributes
49
+ metadata: metadata_attributes.merge({ second_slip: payment.generating_second_slip.to_s })
50
50
  }
51
51
  end
52
52
 
@@ -71,14 +71,15 @@ module CatarsePagarme
71
71
 
72
72
  def customer_attributes
73
73
  customer = self.attributes.dig(:customer)
74
+ tax_id = customer[:document_number].present? ? { tax_id: customer[:document_number] } : {}
75
+
74
76
  {
75
77
  id: customer[:id].to_s,
76
- tax_id: customer[:document_number],
77
78
  name: customer[:name],
78
79
  email: customer[:email],
79
80
  phone1: customer[:phone].to_h.values.join,
80
81
  created_at: self.attributes.dig(:antifraud_metadata, :register, :registered_at)
81
- }
82
+ }.merge(tax_id)
82
83
  end
83
84
 
84
85
  def payment_attributes
@@ -99,7 +100,8 @@ module CatarsePagarme
99
100
  city: billing_data.dig(:address, :city),
100
101
  state: billing_data.dig(:address, :state),
101
102
  zip: billing_data.dig(:address, :zipcode),
102
- }.merge(card_country_code)
103
+ country: billing_data.dig(:address, :country_code),
104
+ }
103
105
  end
104
106
 
105
107
  def shipping_address_attributes
@@ -139,10 +141,5 @@ module CatarsePagarme
139
141
  expiration_date = self.transaction.card.expiration_date
140
142
  "#{expiration_date[0..1]}20#{expiration_date[2..3]}"
141
143
  end
142
-
143
- def card_country_code
144
- country = ::ISO3166::Country.find_country_by_name(self.transaction.card.country)
145
- country.present? ? { country: country.try(:alpha2) } : {}
146
- end
147
144
  end
148
145
  end
@@ -8,10 +8,14 @@ module CatarsePagarme
8
8
  else
9
9
  antifraud_outcome = process_antifraud
10
10
 
11
+ self.payment.create_antifraud_analysis!(cost: CatarsePagarme.configuration.antifraud_tax)
12
+
11
13
  if antifraud_outcome.recommendation == :APPROVE
12
14
  self.transaction.capture
13
15
  elsif antifraud_outcome.recommendation == :DECLINE
14
16
  self.transaction.refund
17
+ elsif antifraud_outcome.recommendation == :REVIEW
18
+ self.payment.try(:notify_about_pending_review)
15
19
  end
16
20
  end
17
21
  end
@@ -31,7 +35,8 @@ module CatarsePagarme
31
35
  async: false,
32
36
  postback_url: self.attributes[:postback_url],
33
37
  installments: self.attributes[:installments],
34
- soft_descriptor: self.attributes[:soft_descriptor]
38
+ soft_descriptor: self.attributes[:soft_descriptor],
39
+ metadata: self.attributes[:metadata]
35
40
  }.merge(credit_card_identifier)
36
41
  )
37
42
 
@@ -5,102 +5,17 @@ module CatarsePagarme::FeeCalculatorConcern
5
5
 
6
6
  def get_fee
7
7
  return nil if self.payment.payment_method.blank? # We always depend on the payment_choice
8
- if self.payment.payment_method == ::CatarsePagarme::PaymentType::SLIP
9
- get_slip_fee
10
- else
11
- get_card_fee
12
- end
13
- end
14
-
15
- protected
16
- def get_slip_fee
17
- CatarsePagarme.configuration.slip_tax.to_f
18
- end
19
-
20
- def get_card_fee
21
- return nil if self.payment.gateway_data["acquirer_name"].blank? # Here we depend on the acquirer name
22
- fee = if %w(stone pagarme).include? self.payment.gateway_data["acquirer_name"]
23
- get_stone_fee
24
- else
25
- get_cielo_fee
26
- end
27
-
28
- fee + payment_cost
29
- end
30
8
 
31
- def payment_cost
32
- self.payment.gateway_data["cost"] / 100.0
33
- end
34
-
35
- def get_stone_fee
36
- self.payment.installments > 1 ? tax_calc_for_installment(stone_installment_tax) : tax_calc(stone_tax)
37
- end
9
+ transaction = PagarMe::Transaction.find(self.payment.gateway_id)
10
+ payables = transaction.payables
11
+ cost = transaction.cost.to_f / 100.00
12
+ payables_fee = payables.to_a.sum(&:fee).to_f / 100.00
38
13
 
39
- def get_cielo_fee
40
- return nil if self.payment.gateway_data["card_brand"].blank? # Here we depend on the card_brand
41
- if self.payment.gateway_data["card_brand"] == 'amex'
42
- get_cielo_fee_for_amex
14
+ if self.payment.payment_method == ::CatarsePagarme::PaymentType::SLIP
15
+ cost + payables_fee
43
16
  else
44
- get_cielo_fee_for_non_amex
17
+ payables_fee == 0 ? cost : payables_fee
45
18
  end
46
19
  end
47
-
48
- def get_cielo_fee_for_amex
49
- self.payment.installments > 1 ? tax_calc_for_installment(cielo_installment_amex_tax) : tax_calc(cielo_installment_not_amex_tax)
50
- end
51
-
52
- def get_cielo_fee_for_non_amex
53
- current_tax = self.payment.gateway_data["card_brand"] == 'diners' ? installment_diners_tax : installment_not_diners_tax
54
- self.payment.installments > 1 ? tax_calc_for_installment(current_tax) : tax_calc(cielo_tax)
55
- end
56
-
57
- def tax_calc acquirer_tax
58
- ((self.payment.value * pagarme_tax) + cents_fee).round(2) + (self.payment.value * acquirer_tax).round(2)
59
- end
60
-
61
- def tax_calc_for_installment acquirer_tax
62
- (((self.payment.installment_value * self.payment.installments) * pagarme_tax) + cents_fee).round(2) + ((self.payment.installment_value * acquirer_tax).round(2) * self.payment.installments)
63
- end
64
-
65
- def antifraud_tax
66
- CatarsePagarme.configuration.antifraud_tax.to_f
67
- end
68
-
69
- def cents_fee
70
- CatarsePagarme.configuration.credit_card_cents_fee.to_f
71
- end
72
-
73
- def pagarme_tax
74
- CatarsePagarme.configuration.pagarme_tax.to_f
75
- end
76
-
77
- def cielo_tax
78
- CatarsePagarme.configuration.cielo_tax.to_f
79
- end
80
-
81
- def stone_tax
82
- CatarsePagarme.configuration.stone_tax.to_f
83
- end
84
-
85
- def stone_installment_tax
86
- CatarsePagarme.configuration.stone_installment_tax.to_f
87
- end
88
-
89
- def installment_diners_tax
90
- CatarsePagarme.configuration.cielo_installment_diners_tax.to_f
91
- end
92
-
93
- def installment_not_diners_tax
94
- CatarsePagarme.configuration.cielo_installment_not_diners_tax.to_f
95
- end
96
-
97
- def cielo_installment_amex_tax
98
- CatarsePagarme.configuration.cielo_installment_amex_tax.to_f
99
- end
100
-
101
- def cielo_installment_not_amex_tax
102
- CatarsePagarme.configuration.cielo_installment_not_amex_tax.to_f
103
- end
104
-
105
20
  end
106
21
  end
@@ -1,3 +1,3 @@
1
1
  module CatarsePagarme
2
- VERSION = "2.14.11"
2
+ VERSION = "2.16.0"
3
3
  end
@@ -245,14 +245,15 @@ describe CatarsePagarme::AntifraudOrderWrapper do
245
245
  street: 'R. A',
246
246
  city: 'New City',
247
247
  state: 'NC',
248
- zipcode: '1245'
248
+ zipcode: '1245',
249
+ country_code: 'BR'
249
250
  }
250
251
  }
251
252
  }
252
253
  }
253
254
  end
254
255
 
255
- let(:transaction) { double(card: double(country: 'BRAZIL', holder_name: 'holder name')) }
256
+ let(:transaction) { double(card: double(holder_name: 'holder name')) }
256
257
 
257
258
  before do
258
259
  subject.attributes = attributes
@@ -267,7 +268,7 @@ describe CatarsePagarme::AntifraudOrderWrapper do
267
268
  expect(billing_address_attributes[:city]).to eq 'New City'
268
269
  expect(billing_address_attributes[:state]).to eq 'NC'
269
270
  expect(billing_address_attributes[:zip]).to eq '1245'
270
- expect(billing_address_attributes[:country]).to eq 'BR'
271
+ expect(billing_address_attributes[:country_code]).to eq 'BR'
271
272
  end
272
273
  end
273
274
 
@@ -290,7 +291,7 @@ describe CatarsePagarme::AntifraudOrderWrapper do
290
291
  }
291
292
  end
292
293
 
293
- let(:transaction) { double(card: double(country: 'BRAZIL')) }
294
+ let(:transaction) { double(card: double) }
294
295
 
295
296
  before do
296
297
  subject.attributes = attributes
@@ -76,7 +76,7 @@ describe CatarsePagarme::CreditCardTransaction do
76
76
  end
77
77
  end
78
78
 
79
- context 'when antifraude recommends decline transaction' do
79
+ context 'when antifraud recommends decline transaction' do
80
80
  let(:antifraud_outcome) { double(recommendation: :DECLINE) }
81
81
 
82
82
  it 'refunds transaction' do
@@ -85,6 +85,16 @@ describe CatarsePagarme::CreditCardTransaction do
85
85
  card_transaction.process!
86
86
  end
87
87
  end
88
+
89
+ context 'when antifraud recommends review transaction' do
90
+ let(:antifraud_outcome) { double(recommendation: :REVIEW) }
91
+
92
+ it 'notifies about pending review' do
93
+ expect(card_transaction.payment).to receive(:notify_about_pending_review)
94
+
95
+ card_transaction.process!
96
+ end
97
+ end
88
98
  end
89
99
  end
90
100
 
@@ -269,7 +279,7 @@ describe CatarsePagarme::CreditCardTransaction do
269
279
  let(:antifraud_wrapper) { double }
270
280
 
271
281
  context 'when @antifraud_wrapper isn`t nil' do
272
- it 'returns @antifraude_wrapper' do
282
+ it 'returns @antifraud_wrapper' do
273
283
  card_transaction.instance_variable_set('@antifraud_wrapper', antifraud_wrapper)
274
284
  expect(card_transaction.antifraud_wrapper).to eq antifraud_wrapper
275
285
  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.14.11
4
+ version: 2.16.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: 2020-03-31 00:00:00.000000000 Z
12
+ date: 2020-06-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: countries