Sample code for 30+ languages & platforms
B4X

effectconnect Product Update

See more effectconnect Examples

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

Chilkat B4X Downloads

B4X
Dim success As Boolean = False

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

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

Dim http As ChilkatHttp
http.Initialize("http")
Dim req As ChilkatHttpRequest
req.Initialize

'  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 ChilkatDateTime
dt.Initialize
dt.SetFromCurrentSystemTime
Dim timestamp As String = dt.GetAsTimestamp(True)

req.AddHeader("TIME", timestamp)
Log("timestamp = " & timestamp)

Dim sbXml As ChilkatStringBuilder
sbXml.Initialize
success = sbXml.LoadFile("qa_data/xml/effectconnect/effconUpdate.xml", "utf-8")
Log("length = " & 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
    Log(req.LastErrorText)
    Return
End If


'  Build a string-to-sign and sign it using our effectconnect private key
Dim sbStringToSign As ChilkatStringBuilder
sbStringToSign.Initialize
sbStringToSign.AppendInt(sbXml.Length)
sbStringToSign.Append("PUT")
sbStringToSign.Append(uri)
sbStringToSign.Append(apiVersion)
sbStringToSign.Append(timestamp)

Dim crypt As ChilkatCrypt2
crypt.Initialize("crypt")
crypt.MacAlgorithm = "hmac"
crypt.HashAlgorithm = "sha512"
crypt.EncodingMode = "base64"
'  Use your effectconnect private key here:
crypt.SetMacKeyString("PRIVATE_KEY")
req.AddHeader("SIGNATURE", crypt.MacStringENC(sbStringToSign.GetAsString))

Dim resp As ChilkatHttpResponse
resp.Initialize
success = http.HttpSReq("submit.effectconnect.com", 443, True, req, resp)
If success = False Then
    Log(http.LastErrorText)
    Return
End If


Log("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.
Dim xmlResp As ChilkatXml
xmlResp.Initialize
xmlResp.LoadXml(resp.BodyStr)

Log("response body:")
Log(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")