Class: SpreeCmCommissioner::TicketTransfers::ExpireJob

Inherits:
ApplicationJob show all
Defined in:
app/jobs/spree_cm_commissioner/ticket_transfers/expire_job.rb

Constant Summary collapse

RETRY_DELAY =

Same window as OrderHolds::LockForPayment — gives an in-flight gateway redirect/webhook (e.g. PayWay, ACLEDA) room to resolve before we retry.

ENV.fetch('PAYMENT_LOCK_MIN_DURATION_IN_MINUTES', '5').to_i.minutes
MAX_RETRIES =
1
UNRESOLVED_PAYMENT_STATES =
%w[checkout pending processing].freeze

Instance Method Summary collapse

Methods included from ApplicationJobDecorator

handle_deserialization_error, prepended

Instance Method Details

#perform(transfer_id, attempt = 0) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
# File 'app/jobs/spree_cm_commissioner/ticket_transfers/expire_job.rb', line 10

def perform(transfer_id, attempt = 0)
  ticket_transfer = SpreeCmCommissioner::TicketTransfer.find_by(id: transfer_id)
  return unless ticket_transfer

  if payment_in_progress?(ticket_transfer) && attempt < MAX_RETRIES
    self.class.set(wait: RETRY_DELAY).perform_later(transfer_id, attempt + 1)
    return
  end

  SpreeCmCommissioner::TicketTransfers::Expire.call(ticket_transfer: ticket_transfer)
end