solidus_mp_dois 3.0.1 → 3.1.0

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: 4a88c410be92fd087e73fde1a2fb7096b113511d72c916d6762db0f19357e7de
4
- data.tar.gz: ed1c805037ecf79773882b8b6ff4ad53c03405247e03917863ba410779eb38b2
3
+ metadata.gz: 44927e2980c46be7c5cdc7d57931c6e9300d46370f903d265ac906b16c04c094
4
+ data.tar.gz: 28533f9624bdfc9225f2cc8131445886fa6bbf5865580d4db7f652b8c5ea8fb9
5
5
  SHA512:
6
- metadata.gz: 11042a45ea47e512b75b289a70d7c31725d328a6b92b1c26b6bae65d8b8def845c45a10da9b99554847f6a03308edaf6105c62b0a03ad53105d192fb7b83357c
7
- data.tar.gz: c321ae9dc96de73f30badfa2f4d5c7db6e2893db5929c2aae2747180d6b90a4eafdae12c1af1ad3fd492be4453eb3b2d24f633f5c492a394f6861182d2edeaa1
6
+ metadata.gz: 7294f4d3c0d25d3c1e82feebe64853a6c520a97c767b7bebd88128aef7be987b4c78594040c16e188d7707e41797776670e91e97fce3e65773804ff10ec0cff0
7
+ data.tar.gz: 9c3d71ee5ad8ab90e6bd9757402f2d8d96b7803614e6a3360601152cceb3f967baa524c35dd915632a900b9387a54700034182b9bfff4b1552312c7a0cde34b6
@@ -42,22 +42,28 @@ module SolidusMpDois
42
42
  payment
43
43
  end
44
44
 
45
- def purchase(payment)
46
- return unless payment.source&.external_id
45
+ def purchase(money, source, options = {})
46
+ mp_payment = source.retrieve_from_api
47
47
  10.times do
48
- mp_payment = find_payment(payment.source.external_id)
49
48
  break if ["approved", "rejected"].include? mp_payment.status
49
+ mp_payment = source.retrieve_from_api
50
+ end
51
+ sync(source.payments.sole, mp_payment)
52
+ if mp_payment.status == "approved"
53
+ source.update(status: "approved")
54
+ successful_response("Pagamento aprovado", status: source.status, internal_detail: source.internal_details)
55
+ else
56
+ failure_response(internal_error(source.internal_details), status: source.status, internal_detail: source.internal_details)
50
57
  end
51
- mp_payment = find_payment(payment.source.external_id)
52
- sync(payment, mp_payment)
53
58
  end
54
59
 
55
60
  def cancel!(payment)
56
61
  external_id = payment.source&.external_id
57
62
  return unless external_id
58
63
  sleep(1)
59
- purchase
60
- return unless ["checkout", "pending"].include? payment.state
64
+ mp_payment = find_payment(external_id)
65
+ sync(payment, mp_payment)
66
+ return false unless ["checkout", "pending"].include? payment.state
61
67
 
62
68
  mp_payment = mp_client.update_payment(payment_id: external_id, status: "cancelled")
63
69
  sync(payment, mp_payment)
@@ -171,6 +177,7 @@ module SolidusMpDois
171
177
  last_four_digits: mp_payment.card.last_four_digits
172
178
  )
173
179
  payment.order.update(email: payment.source.email)
180
+ payment.update(response_code: mp_payment.id)
174
181
  sync(payment, mp_payment)
175
182
  end
176
183
 
@@ -182,7 +189,7 @@ module SolidusMpDois
182
189
  approve_payment(payment, paid_amount)
183
190
  elsif mp_payment.status == "approved"
184
191
  raise "Payment paid with value less than the created - #{mp_payment.id}"
185
- elsif (mp_payment.status == "pending" && mp_payment.status_detail == "pending_challenge")
192
+ elsif mp_payment.status == "pending" && mp_payment.status_detail == "pending_challenge"
186
193
  pend_payment(payment)
187
194
  else
188
195
  invalid_payment(payment)
@@ -198,6 +205,7 @@ module SolidusMpDois
198
205
  end
199
206
 
200
207
  def invalid_payment payment
208
+ return false unless ["checkout", "pending"].include? payment.state
201
209
  if payment.checkout?
202
210
  payment.invalidate!
203
211
  else
@@ -211,8 +219,7 @@ module SolidusMpDois
211
219
  end
212
220
 
213
221
  def pend_payment payment
214
- payment.pend! unless payment.pending?
215
- payment.source.update!(status: payment.state)
222
+ payment.source.update!(status: "pending")
216
223
  error_message = "Pagamento aguardando 3ds"
217
224
  handle_payment_error(payment, error_message:)
218
225
  end
@@ -245,7 +252,8 @@ module SolidusMpDois
245
252
  end
246
253
 
247
254
  def invalidate_valid_payments order
248
- order.payments.valid.each do |payment|
255
+ available_payments = order.payments.where(state: ["checkout", "pending"])
256
+ available_payments.each do |payment|
249
257
  payment.source.void!
250
258
  end
251
259
  end
@@ -272,6 +280,5 @@ module SolidusMpDois
272
280
  full_message
273
281
  )
274
282
  end
275
-
276
283
  end
277
284
  end
@@ -49,24 +49,29 @@ module SolidusMpDois
49
49
  payment
50
50
  end
51
51
 
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
52
+ def purchase(money, source, options = {})
53
+ mp_payment = source.retrieve_from_api
54
+ sync(source.payments.sole, mp_payment)
55
+ if mp_payment.status == "approved"
56
+ source.update(status: "approved")
57
+ successful_response("Pagamento aprovado", status: source.status, internal_detail: source.internal_details)
58
+ else
59
+ failure_response(internal_error(source.internal_details), status: source.status, internal_detail: source.internal_details)
57
60
  end
58
- mp_payment = find_payment(payment.source.external_id)
59
- sync(payment, mp_payment)
60
61
  end
61
62
 
62
63
  def pix_paid? payment
63
- purchase(payment)
64
+ mp_payment = find_payment(payment.source.external_id)
65
+ sync(payment, mp_payment)
64
66
  payment.completed?
65
67
  end
66
68
 
67
69
  def invalidate_payment payment
68
70
  external_id = payment.source&.external_id
69
- return if external_id.nil? || pix_paid?(payment)
71
+ return false if external_id.nil?
72
+ mp_payment = find_payment(payment.source.external_id)
73
+ sync(payment, mp_payment)
74
+ return false unless ["checkout", "pending"].include? payment.state
70
75
  mp_payment = mp_client.update_payment(payment_id: external_id, status: "cancelled")
71
76
  sync(payment, mp_payment)
72
77
  end
@@ -88,7 +93,8 @@ module SolidusMpDois
88
93
  end
89
94
 
90
95
  def find_existing_payment(order)
91
- pix_payments = order.payments.valid.where(source_type: "SolidusMpDois::PixSource")
96
+ available_payments = order.payments.where(state: ["checkout", "pending"])
97
+ pix_payments = available_payments.where(source_type: "SolidusMpDois::PixSource")
92
98
  raise "More than one valid payment for #{order.number}" if pix_payments.count > 1
93
99
  pix_payments.first
94
100
  end
@@ -105,6 +111,7 @@ module SolidusMpDois
105
111
  qr_code_base64: mp_payment.point_of_interaction.transaction_data.qr_code_base64,
106
112
  ticket_url: mp_payment.point_of_interaction.transaction_data.ticket_url
107
113
  )
114
+ payment.update(response_code: mp_payment.id)
108
115
  sync(payment, mp_payment)
109
116
  end
110
117
 
@@ -124,15 +131,15 @@ module SolidusMpDois
124
131
  end
125
132
 
126
133
  def approve_payment payment
127
- payment.complete!
134
+ payment.complete
128
135
  payment_source = payment.source
129
136
  payment_source.update!(status: payment.state)
130
- response = successful_response("Pagamento aprovado", status: payment_source.status, internal_details: payment_source.internal_details)
137
+ response = successful_response("Pagamento aprovado", status: payment_source.status, internal_detail: payment_source.internal_details)
131
138
  payment.log_entries.create(parsed_payment_response_details_with_fallback: response)
132
139
  end
133
140
 
134
141
  def invalid_payment payment
135
- return if payment.invalid? || payment.failed?
142
+ return false unless ["checkout", "pending"].include? payment.state
136
143
  if payment.checkout?
137
144
  payment.invalidate!
138
145
  else
@@ -146,14 +153,14 @@ module SolidusMpDois
146
153
  end
147
154
 
148
155
  def pend_payment payment
149
- payment.pend! unless payment.pending?
150
156
  payment.source.update!(status: payment.state)
151
157
  error_message = "Aguardando pagamento"
152
158
  handle_payment_error(payment, error_message:)
153
159
  end
154
160
 
155
161
  def invalidate_valid_payments order, existing_payment_id
156
- order.payments.valid.where.not(id: existing_payment_id).each do |payment|
162
+ available_payments = order.payments.where(state: ["checkout", "pending"])
163
+ available_payments.where.not(id: existing_payment_id).each do |payment|
157
164
  payment.source.void!
158
165
  end
159
166
  end
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.1
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Todas Essas Coisas