Sample code for 30+ languages & platforms
Tcl

effectconnect Read Orderlist

See more effectconnect Examples

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

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

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

set fullUri "https://submit.effectconnect.com/orderlist"
set uri "/orderlist"
set apiVersion "2.0"

set http [new_CkHttp]

# Use your effectconnect public key here..
CkHttp_SetRequestHeader $http "KEY" "PUBLIC_KEY"
CkHttp_SetRequestHeader $http "VERSION" $apiVersion
CkHttp_SetRequestHeader $http "URI" $uri
CkHttp_SetRequestHeader $http "RESPONSETYPE" "XML"
CkHttp_SetRequestHeader $http "RESPONSELANGUAGE" "en"

# Get the current date/time in timestamp format.
set dt [new_CkDateTime]

CkDateTime_SetFromCurrentSystemTime $dt
set timestamp [CkDateTime_getAsTimestamp $dt 1]

CkHttp_SetRequestHeader $http "TIME" $timestamp
puts "timestamp = $timestamp"

# 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

set xml [new_CkXml]

CkXml_put_Tag $xml "list"
CkXml_UpdateChildContent $xml "filters|fromDateFilter|filterValue" "2018-09-14T12:12:12+01:00"
CkXml_UpdateChildContent $xml "filters|toDateFilter|filterValue" "2019-04-13T23:59:59+01:00"
CkXml_UpdateChildContent $xml "filters|hasStatusFilter|filterValue" "paid"
CkXml_UpdateChildContent $xml "filters|hasTagFilter|filterValue|tagName" "Test"
CkXml_UpdateChildContent $xml "filters|hasTagFilter|filterValue|exclude" "false"
CkXml_put_EmitCompact $xml 1

set sbXml [new_CkStringBuilder]

CkXml_GetXmlSb $xml $sbXml

# Build a string-to-sign and sign it using our effectconnect private key
set sbStringToSign [new_CkStringBuilder]

CkStringBuilder_AppendInt $sbStringToSign [CkStringBuilder_get_Length $sbXml]
CkStringBuilder_Append $sbStringToSign "POST"
CkStringBuilder_Append $sbStringToSign $uri
CkStringBuilder_Append $sbStringToSign $apiVersion
CkStringBuilder_Append $sbStringToSign $timestamp

set crypt [new_CkCrypt2]

CkCrypt2_put_MacAlgorithm $crypt "hmac"
CkCrypt2_put_HashAlgorithm $crypt "sha512"
CkCrypt2_put_EncodingMode $crypt "base64"
# Use your effectconnect private key here:
CkCrypt2_SetMacKeyString $crypt "PRIVATE_KEY"
CkHttp_SetRequestHeader $http "SIGNATURE" [CkCrypt2_macStringENC $crypt [CkStringBuilder_getAsString $sbStringToSign]]

# Send the POST..
set resp [new_CkHttpResponse]

set success [CkHttp_HttpStr $http "POST" $fullUri [CkXml_getXml $xml] "utf-8" "application/xml" $resp]
if {$success == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    delete_CkDateTime $dt
    delete_CkXml $xml
    delete_CkStringBuilder $sbXml
    delete_CkStringBuilder $sbStringToSign
    delete_CkCrypt2 $crypt
    delete_CkHttpResponse $resp
    exit
}

puts "response status code = [CkHttpResponse_get_StatusCode $resp]"

# 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.
set xmlResp [new_CkXml]

CkXml_LoadXml $xmlResp [CkHttpResponse_bodyStr $resp]

puts "response body:"
puts [CkXml_getXml $xmlResp]

# 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.
CkHttp_ClearHeaders $http

delete_CkHttp $http
delete_CkDateTime $dt
delete_CkXml $xml
delete_CkStringBuilder $sbXml
delete_CkStringBuilder $sbStringToSign
delete_CkCrypt2 $crypt
delete_CkHttpResponse $resp
delete_CkXml $xmlResp