Sample code for 30+ languages & platforms
Lianja

effectconnect Read Orderlist

See more effectconnect Examples

Get a set of orders filtered by the parameters in the XML payload.

Chilkat Lianja Downloads

Lianja
llSuccess = .F.

// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

lcFullUri = "https://submit.effectconnect.com/orderlist"
lcUri = "/orderlist"
lcApiVersion = "2.0"

loHttp = createobject("CkHttp")

// Use your effectconnect public key here..
loHttp.SetRequestHeader("KEY","PUBLIC_KEY")
loHttp.SetRequestHeader("VERSION",lcApiVersion)
loHttp.SetRequestHeader("URI",lcUri)
loHttp.SetRequestHeader("RESPONSETYPE","XML")
loHttp.SetRequestHeader("RESPONSELANGUAGE","en")

// Get the current date/time in timestamp format.
loDt = createobject("CkDateTime")
loDt.SetFromCurrentSystemTime()
lcTimestamp = loDt.GetAsTimestamp(.T.)

loHttp.SetRequestHeader("TIME",lcTimestamp)
? "timestamp = " + lcTimestamp

// Create the following XML request body:
// <?xml version="1.0" encoding="utf-8"?>
// <list>
//   <filters>
//     <fromDateFilter>
//       <filterValue>2018-09-14T12:12:12+01:00</filterValue>
//     </fromDateFilter>
//     <toDateFilter>
//       <filterValue>2019-04-13T23:59:59+01:00</filterValue>
//     </toDateFilter>
//     <hasStatusFilter>
//       <filterValue>paid</filterValue>
//     </hasStatusFilter>
//     <hasTagFilter>
//       <filterValue>
//         <tagName>Test</tagName>
//         <exclude>false</exclude>
//       </filterValue>
//     </hasTagFilter>
//   </filters>
// </list>

// Use this online tool to generate the code from sample XML: 
// Generate Code to Create XML

loXml = createobject("CkXml")
loXml.Tag = "list"
loXml.UpdateChildContent("filters|fromDateFilter|filterValue","2018-09-14T12:12:12+01:00")
loXml.UpdateChildContent("filters|toDateFilter|filterValue","2019-04-13T23:59:59+01:00")
loXml.UpdateChildContent("filters|hasStatusFilter|filterValue","paid")
loXml.UpdateChildContent("filters|hasTagFilter|filterValue|tagName","Test")
loXml.UpdateChildContent("filters|hasTagFilter|filterValue|exclude","false")
loXml.EmitCompact = .T.

loSbXml = createobject("CkStringBuilder")
loXml.GetXmlSb(loSbXml)

// Build a string-to-sign and sign it using our effectconnect private key
loSbStringToSign = createobject("CkStringBuilder")
loSbStringToSign.AppendInt(loSbXml.Length)
loSbStringToSign.Append("POST")
loSbStringToSign.Append(lcUri)
loSbStringToSign.Append(lcApiVersion)
loSbStringToSign.Append(lcTimestamp)

loCrypt = createobject("CkCrypt2")
loCrypt.MacAlgorithm = "hmac"
loCrypt.HashAlgorithm = "sha512"
loCrypt.EncodingMode = "base64"
// Use your effectconnect private key here:
loCrypt.SetMacKeyString("PRIVATE_KEY")
loHttp.SetRequestHeader("SIGNATURE",loCrypt.MacStringENC(loSbStringToSign.GetAsString()))

// Send the POST..
loResp = createobject("CkHttpResponse")
llSuccess = loHttp.HttpStr("POST",lcFullUri,loXml.GetXml(),"utf-8","application/xml",loResp)
if (llSuccess = .F.) then
    ? loHttp.LastErrorText
    release loHttp
    release loDt
    release loXml
    release loSbXml
    release loSbStringToSign
    release loCrypt
    release loResp
    return
endif

? "response status code = " + str(loResp.StatusCode)

// Examine the response.  The response status code can be 200 for both errors and success.
// The success or error is based on the XML returned in the response body.
loXmlResp = createobject("CkXml")
loXmlResp.LoadXml(loResp.BodyStr)

? "response body:"
? loXmlResp.GetXml()

// Remove previously set headers (unless we want the same headers for the next request,
// in which case we may remove or update individual headers by calling SetRequestHeader.
loHttp.ClearHeaders()


release loHttp
release loDt
release loXml
release loSbXml
release loSbStringToSign
release loCrypt
release loResp
release loXmlResp