Class: VoidFailedTransactionVoucherWorker

Inherits:
ApplicationWorker show all
Defined in:
app/workers/void_failed_transaction_voucher_worker.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from ApplicationWorker

unlimited_retry

Class Method Details

.void_later(provider_or_reference_no, reference_no_or_secret_key = nil) ⇒ Object



41
42
43
# File 'app/workers/void_failed_transaction_voucher_worker.rb', line 41

def self.void_later(provider_or_reference_no, reference_no_or_secret_key = nil)
  VoidFailedTransactionVoucherWorker.perform_in(3.minutes, provider_or_reference_no, reference_no_or_secret_key)
end

Instance Method Details

#perform(provider_or_reference_no, reference_no_or_secret_key = nil) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/workers/void_failed_transaction_voucher_worker.rb', line 4

def perform(provider_or_reference_no, reference_no_or_secret_key = nil)
  # Handle two calling patterns:
  # 1. void_later(:omise, charge_id) - new Omise pattern
  # 2. void_later(reference_no, gb_secret_key) - legacy GB PrimePay pattern

  if provider_or_reference_no.is_a?(Symbol)
    # New pattern: provider is first argument, reference_no is second
    provider = provider_or_reference_no
    reference_no = reference_no_or_secret_key

    case provider
    when :omise
      void_omise_charge(reference_no)
    when :gb_primepay
      void_gb_primepay_charge(reference_no, nil)
    else
      HH_LOGGER.error('Unknown payment provider for voiding voucher transaction', {
                        provider: provider,
                        reference_no: reference_no,
                      })
      APMErrorHandler.report(
        RuntimeError.new('Unknown payment provider for voiding voucher transaction'),
        {
          provider: provider,
          reference_no: reference_no,
          context: 'VoidFailedTransactionVoucherWorker.perform',
        },
      )
    end
  else
    # Legacy pattern: reference_no is first argument, gb_secret_key is second
    reference_no = provider_or_reference_no
    gb_secret_key = reference_no_or_secret_key
    void_gb_primepay_charge(reference_no, gb_secret_key)
  end
end