OneShopNotificationListener.cfm
From Developer's API
<cftry>
<cfset oneShopApiWrapper = createObject("component", "OneShopAPI").init() />
<!--- TODO: Add your merchant Id --->
<cfset #oneShopApiWrapper.MerchantId("")# >
<!--- TODO: Add your merchant Key --->
<cfset #oneShopApiWrapper.MerchantKey("")# >
<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>