Sha256: 60200657bbe887f45ef07e351cc44e8df5d37910fbc0f8c42c9d5f0fde2f605f

Contents?: true

Size: 1.17 KB

Versions: 1

Compression:

Stored size: 1.17 KB

Contents

require "httparty"
require "datatrans/json/transaction/response"

class Datatrans::JSON::Transaction
  class Status
    # class to check a transaction status and get a transaction info: https://api-reference.datatrans.ch/#tag/v1transactions/operation/status
    attr_accessor :params, :datatrans

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

    def get(url, options = {})
      options = options
        .merge(datatrans.proxy)
        .merge(basic_auth: {username: datatrans.merchant_id, password: datatrans.password})
      HTTParty.get(url, **options)
    end

    def process
      get(datatrans.url(:json_status_url, transaction_id: params[:transaction_id]),
        headers: {"Content-Type" => "application/json"}).parsed_response
    end
  end

  class StatusResponse < Response
    def successful?
      params["error"].blank? && ["settled", "transmitted"].include?(response_code)
    end

    def response_code
      params["status"]
    rescue
      nil
    end

    def reference_number
      params["refno"]
    rescue
      nil
    end

    def amount
      params["detail"]["settle"]["amount"]
    rescue
      nil
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
datatrans-5.2.0 lib/datatrans/json/transaction/status.rb