Sha256: 8499f9bfc916edcbc289e7a3c3a52b0ac613287dd6b88a86c97cc7335cbaf055

Contents?: true

Size: 1.03 KB

Versions: 1

Compression:

Stored size: 1.03 KB

Contents

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

class Datatrans::JSON::Transaction
  class Settle
    # Class to settle a transaction https://api-reference.datatrans.ch/#tag/v1transactions/operation/settle
    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(:json_settle_url, transaction_id: params[:transaction_id]),
        headers: {"Content-Type" => "application/json"},
        body: request_body.to_json).parsed_response
    end

    def request_body
      {
        currency: params[:currency],
        amount: params[:amount],
        refno: params[:refno]
      }
    end
  end

  class SettleResponse < Response
    def successful?
      params["error"].blank?
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

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