Sample code for 30+ languages & platforms
Unicode C++

effectconnect Read Orderlist

See more effectconnect Examples

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

Chilkat Unicode C++ Downloads

Unicode C++
#include <CkHttpW.h>
#include <CkDateTimeW.h>
#include <CkXmlW.h>
#include <CkStringBuilderW.h>
#include <CkCrypt2W.h>
#include <CkHttpResponseW.h>

void ChilkatSample(void)
    {
    bool success = false;

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

    const wchar_t *fullUri = L"https://submit.effectconnect.com/orderlist";
    const wchar_t *uri = L"/orderlist";
    const wchar_t *apiVersion = L"2.0";

    CkHttpW http;

    // Use your effectconnect public key here..
    http.SetRequestHeader(L"KEY",L"PUBLIC_KEY");
    http.SetRequestHeader(L"VERSION",apiVersion);
    http.SetRequestHeader(L"URI",uri);
    http.SetRequestHeader(L"RESPONSETYPE",L"XML");
    http.SetRequestHeader(L"RESPONSELANGUAGE",L"en");

    // Get the current date/time in timestamp format.
    CkDateTimeW dt;
    dt.SetFromCurrentSystemTime();
    const wchar_t *timestamp = dt.getAsTimestamp(true);

    http.SetRequestHeader(L"TIME",timestamp);
    wprintf(L"timestamp = %s\n",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

    CkXmlW xml;
    xml.put_Tag(L"list");
    xml.UpdateChildContent(L"filters|fromDateFilter|filterValue",L"2018-09-14T12:12:12+01:00");
    xml.UpdateChildContent(L"filters|toDateFilter|filterValue",L"2019-04-13T23:59:59+01:00");
    xml.UpdateChildContent(L"filters|hasStatusFilter|filterValue",L"paid");
    xml.UpdateChildContent(L"filters|hasTagFilter|filterValue|tagName",L"Test");
    xml.UpdateChildContent(L"filters|hasTagFilter|filterValue|exclude",L"false");
    xml.put_EmitCompact(true);

    CkStringBuilderW sbXml;
    xml.GetXmlSb(sbXml);

    // Build a string-to-sign and sign it using our effectconnect private key
    CkStringBuilderW sbStringToSign;
    sbStringToSign.AppendInt(sbXml.get_Length());
    sbStringToSign.Append(L"POST");
    sbStringToSign.Append(uri);
    sbStringToSign.Append(apiVersion);
    sbStringToSign.Append(timestamp);

    CkCrypt2W crypt;
    crypt.put_MacAlgorithm(L"hmac");
    crypt.put_HashAlgorithm(L"sha512");
    crypt.put_EncodingMode(L"base64");
    // Use your effectconnect private key here:
    crypt.SetMacKeyString(L"PRIVATE_KEY");
    http.SetRequestHeader(L"SIGNATURE",crypt.macStringENC(sbStringToSign.getAsString()));

    // Send the POST..
    CkHttpResponseW resp;
    success = http.HttpStr(L"POST",fullUri,xml.getXml(),L"utf-8",L"application/xml",resp);
    if (success == false) {
        wprintf(L"%s\n",http.lastErrorText());
        return;
    }

    wprintf(L"response status code = %d\n",resp.get_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.
    CkXmlW xmlResp;
    xmlResp.LoadXml(resp.bodyStr());

    wprintf(L"response body:\n");
    wprintf(L"%s\n",xmlResp.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.
    http.ClearHeaders();
    }