Sha256: 5a2e11326bd6586bc0e4a106c3612543ac37970a9292b313548c7ddebefbd6a6

Contents?: true

Size: 1.05 KB

Versions: 6

Compression:

Stored size: 1.05 KB

Contents

module Sisow
  module Api
    class Callback

      attr_accessor :transaction_id,
                    :entrance_code,
                    :status,
                    :sha1

      def initialize(attributes = {})
        attributes.each do |k,v|
          send("#{k}=", v)
        end
      end

      def valid?
        valid_callback == true
      end

      def validate!
        return true if valid_callback == true
        raise Sisow::Exception, "This callback is forged" and return if valid_callback == false
      end

      def success?
        @status == 'Success'
      end

      def expired?
        @status == 'Expired'
      end

      def cancelled?
        @status == 'Cancelled'
      end

      def failure?
        @status == 'Failure'
      end

      private

        def valid_callback
          string = [ @transaction_id, @entrance_code, @status, Sisow.configuration.merchant_id, Sisow.configuration.merchant_key ].join
          calculated_sha1 = Digest::SHA1.hexdigest(string)

          calculated_sha1 == @sha1
        end

    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
sisow-1.1.1 lib/sisow/api/callback.rb
sisow-1.1.0 lib/sisow/api/callback.rb
sisow-1.0.1 lib/sisow/api/callback.rb
sisow-1.0.0 lib/sisow/api/callback.rb
sisow-0.9.9 lib/sisow/api/callback.rb
sisow-0.9.5 lib/sisow/api/callback.rb