Sha256: 3fbc163ea911efc8ca1f28bd225b8fb03fc6390f33d6ff34ccef33caaa26ae6b

Contents?: true

Size: 1.07 KB

Versions: 11

Compression:

Stored size: 1.07 KB

Contents

module Portmone
  class Transaction
    attr_reader :data

    def initialize(data)
      raise Error, "Wrong data: Hash expected, got #{data.inspect}" unless data.is_a?(Hash)

      @timezone = data.delete(:timezone)
      @currency = data.delete(:currency)
      @data = data
    end

    def bill_date
      data['bill_date'] && Date.parse(data['bill_date'])
    end

    def pay_time
      data['pay_date'] && ActiveSupport::TimeZone[@timezone].parse(data['pay_date'])
    end

    def pay_order_time
      data['pay_order_date'] && ActiveSupport::TimeZone[@timezone].parse(data['pay_order_date'])
    end

    def bill_amount
      Money.from_amount(data['bill_amount'].to_f, @currency)
    end

    def order_id
      data.dig('shop_bill_id')
    end

    def paid?
      status == 'PAYED' || status == 'PREAUTH'
    end

    def reversed?
      status == 'RETURN'
    end

    %i(shop_order_number
       description
       auth_code
       status
       error_code
       error_message).each do |key|

      define_method(key) do
        data.dig(key.to_s)
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
portmone-0.0.16 lib/portmone/transaction.rb
portmone-0.0.15 lib/portmone/transaction.rb
portmone-0.0.14 lib/portmone/transaction.rb
portmone-0.0.13 lib/portmone/transaction.rb
portmone-0.0.12 lib/portmone/transaction.rb
portmone-0.0.11 lib/portmone/transaction.rb
portmone-0.0.10 lib/portmone/transaction.rb
portmone-0.0.9 lib/portmone/transaction.rb
portmone-0.0.8 lib/portmone/transaction.rb
portmone-0.0.7 lib/portmone/transaction.rb
portmone-0.0.6 lib/portmone/transaction.rb