Class: AddCcPaymentToReservationWorker

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

Overview

Service to mark a reservation status to be 'Arrived'

Instance Method Summary collapse

Methods inherited from ApplicationWorker

unlimited_retry

Instance Method Details

#perform(payment_gateway, payload) ⇒ Object

example payload but using underscore case

{
  "amount": "910.00",
  "reference_no": "870776_6419",
  "gbp_reference_no": "gbp2368111xxxxx",
  "currency_code": "764", # iso 4217
  "result_code": "TO", # 00 Approved, another than 00 means invalid
  "card_no": "416202XXXXXX2234",
  "fee": "0",
  "vat": "0",
  "payment_type": "C",
  "amount_per_month": "0",
  "total_amount": "0",
  "thb_amount": "0",
  "detail": "Booking 870776",
  "customer_email": "user@hungryhub.com",
  "merchant_defined1": "Reservation",
  "headers": {
  }
}

Parameters:

  • payload (Hash)


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'app/workers/add_cc_payment_to_reservation_worker.rb', line 28

def perform(payment_gateway, payload)
  payload = payload.with_indifferent_access if payload.is_a?(Hash)

  case payment_gateway.to_s.to_sym
  when :gb_primepay
    gb_primepay_ref_no = payload[:gbp_reference_no]
    existing_charge = Externals::Omise::Charge.find_by(omise_charge_id: gb_primepay_ref_no)
    reservation = find_reservation(payload)
    if existing_charge.present?
      update_existing_charge(reservation, existing_charge, payload)
    else
      add_cc_transaction_for_gb_primepay(reservation, payload)
    end
    mark_reservation_as_pending_arrival(reservation)
    send_notification(reservation)
  else
    raise NotImplementedError
  end
end