Sha256: 35ee9af3f80295a1650e40c0382d533c2652b735980eef3f0ed556c9e4a1ba92

Contents?: true

Size: 1.5 KB

Versions: 1

Compression:

Stored size: 1.5 KB

Contents

require "datatrans/xml/transaction/request"
require "datatrans/xml/transaction/response"

class Datatrans::XML::Transaction
  class VoidRequest < Request
    def process
      post(datatrans.url(:xml_settlement_url),
        headers: {"Content-Type" => "text/xml"},
        body: build_void_request.to_s).parsed_response
    end

    private

    def build_void_request
      build_xml_request(:payment) do |xml|
        xml.amount params[:amount]
        xml.currency params[:currency]
        xml.uppTransactionId params[:transaction_id]
        xml.reqtype "DOA"
      end
    end
  end

  class VoidResponse < Response
    def successful?
      response_code == "01" && response_message == "cancellation succeeded"
    end

    def response_code
      params_root_node["response"]["responseCode"]
    rescue
      nil
    end

    def response_message
      params_root_node["response"]["responseMessage"]
    rescue
      nil
    end

    def transaction_id
      params_root_node["request"]["uppTransactionId"]
    rescue
      nil
    end

    def reference_number
      params_root_node["refno"]
    rescue
      nil
    end

    def error_code
      params_root_node["error"]["errorCode"]
    rescue
      nil
    end

    def error_message
      params_root_node["error"]["errorMessage"]
    rescue
      nil
    end

    def error_detail
      params_root_node["error"]["errorDetail"]
    rescue
      nil
    end

    private

    def params_root_node
      params["paymentService"]["body"]["transaction"]
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
datatrans-5.2.0 lib/datatrans/xml/transaction/void.rb