Sha256: 4c320f36ca64fe45f04dea5d39d3ed5dc64444d1e6a866b7f6741f1906581116

Contents?: true

Size: 1.45 KB

Versions: 7

Compression:

Stored size: 1.45 KB

Contents

require 'active_support/core_ext/hash'

module Datatrans::XML
  class Transaction
    attr_accessor :request
    attr_reader :response, :params, :datatrans

    def initialize(datatrans, params)
      @datatrans = datatrans
      @params = params.symbolize_keys
    end

    def authorize
      self.request = AuthorizeRequest.new(self.datatrans, params)
      @response = AuthorizeResponse.new(self.datatrans, request.process)
      @response.successful?
    end

    def void
      self.request = VoidRequest.new(self.datatrans, params)
      @response = VoidResponse.new(self.datatrans, request.process)
      @response.successful?
    end

    def capture
      self.request = CaptureRequest.new(self.datatrans, params)
      @response = CaptureResponse.new(self.datatrans, request.process)
      @response.successful?
    end

    def status
      self.request = StatusRequest.new(self.datatrans, params)
      @response = StatusResponse.new(self.datatrans, request.process)
      @response.successful?
    end

    # TODO: purchase, credit methods


    def method_missing(method, *args, &block)
      if response.respond_to? method.to_sym
        response.send(method)
      elsif request.respond_to? method.to_sym
        request.send(method)
      else
        super
      end
    end
  end
end

require 'datatrans/xml/transaction/authorize'
require 'datatrans/xml/transaction/void'
require 'datatrans/xml/transaction/capture'
require 'datatrans/xml/transaction/status'

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
datatrans-5.1.0 lib/datatrans/xml/transaction.rb
datatrans-5.0.0 lib/datatrans/xml/transaction.rb
datatrans-4.0.1 lib/datatrans/xml/transaction.rb
datatrans-4.0.0 lib/datatrans/xml/transaction.rb
datatrans-3.0.2 lib/datatrans/xml/transaction.rb
datatrans-3.0.1 lib/datatrans/xml/transaction.rb
datatrans-3.0.0 lib/datatrans/xml/transaction.rb