Sample code for 30+ languages & platforms
Chilkat2-Python

effectconnect Product Update

See more effectconnect Examples

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

Chilkat Chilkat2-Python Downloads

Chilkat2-Python
import sys
import chilkat2

success = False

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

uri = "/products"
apiVersion = "2.0"

http = chilkat2.Http()
req = chilkat2.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.
dt = chilkat2.CkDateTime()
dt.SetFromCurrentSystemTime()
timestamp = dt.GetAsTimestamp(True)

req.AddHeader("TIME",timestamp)
print("timestamp = " + timestamp)

sbXml = chilkat2.StringBuilder()
success = sbXml.LoadFile("qa_data/xml/effectconnect/effconUpdate.xml","utf-8")
print("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):
    print(req.LastErrorText)
    sys.exit()

# Build a string-to-sign and sign it using our effectconnect private key
sbStringToSign = chilkat2.StringBuilder()
sbStringToSign.AppendInt(sbXml.Length)
sbStringToSign.Append("PUT")
sbStringToSign.Append(uri)
sbStringToSign.Append(apiVersion)
sbStringToSign.Append(timestamp)

crypt = chilkat2.Crypt2()
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()))

resp = chilkat2.HttpResponse()
success = http.HttpSReq("submit.effectconnect.com",443,True,req,resp)
if (success == False):
    print(http.LastErrorText)
    sys.exit()

print("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.
xmlResp = chilkat2.Xml()
xmlResp.LoadXml(resp.BodyStr)

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

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")