Sample code for 30+ languages & platforms
Go

effectconnect Read Orderlist

See more effectconnect Examples

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

Chilkat Go Downloads

Go
    success := false

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

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

    http := chilkat.NewHttp()

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

    // Get the current date/time in timestamp format.
    dt := chilkat.NewCkDateTime()
    dt.SetFromCurrentSystemTime()
    timestamp := dt.GetAsTimestamp(true)

    http.SetRequestHeader("TIME",*timestamp)
    fmt.Println("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

    xml := chilkat.NewXml()
    xml.SetTag("list")
    xml.UpdateChildContent("filters|fromDateFilter|filterValue","2018-09-14T12:12:12+01:00")
    xml.UpdateChildContent("filters|toDateFilter|filterValue","2019-04-13T23:59:59+01:00")
    xml.UpdateChildContent("filters|hasStatusFilter|filterValue","paid")
    xml.UpdateChildContent("filters|hasTagFilter|filterValue|tagName","Test")
    xml.UpdateChildContent("filters|hasTagFilter|filterValue|exclude","false")
    xml.SetEmitCompact(true)

    sbXml := chilkat.NewStringBuilder()
    xml.GetXmlSb(sbXml)

    // Build a string-to-sign and sign it using our effectconnect private key
    sbStringToSign := chilkat.NewStringBuilder()
    sbStringToSign.AppendInt(sbXml.Length())
    sbStringToSign.Append("POST")
    sbStringToSign.Append(uri)
    sbStringToSign.Append(apiVersion)
    sbStringToSign.Append(*timestamp)

    crypt := chilkat.NewCrypt2()
    crypt.SetMacAlgorithm("hmac")
    crypt.SetHashAlgorithm("sha512")
    crypt.SetEncodingMode("base64")
    // Use your effectconnect private key here:
    crypt.SetMacKeyString("PRIVATE_KEY")
    http.SetRequestHeader("SIGNATURE",*crypt.MacStringENC(*sbStringToSign.GetAsString()))

    // Send the POST..
    resp := chilkat.NewHttpResponse()
    success = http.HttpStr("POST",fullUri,*xml.GetXml(),"utf-8","application/xml",resp)
    if success == false {
        fmt.Println(http.LastErrorText())
        http.DisposeHttp()
        dt.DisposeCkDateTime()
        xml.DisposeXml()
        sbXml.DisposeStringBuilder()
        sbStringToSign.DisposeStringBuilder()
        crypt.DisposeCrypt2()
        resp.DisposeHttpResponse()
        return
    }

    fmt.Println("response status code = ", resp.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.
    xmlResp := chilkat.NewXml()
    xmlResp.LoadXml(resp.BodyStr())

    fmt.Println("response body:")
    fmt.Println(*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()

    http.DisposeHttp()
    dt.DisposeCkDateTime()
    xml.DisposeXml()
    sbXml.DisposeStringBuilder()
    sbStringToSign.DisposeStringBuilder()
    crypt.DisposeCrypt2()
    resp.DisposeHttpResponse()
    xmlResp.DisposeXml()