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 +4 -4
- data/app/models/solidus_mp_dois/mp_card.rb +19 -12
- data/app/models/solidus_mp_dois/mp_pix.rb +22 -15
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 44927e2980c46be7c5cdc7d57931c6e9300d46370f903d265ac906b16c04c094
|
4
|
+
data.tar.gz: 28533f9624bdfc9225f2cc8131445886fa6bbf5865580d4db7f652b8c5ea8fb9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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(
|
46
|
-
|
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
|
-
|
60
|
-
|
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
|
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.
|
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.
|
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(
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
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
|
-
|
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?
|
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
|
-
|
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,
|
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
|
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.
|
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
|