From Developer's API

'This class is a wrapper class to the API and will be used to contact the API
Class OneShopAPI

	private m_MerchantID
	private m_MerchantKey
	private m_ApiUrl
	private	m_ApiCallParameters		
	' This property sets your merchant id	
	public Property let MerchantID(value)
		m_merchantID = value
	end Property 
	' This property sets your merchant api key
	public Property let MerchantKey(value)
		m_merchantKey = value
	end Property
	' This property sets the url location of the api 
	public Property let ApiUrl(value)
		m_apiUrl = value
	end Property
	private sub class_initialize()
		set m_ApiCallParameters	= Server.CreateObject("Scripting.Dictionary")
	end sub
	' This methods takes the NextRecordSet node and
	' parses it into the the Api Parameters dictionary
	public sub BuildApiParameters(nextRecordSetNode)
		if nextRecordSetNode.nodename = "NextRecordSet" then				
			for each node in nextRecordSetNode.ChildNodes
				AddApiParameter node.nodename, node.text
		end if					
	end sub
	' This method will add required parameters to a parameter array
	' This array will be used when building the request body to 
	' send to the API		
	public sub AddApiParameter(parameterName, parameterValue)
		' Check if key already exists if so reset the value to the
		' value passed in to the method
		if m_apiCallParameters.Exists(parameterName) = false then
			m_apiCallParameters.Add parameterName,parameterValue
			m_apiCallParameters.item(parameterName) = parameterValue
		end if			
	end Sub	
	'This method will clear all the values in the api parameters dictionary
	public Sub ClearAPIParameters()
	end Sub	

	'this method uses the WinHttpRequest object to make
	'a POST request to the api and return the response
	'from the API
	private function SendHttpRequest(url, request_body)
		dim winHttp
		dim apiResult 
		Set winHttp = Server.CreateObject("WinHttp.WinHttpRequest.5.1")			
		winHttp.Open "POST", url, false			
		winHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 						
		winHttp.Send request_body					
		apiResult = winHttp.ResponseBody
		set winHttp = nothing
		SendHttpRequest = apiResult
	end function
	' This method will call the win_http request method
	' after appending the proper information to the url
	' and creating the request body
	private function ApiRequest(api_path)
		dim url
		dim request_body
		dim result

		url = m_apiUrl & "/API/" & m_merchantID & api_path			
		request_body = CreateRequestString()			
		result = SendHttpRequest(url, request_body)			
		ApiRequest = result					

	end function		
	' This method will take a properly formatted api url
	' and create the response body then call the http request method
	public function XlinkApiRequest(url)
		dim request_body
		dim result
		request_body = CreateRequestString()			
		result = SendHttpRequest(url, request_body)			
		XlinkApiRequest = result
	end function
	' This method will create the request body
	' which consists of the merchant key wrapped
	' in XML expected by the API
	private function CreateRequestString()
		dim requestBody
		requestBody = "<Request><Key>" & m_merchantKey & "</Key>" &	ParseAPIParameters() & "</Request>"			
		CreateRequestString = requestBody
	end function
	' This method will take an array of parameters and create
	' the rest of the request body to send to the API
	private function ParseAPIParameters()
		dim bodyParameters
		bodyParameters = ""
		for each key in m_apiCallParameters.Keys
			bodyParameters = bodyParameters & _
				"<" & key & ">" & m_apiCallParameters.Item(key) & "</"  & key & ">"
		ParseAPIParameters = bodyParameters
	end function
	public function GetOrderList()
		GetOrderList = ApiRequest("/ORDERS/LIST")
	end function
	public function GetOrderById(order_id)
		GetOrderById = ApiRequest("/ORDERS/" & order_id & "/READ")
	end function
	public function GetProductList()
		GetProductList = ApiRequest("/PRODUCTS/LIST")
	end function
	public function GetProductById(product_id)
		GetProductById = ApiRequest("/PRODUCTS/" & product_id & "/READ")
	end function
	public function GetClientList()
		GetClientList = ApiRequest("/CLIENTS/LIST")
	end function
	public function GetClientById(client_id)
		GetClientById = ApiRequest("/CLIENTS/" & client_id & "/READ")
	end function
	public function GetAvailableAPIMethods()
		GetAvailableAPIMethods = ApiRequest("")
	end function	
	public function GetErrorList()
		GetErrorList = ApiRequest("/ERRORS/LIST")
	end function		

end Class