OneShopNotificationListener.cfm

From Developer's API

Revision as of 20:14, 27 May 2008 by Chrisn (Talk | contribs)
<cftry>

	<cfset oneShopApiWrapper = createObject("component", "OneShopAPI").init() />
	<cfset #oneShopApiWrapper.MerchantId("118303")# >
	<cfset #oneShopApiWrapper.MerchantKey("0")# >
	<cfset #oneShopApiWrapper.ApiUri("https://www.mcssl.com")#>
	
	<cfset requestBody = GetHttpRequestData()>	
	<cfset requestData = ToString(requestBody.content)>
					
	<!--- Use REReplace to remove Byte-Order-Mark from XML the xmlParse method does not like this mark --->				
	<cfset requestBodyXML = xmlParse(REReplace(requestData,"^[^<]*", "", "all"))>
	
	<!--- cfset requestBodyXML = xmlParse("<NewOrder><Token>ea7fa6fa0156473281018d81edf5723e</Token></NewOrder>")--->		
		
	<cfset notificationType =  requestBodyXML.XMLRoot.XMLName>
	
	<cfset tokenNode = xmlSearch(requestBodyXML, "/" & notificationType & "/Token")>	
	<cfset token = tokenNode[1].xmlText>			
				
	<cfswitch expression="#notificationType#">
		
		<cfcase value="NewOrder">					
			<cfset result = #OneShopApiWrapper.GetOrderById(token)# />					
		</cfcase>
		
		<cfdefaultcase> 
			<!--- May have other types of notifications in the future --->
		</cfdefaultcase>
	</cfswitch>

	<!--- Load the result into XML --->
	<cfset apiResultXML = xmlParse(#result#) />
					
	<cfset apiSuccess = apiResultXML.Response.XmlAttributes["success"] >
				
	<!--- Check if the API returned an error --->
	<cfif apiSuccess IS "true">
		<!---TODO: Do something with the apiResultXML--->
	
	<cfelse>
		<!---TODO: Do something with the error returned by the API  --->
	</cfif>	

<cfcatch>
		<!---TODO: Do something with the exception  --->
</cfcatch>

</cftry>