Sha256: 4ad958bd4907ed3daa4cd81bd8a088f5231a85841883ba5a1730d2942b86505b

Contents?: true

Size: 905 Bytes

Versions: 18

Compression:

Stored size: 905 Bytes

Contents

module Opay
  module Payable
    extend ActiveSupport::Concern
    extend ActiveModel::Callbacks

    included do
      has_one :payment, as: :payable, class_name: 'Opay::Payment'
      define_model_callbacks :payment, only: :after
    end

    def finished?
      payment.present? && payment.finished?
    end

    def finish
      run_callbacks :payment do
        payment.update_attribute(:finished, true)
      end
    end

    def prepare_payment
      if payment.blank?
        create_payment!(provider: 'payu', amount: amount, payable: self)
      else
        raise 'Payment was finished' if payment.finished?
        payment.update_attribute(:session_id, Payment.generate_session_id)
        payment
      end
    end

    def payment_session_id
      raise 'Resource must be prepared before payment' if payment.blank?
      payment.session_id
    end

    module ClassMethods
    end

  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
opay-1.3.2 lib/opay/payable.rb
opay-1.3.1 lib/opay/payable.rb
opay-1.3.0 lib/opay/payable.rb
opay-1.2.8 lib/opay/payable.rb
opay-1.2.7 lib/opay/payable.rb
opay-1.2.6 lib/opay/payable.rb
opay-1.2.5 lib/opay/payable.rb
opay-1.2.4 lib/opay/payable.rb
opay-1.2.3 lib/opay/payable.rb
opay-1.2.2 lib/opay/payable.rb
opay-1.2.1 lib/opay/payable.rb
opay-1.2.0 lib/opay/payable.rb
opay-1.1.6 lib/opay/payable.rb
opay-1.1.5 lib/opay/payable.rb
opay-1.1.4 lib/opay/payable.rb
opay-1.1.3 lib/opay/payable.rb
opay-1.1.2 lib/opay/payable.rb
opay-1.1.1 lib/opay/payable.rb