conekta_handler.rb 1 KB
# frozen_string_literal: true
module Var
  class ConektaHandler
    PAYMENT_METHOD_STRING = 'Conekta_payment'

    class << self
      def analyze(event)
        return process_payment event[:data][:object] if
          event[:data][:object][:status] == 'paid'
        process_charge event[:data][:object]
      end

      def process_payment(payment_info)
        object = Var.find_charge payment_info[:id]
        time = Time.strptime payment_info[:paid_at].to_s, '%s'
        amount = payment_info[:amount].to_f / 100.0
        fee = payment_info[:fee].to_f / 100.0
        object.update(var_fee: fee, var_paid_amount: amount,
                      var_payment_method: self::PAYMENT_METHOD_STRING,
                      var_payment_at: time,
                      var_status: payment_info[:status])
      end

      def process_charge(charge_info)
        # TODO: update status and time
        object = Var.find_charge charge_info[:id]
        object.update(var_status: charge_info[:status])
      end
    end
  end
end