Module: Vpago::PaymentProcessable

Included in:
PaymentProcessor
Defined in:
app/services/vpago/payment_processable.rb

Instance Method Summary collapse

Instance Method Details

#available_actionsObject

To check available actions, see app/models/spree/vpago_payment_source.rb



16
17
18
# File 'app/services/vpago/payment_processable.rb', line 16

def available_actions
  @payment.actions
end

#enqueue_capture_payment_if_available!Object



3
4
5
# File 'app/services/vpago/payment_processable.rb', line 3

def enqueue_capture_payment_if_available!
  Vpago::PaymentCapturerJob.perform_later(@payment.id) if available_actions.include?('capture')
end

#enqueue_void_or_cancel_payment_if_available!Object



7
8
9
10
11
12
13
# File 'app/services/vpago/payment_processable.rb', line 7

def enqueue_void_or_cancel_payment_if_available!
  if available_actions.include?('void')
    Vpago::PaymentVoiderJob.perform_later(@payment.id)
  elsif available_actions.include?('cancel')
    Vpago::PaymentCancelerJob.perform_later(@payment.id)
  end
end

#extract_completer_failure_reason_code(error) ⇒ Object



20
21
22
23
24
25
# File 'app/services/vpago/payment_processable.rb', line 20

def extract_completer_failure_reason_code(error)
  return :some_line_items_are_out_of_stock if error.respond_to?(:to_h) && error.to_h[:base]&.include?(Spree.t(:insufficient_stock_lines_present))
  return :some_variants_are_discontinued if error.respond_to?(:to_h) && error.to_h[:base]&.include?(Spree.t(:discontinued_variants_present))

  :unable_to_complete_order
end

#failure(error) ⇒ Object



49
50
51
# File 'app/services/vpago/payment_processable.rb', line 49

def failure(error)
  @error = error
end

#log_process(method, *args) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/services/vpago/payment_processable.rb', line 27

def log_process(method, *args, &)
  VpagoLogger.log(
    label: "#{self.class.name}##{method}",
    data: {
      payment_number: @payment.number,
      order_number: @payment.order.number,
      payment_method_type: @payment.payment_method.type,
      payment_method_name: @payment.payment_method.name,
      args: args
    },
    &
  )
end

#success?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'app/services/vpago/payment_processable.rb', line 45

def success?
  @error.nil?
end

#user_informerObject



41
42
43
# File 'app/services/vpago/payment_processable.rb', line 41

def user_informer
  @user_informer ||= ::Vpago::UserInformers::Firebase.new(@payment.order)
end