Sample code for 30+ languages & platforms
Xojo Plugin

effectconnect Product Update

See more effectconnect Examples

Use this call to update a product (f.e. stock or price) in EffectConnect.

Chilkat Xojo Plugin Downloads

Xojo Plugin
Dim success As Boolean
success = False

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

Dim uri As String
uri = "/products"
Dim apiVersion As String
apiVersion = "2.0"

Dim http As New Chilkat.Http
Dim req As New Chilkat.HttpRequest

// Use your effectconnect public key here...
req.AddHeader "KEY","PUBLIC_KEY"
req.AddHeader "VERSION",apiVersion
req.AddHeader "URI",uri
req.AddHeader "RESPONSETYPE","XML"
req.AddHeader "RESPONSELANGUAGE","en"

// Get the current date/time in timestamp format.
Dim dt As New Chilkat.CkDateTime
success = dt.SetFromCurrentSystemTime()
Dim timestamp As String
timestamp = dt.GetAsTimestamp(True)

req.AddHeader "TIME",timestamp
System.DebugLog("timestamp = " + timestamp)

Dim sbXml As New Chilkat.StringBuilder
success = sbXml.LoadFile("qa_data/xml/effectconnect/effconUpdate.xml","utf-8")
System.DebugLog("length = " + Str(sbXml.Length))

req.HttpVerb = "PUT"
req.Path = uri
req.ContentType = "multipart/form-data"
success = req.AddStringForUpload("payload","effconUpdate.xml",sbXml.GetAsString(),"utf-8")
If (success = False) Then
    System.DebugLog(req.LastErrorText)
    Return
End If

// Build a string-to-sign and sign it using our effectconnect private key
Dim sbStringToSign As New Chilkat.StringBuilder
success = sbStringToSign.AppendInt(sbXml.Length)
success = sbStringToSign.Append("PUT")
success = sbStringToSign.Append(uri)
success = sbStringToSign.Append(apiVersion)
success = sbStringToSign.Append(timestamp)

Dim crypt As New Chilkat.Crypt2
crypt.MacAlgorithm = "hmac"
crypt.HashAlgorithm = "sha512"
crypt.EncodingMode = "base64"
// Use your effectconnect private key here:
success = crypt.SetMacKeyString("PRIVATE_KEY")
req.AddHeader "SIGNATURE",crypt.MacStringENC(sbStringToSign.GetAsString())

Dim resp As New Chilkat.HttpResponse
success = http.HttpSReq("submit.effectconnect.com",443,True,req,resp)
If (success = False) Then
    System.DebugLog(http.LastErrorText)
    Return
End If

System.DebugLog("response status code = " + Str(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.
Dim xmlResp As New Chilkat.Xml
success = xmlResp.LoadXml(resp.BodyStr)

System.DebugLog("response body:")
System.DebugLog(xmlResp.GetXml())

// A sample response:

// <?xml version="1.0" encoding="utf-8"?>
// <ApiResponseContainer>
//     <Request>
//         <RequestType>Products</RequestType>
//         <RequestAction>Update</RequestAction>
//         <RequestVersion>2.0</RequestVersion>
//         <RequestIdentifier/>
//         <ProcessedAt>2019-04-18T15:37:32+02:00</ProcessedAt>
//     </Request>
//     <Response>
//         <Result>Success</Result>
//         <ProductsUpdateResponseContainer>
//             <ProcessID><![CDATA[f81ngzD2S7gooFk3]]></ProcessID>
//         </ProductsUpdateResponseContainer>
//     </Response>
// </ApiResponseContainer>
// 

Dim tagPath As String
Dim RequestType As String
Dim RequestAction As String
Dim RequestVersion As String
Dim ProcessedAt As String
Dim Result As String
Dim ProcessID As String

RequestType = xmlResp.GetChildContent("Request|RequestType")
RequestAction = xmlResp.GetChildContent("Request|RequestAction")
RequestVersion = xmlResp.GetChildContent("Request|RequestVersion")
ProcessedAt = xmlResp.GetChildContent("Request|ProcessedAt")
Result = xmlResp.GetChildContent("Response|Result")
ProcessID = xmlResp.GetChildContent("Response|ProductsUpdateResponseContainer|ProcessID")