Sha256: 7bb883fd63b45f49f7f8d231062feb456fcd314425e560ea7a5b01064e27484a

Contents?: true

Size: 1.23 KB

Versions: 3

Compression:

Stored size: 1.23 KB

Contents

module Workarea
  module Orderbot
    class Order
      module Tender
        class CreditCard
          attr_reader :tender, :options

          def initialize(tender, options = {})
            @tender = tender
            @option = options
          end

          def to_h
            {
              payment_reference_id: tender.id.to_s,
              payment_type: "credit_card",
              payment_method_type:  tender.issuer.optionize,
              amount_paid: tender.amount.to_f,
              payment_date: transaction.created_at.iso8601,
              auth_code: transaction.response.authorization,
              credit_card: {
                transaction_id: transaction_id,
                authorization_code: transaction.response.authorization,
                last_four_digits: tender.display_number.last(4)
              }
            }
          end

          private

          def transaction
             tender.transactions.successful.sort_by(&:created_at).last
          end

          def transaction_id
            gateway_class = Workarea.config.gateways.credit_card.class.to_s
            Workarea.config.orderbot.transaction_id[gateway_class].call(transaction) rescue nil
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
workarea-orderbot-1.0.2 app/services/workarea/orderbot/order/tender/credit_card.rb
workarea-orderbot-1.0.1 app/services/workarea/orderbot/order/tender/credit_card.rb
workarea-orderbot-1.0.0 app/services/workarea/orderbot/order/tender/credit_card.rb