Class: SpreeCmCommissioner::TicketTransfers::ExpireJob
- Inherits:
-
ApplicationJob
- Object
- ActiveJob::Base
- ApplicationJob
- ApplicationJob
- SpreeCmCommissioner::TicketTransfers::ExpireJob
- 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 |