Sha256: 9a1a482cd3df3132ca600333904609b1ebbac62937b68a9d1d8fd8c403a830fd

Contents?: true

Size: 813 Bytes

Versions: 2

Compression:

Stored size: 813 Bytes

Contents

module Moneytree
  class Transaction < Moneytree::ApplicationRecord
    belongs_to :payment_gateway
    belongs_to :order, polymorphic: true

    validates_presence_of :psp_error, if: :failed?

    enum status: %i[initialized pending completed failed]

    serialize :details

    delegate :payment_provider, to: :payment_gateway

    after_create_commit :execute_transaction

    def card
      payment_provider.card_for(self)
    end

    def process_response(response)
      if response.success?
        update!(
          status: :completed,
          psp_error: response.message,
          details: (details || {}).merge(response.body)
        )
      else
        # FIXME: pending state
        update!(
          status: :failed,
          psp_error: response.message
        )
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
moneytree-rails-0.1.11 app/models/moneytree/transaction.rb
moneytree-rails-0.1.10 app/models/moneytree/transaction.rb