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 +4 -4
- data/app/models/solidus_mp_dois/gateway.rb +29 -0
- data/app/models/solidus_mp_dois/mp_card.rb +19 -10
- data/app/models/solidus_mp_dois/mp_pix.rb +20 -13
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 31c1fd9d84b73ecf99a02020b6a3df8fd9cfe9481279f8a797e1af7f6bf75c0f
|
4
|
+
data.tar.gz: 4b637bd61374c0791310473ae02876cb9e8662522907e01419513fb5fa47feb6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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(
|
46
|
-
|
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
|
-
|
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
|
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.
|
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(
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
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
|
63
|
-
|
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
|
-
|
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,
|
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.
|
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
|