Lianja
Lianja
effectconnect Product Update
See more effectconnect Examples
Use this call to update a product (f.e. stock or price) in EffectConnect.Chilkat Lianja Downloads
llSuccess = .F.
// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
lcUri = "/products"
lcApiVersion = "2.0"
loHttp = createobject("CkHttp")
loReq = createobject("CkHttpRequest")
// Use your effectconnect public key here...
loReq.AddHeader("KEY","PUBLIC_KEY")
loReq.AddHeader("VERSION",lcApiVersion)
loReq.AddHeader("URI",lcUri)
loReq.AddHeader("RESPONSETYPE","XML")
loReq.AddHeader("RESPONSELANGUAGE","en")
// Get the current date/time in timestamp format.
loDt = createobject("CkDateTime")
loDt.SetFromCurrentSystemTime()
lcTimestamp = loDt.GetAsTimestamp(.T.)
loReq.AddHeader("TIME",lcTimestamp)
? "timestamp = " + lcTimestamp
loSbXml = createobject("CkStringBuilder")
llSuccess = loSbXml.LoadFile("qa_data/xml/effectconnect/effconUpdate.xml","utf-8")
? "length = " + str(loSbXml.Length)
loReq.HttpVerb = "PUT"
loReq.Path = lcUri
loReq.ContentType = "multipart/form-data"
llSuccess = loReq.AddStringForUpload("payload","effconUpdate.xml",loSbXml.GetAsString(),"utf-8")
if (llSuccess = .F.) then
? loReq.LastErrorText
release loHttp
release loReq
release loDt
release loSbXml
return
endif
// Build a string-to-sign and sign it using our effectconnect private key
loSbStringToSign = createobject("CkStringBuilder")
loSbStringToSign.AppendInt(loSbXml.Length)
loSbStringToSign.Append("PUT")
loSbStringToSign.Append(lcUri)
loSbStringToSign.Append(lcApiVersion)
loSbStringToSign.Append(lcTimestamp)
loCrypt = createobject("CkCrypt2")
loCrypt.MacAlgorithm = "hmac"
loCrypt.HashAlgorithm = "sha512"
loCrypt.EncodingMode = "base64"
// Use your effectconnect private key here:
loCrypt.SetMacKeyString("PRIVATE_KEY")
loReq.AddHeader("SIGNATURE",loCrypt.MacStringENC(loSbStringToSign.GetAsString()))
loResp = createobject("CkHttpResponse")
llSuccess = loHttp.HttpSReq("submit.effectconnect.com",443,.T.,loReq,loResp)
if (llSuccess = .F.) then
? loHttp.LastErrorText
release loHttp
release loReq
release loDt
release loSbXml
release loSbStringToSign
release loCrypt
release loResp
return
endif
? "response status code = " + str(loResp.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.
loXmlResp = createobject("CkXml")
loXmlResp.LoadXml(loResp.BodyStr)
? "response body:"
? loXmlResp.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>
//
lcRequestType = loXmlResp.GetChildContent("Request|RequestType")
lcRequestAction = loXmlResp.GetChildContent("Request|RequestAction")
lcRequestVersion = loXmlResp.GetChildContent("Request|RequestVersion")
lcProcessedAt = loXmlResp.GetChildContent("Request|ProcessedAt")
lcResult = loXmlResp.GetChildContent("Response|Result")
lcProcessID = loXmlResp.GetChildContent("Response|ProductsUpdateResponseContainer|ProcessID")
release loHttp
release loReq
release loDt
release loSbXml
release loSbStringToSign
release loCrypt
release loResp
release loXmlResp