solidus_mp_dois 3.0.2 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7f944c94fa2dbc985c792ea59bfaf4ab33c3098e9d5748f7c0334471824a05be
4
- data.tar.gz: 45b1e92e97fcbb11914329e9656a182bfe1e38b38efb7675b3439c427b567c55
3
+ metadata.gz: 31c1fd9d84b73ecf99a02020b6a3df8fd9cfe9481279f8a797e1af7f6bf75c0f
4
+ data.tar.gz: 4b637bd61374c0791310473ae02876cb9e8662522907e01419513fb5fa47feb6
5
5
  SHA512:
6
- metadata.gz: 3a22b218df37bc0964da1a40658308ee191dc782f69d93d8e0810a46423ea8e2280e767ae6993b984c56d9a9be3a2986e5dc047fc056ce2d380184cfe0e2e84e
7
- data.tar.gz: 05f8ddff9d64c36398380d2b181bc93f91a219eed747d9efa52c6c845f6cf842dd871f3887bcb21466efc13baead9600d2ef10cc615ab641e0605c996d36828b
6
+ metadata.gz: f1313ac13a90bfc70709086ddd1661d9a3ff501c85027ea33d67ccbd1134c64620a7b58ecdac76fe7f3cea50bfe1cbeae867eac049f8f25fd6f5cc6dc0b8b722
7
+ data.tar.gz: 52efd4073bfb6619f735b3d53dd8deaee114f2ed53dc27a105b68dbf6135919c574ebb4ed4794f650c09e95e2fec43692d1caa0ca9bafafc5622b5ade230f681
@@ -0,0 +1,29 @@
1
+ module SolidusMpDois
2
+ class Gateway
3
+ def initialize(options)
4
+ end
5
+
6
+ def void(transaction_id, _options = {})
7
+ # Respondendo sempre com successful_response para funcionar o botão de "Cancelar" do pedido. Reembolso deve ser feito por fora.
8
+ successful_response("Pagamento cancelado. Se necessário, realize o reembolso.", transaction_id)
9
+ end
10
+
11
+ private
12
+
13
+ def successful_response(message, transaction_id)
14
+ ActiveMerchant::Billing::Response.new(
15
+ true,
16
+ message,
17
+ {},
18
+ authorization: transaction_id
19
+ )
20
+ end
21
+
22
+ def failure_response(message)
23
+ ActiveMerchant::Billing::Response.new(
24
+ false,
25
+ message
26
+ )
27
+ end
28
+ end
29
+ end
@@ -8,6 +8,10 @@ module SolidusMpDois
8
8
  CreditCardSource
9
9
  end
10
10
 
11
+ def gateway_class
12
+ Gateway
13
+ end
14
+
11
15
  def supports?(source)
12
16
  source.is_a?(payment_source_class)
13
17
  end
@@ -42,21 +46,27 @@ module SolidusMpDois
42
46
  payment
43
47
  end
44
48
 
45
- def purchase(payment)
46
- return unless payment.source&.external_id
49
+ def purchase(money, source, options = {})
50
+ mp_payment = source.retrieve_from_api
47
51
  10.times do
48
- mp_payment = find_payment(payment.source.external_id)
49
52
  break if ["approved", "rejected"].include? mp_payment.status
53
+ mp_payment = source.retrieve_from_api
54
+ end
55
+ sync(source.payments.sole, mp_payment)
56
+ if mp_payment.status == "approved"
57
+ source.update(status: "approved")
58
+ successful_response("Pagamento aprovado", status: source.status, internal_detail: source.internal_details)
59
+ else
60
+ failure_response(internal_error(source.internal_details), status: source.status, internal_detail: source.internal_details)
50
61
  end
51
- mp_payment = find_payment(payment.source.external_id)
52
- sync(payment, mp_payment)
53
62
  end
54
63
 
55
64
  def cancel!(payment)
56
65
  external_id = payment.source&.external_id
57
66
  return unless external_id
58
67
  sleep(1)
59
- purchase
68
+ mp_payment = find_payment(external_id)
69
+ sync(payment, mp_payment)
60
70
  return false unless ["checkout", "pending"].include? payment.state
61
71
 
62
72
  mp_payment = mp_client.update_payment(payment_id: external_id, status: "cancelled")
@@ -171,6 +181,7 @@ module SolidusMpDois
171
181
  last_four_digits: mp_payment.card.last_four_digits
172
182
  )
173
183
  payment.order.update(email: payment.source.email)
184
+ payment.update(response_code: mp_payment.id)
174
185
  sync(payment, mp_payment)
175
186
  end
176
187
 
@@ -182,7 +193,7 @@ module SolidusMpDois
182
193
  approve_payment(payment, paid_amount)
183
194
  elsif mp_payment.status == "approved"
184
195
  raise "Payment paid with value less than the created - #{mp_payment.id}"
185
- elsif (mp_payment.status == "pending" && mp_payment.status_detail == "pending_challenge")
196
+ elsif mp_payment.status == "pending" && mp_payment.status_detail == "pending_challenge"
186
197
  pend_payment(payment)
187
198
  else
188
199
  invalid_payment(payment)
@@ -212,8 +223,7 @@ module SolidusMpDois
212
223
  end
213
224
 
214
225
  def pend_payment payment
215
- payment.pend! unless payment.pending?
216
- payment.source.update!(status: payment.state)
226
+ payment.source.update!(status: "pending")
217
227
  error_message = "Pagamento aguardando 3ds"
218
228
  handle_payment_error(payment, error_message:)
219
229
  end
@@ -274,6 +284,5 @@ module SolidusMpDois
274
284
  full_message
275
285
  )
276
286
  end
277
-
278
287
  end
279
288
  end
@@ -8,6 +8,10 @@ module SolidusMpDois
8
8
  PixSource
9
9
  end
10
10
 
11
+ def gateway_class
12
+ Gateway
13
+ end
14
+
11
15
  def supports?(source)
12
16
  source.is_a?(payment_source_class)
13
17
  end
@@ -49,25 +53,28 @@ module SolidusMpDois
49
53
  payment
50
54
  end
51
55
 
52
- def purchase(payment)
53
- return unless payment.source&.external_id
54
- 10.times do
55
- mp_payment = find_payment(payment.source.external_id)
56
- break if ["approved", "rejected"].include? mp_payment.status
56
+ def purchase(money, source, options = {})
57
+ mp_payment = source.retrieve_from_api
58
+ sync(source.payments.sole, mp_payment)
59
+ if mp_payment.status == "approved"
60
+ source.update(status: "approved")
61
+ successful_response("Pagamento aprovado", status: source.status, internal_detail: source.internal_details)
62
+ else
63
+ failure_response(internal_error(source.internal_details), status: source.status, internal_detail: source.internal_details)
57
64
  end
58
- mp_payment = find_payment(payment.source.external_id)
59
- sync(payment, mp_payment)
60
65
  end
61
66
 
62
- def paid? payment
63
- purchase(payment)
67
+ def pix_paid? payment
68
+ mp_payment = find_payment(payment.source.external_id)
69
+ sync(payment, mp_payment)
64
70
  payment.completed?
65
71
  end
66
72
 
67
73
  def invalidate_payment payment
68
74
  external_id = payment.source&.external_id
69
75
  return false if external_id.nil?
70
- purchase(payment)
76
+ mp_payment = find_payment(payment.source.external_id)
77
+ sync(payment, mp_payment)
71
78
  return false unless ["checkout", "pending"].include? payment.state
72
79
  mp_payment = mp_client.update_payment(payment_id: external_id, status: "cancelled")
73
80
  sync(payment, mp_payment)
@@ -108,6 +115,7 @@ module SolidusMpDois
108
115
  qr_code_base64: mp_payment.point_of_interaction.transaction_data.qr_code_base64,
109
116
  ticket_url: mp_payment.point_of_interaction.transaction_data.ticket_url
110
117
  )
118
+ payment.update(response_code: mp_payment.id)
111
119
  sync(payment, mp_payment)
112
120
  end
113
121
 
@@ -127,10 +135,10 @@ module SolidusMpDois
127
135
  end
128
136
 
129
137
  def approve_payment payment
130
- payment.complete!
138
+ payment.complete
131
139
  payment_source = payment.source
132
140
  payment_source.update!(status: payment.state)
133
- response = successful_response("Pagamento aprovado", status: payment_source.status, internal_details: payment_source.internal_details)
141
+ response = successful_response("Pagamento aprovado", status: payment_source.status, internal_detail: payment_source.internal_details)
134
142
  payment.log_entries.create(parsed_payment_response_details_with_fallback: response)
135
143
  end
136
144
 
@@ -149,7 +157,6 @@ module SolidusMpDois
149
157
  end
150
158
 
151
159
  def pend_payment payment
152
- payment.pend! unless payment.pending?
153
160
  payment.source.update!(status: payment.state)
154
161
  error_message = "Aguardando pagamento"
155
162
  handle_payment_error(payment, error_message:)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_mp_dois
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.2
4
+ version: 3.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Todas Essas Coisas
@@ -48,6 +48,7 @@ files:
48
48
  - app/models/solidus_mp_dois/card.rb
49
49
  - app/models/solidus_mp_dois/credit_card_source.rb
50
50
  - app/models/solidus_mp_dois/customer.rb
51
+ - app/models/solidus_mp_dois/gateway.rb
51
52
  - app/models/solidus_mp_dois/mp_card.rb
52
53
  - app/models/solidus_mp_dois/mp_pix.rb
53
54
  - app/models/solidus_mp_dois/pix_source.rb