Sha256: 1f17be5fd1979e2e49e345c1abde23e161f4f2744583f23d4bc995e22be447a7

Contents?: true

Size: 1.22 KB

Versions: 1

Compression:

Stored size: 1.22 KB

Contents

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

class Datatrans::JSON::Transaction
  class MerchantAuthorize
    # class to authorize a transaction without user interaction https://api-reference.datatrans.ch/#tag/v1transactions/operation/authorize
    attr_accessor :params, :datatrans

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

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

    def process
      post(datatrans.url(:authorize_transaction),
        headers: {"Content-Type" => "application/json"},
        body: request_body.to_json).parsed_response
    end

    def request_body
      auto_settle = params[:auto_settle].nil? ? true : params[:auto_settle]

      {
        currency: params[:currency],
        refno: params[:refno],
        amount: params[:amount],
        card: params[:card],
        autoSettle: auto_settle
      }
    end
  end

  class MerchantAuthorizeResponse < Response
    def successful?
      params["error"].blank? && params["transactionId"].present?
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

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