Class: SolidusMpDois::MpCard
- Inherits:
-
Spree::PaymentMethod
- Object
- Spree::PaymentMethod
- SolidusMpDois::MpCard
- Defined in:
- app/models/solidus_mp_dois/mp_card.rb
Instance Method Summary collapse
- #auto_capture? ⇒ Boolean
- #cancel!(payment) ⇒ Object
- #create_payment(order, source_params) ⇒ Object
- #find_payment(external_id) ⇒ Object
- #partial_name ⇒ Object
- #payment_source_class ⇒ Object
- #purchase(payment) ⇒ Object
- #supports?(source) ⇒ Boolean
Instance Method Details
#auto_capture? ⇒ Boolean
15 16 17 |
# File 'app/models/solidus_mp_dois/mp_card.rb', line 15 def auto_capture? true end |
#cancel!(payment) ⇒ Object
55 56 57 58 59 60 61 62 63 64 |
# File 'app/models/solidus_mp_dois/mp_card.rb', line 55 def cancel!(payment) external_id = payment.source&.external_id return unless external_id sleep(1) purchase return false unless ["checkout", "pending"].include? payment.state mp_payment = mp_client.update_payment(payment_id: external_id, status: "cancelled") sync(payment, mp_payment) end |
#create_payment(order, source_params) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'app/models/solidus_mp_dois/mp_card.rb', line 27 def create_payment order, source_params customer = find_or_create_customer(order, source_params) save_credit_card(source_params[:token], customer) if customer && source_params[:saved_card] == "false" # Se o cartão usado ja for um cartão salvo, não é necessario executar save_credit_card invalidate_valid_payments(order) payment = order.payments.new(amount: order.total, payment_method: self) payment.source = init_source(order, source_params, customer) payment.save mp_payment = if payment.source.saved_card create_payment_with_saved_card(payment.source, customer.try(:external_id)) else create_payment_with_new_card(payment.source) end process_payment_response(payment, mp_payment) payment end |
#find_payment(external_id) ⇒ Object
23 24 25 |
# File 'app/models/solidus_mp_dois/mp_card.rb', line 23 def find_payment external_id mp_client.get_payment(external_id) end |
#partial_name ⇒ Object
19 20 21 |
# File 'app/models/solidus_mp_dois/mp_card.rb', line 19 def partial_name "mercado_pago_card" end |
#payment_source_class ⇒ Object
7 8 9 |
# File 'app/models/solidus_mp_dois/mp_card.rb', line 7 def payment_source_class CreditCardSource end |
#purchase(payment) ⇒ Object
45 46 47 48 49 50 51 52 53 |
# File 'app/models/solidus_mp_dois/mp_card.rb', line 45 def purchase(payment) return unless payment.source&.external_id 10.times do mp_payment = find_payment(payment.source.external_id) break if ["approved", "rejected"].include? mp_payment.status end mp_payment = find_payment(payment.source.external_id) sync(payment, mp_payment) end |
#supports?(source) ⇒ Boolean
11 12 13 |
# File 'app/models/solidus_mp_dois/mp_card.rb', line 11 def supports?(source) source.is_a?(payment_source_class) end |