module VposModule

Constants

VERSION

Public Instance Methods

get_request(request_id) click to toggle source
# File lib/vpos_module.rb, line 46
def get_request(request_id)
  request = HTTParty.get("#{host}/requests/#{request_id}", set_headers)
  return_vpos_object(request)
end
get_request_id(response) click to toggle source
# File lib/vpos_module.rb, line 34
def get_request_id(response)
  if response[:location].nil?
    HTTParty.get("#{host}/references/invalid", set_headers)
  else
    if response[:status_code] == 202
      response[:location].gsub("/api/v1/requests/", "")
    else
      response[:location].gsub("/api/v1/transactions/", "")
    end
  end
end
get_transaction(transaction_id) click to toggle source
# File lib/vpos_module.rb, line 24
def get_transaction(transaction_id)
  request = HTTParty.get("#{host}/transactions/#{transaction_id}", set_headers)
  return_vpos_object(request)
end
get_transactions() click to toggle source
# File lib/vpos_module.rb, line 29
def get_transactions
  request = HTTParty.get("#{host}/transactions", set_headers)
  return_vpos_object(request)
end
new_payment(customer, amount, pos_id: @pos_id, callback_url: @payment_callback_url) click to toggle source
# File lib/vpos_module.rb, line 10
def new_payment(customer, amount, pos_id: @pos_id, callback_url: @payment_callback_url)
  content = set_headers
  content[:body] = {type:"payment", pos_id: pos_id, mobile: customer, amount: amount, callback_url: callback_url}.to_json
  request = HTTParty.post("#{host}/transactions", content)
  return_vpos_object(request)
end
new_refund(transaction_id, supervisor_card: @supervisor_card, callback_url: @refund_callback_url) click to toggle source
# File lib/vpos_module.rb, line 17
def new_refund(transaction_id, supervisor_card: @supervisor_card, callback_url: @refund_callback_url)
  content = set_headers
  content[:body] = {type: "refund", parent_transaction_id: transaction_id, supervisor_card: supervisor_card, callback_url: callback_url}.to_json
  request = HTTParty.post("#{host}/transactions", content)
  return_vpos_object(request)
end

Private Instance Methods

host() click to toggle source
# File lib/vpos_module.rb, line 70
def host
  if @environment == "PRD"
    "https://api.vpos.ao/api/v1"
  else
    "https://sandbox.vpos.ao/api/v1"
  end
end
return_vpos_object(request) click to toggle source
# File lib/vpos_module.rb, line 52
def return_vpos_object(request)
  case request.response.code.to_i
  when 200, 201
    return {status_code: request.response.code.to_i, message: request.response.message, data: request.parsed_response}
  when 202, 303
    return {status_code: request.response.code.to_i, message: request.response.message, location: request.headers["location"]}
  else
    return {status_code: request.response.code.to_i, message: request.response.message, details: request.parsed_response["errors"]}
  end
end
set_headers() click to toggle source
# File lib/vpos_module.rb, line 63
def set_headers
  content = {}
  headers = {'Content-Type' => "application/json", 'Accept' => "application/json", 'Authorization' => @token, 'Idempotency-Key' => SecureRandom.uuid}
  content[:headers] = headers
  content
end