Perl
Perl
effectconnect Product Update
See more effectconnect Examples
Use this call to update a product (f.e. stock or price) in EffectConnect.Chilkat Perl Downloads
use chilkat();
$success = 0;
# This example assumes the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
$uri = "/products";
$apiVersion = "2.0";
$http = chilkat::CkHttp->new();
$req = chilkat::CkHttpRequest->new();
# 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 = chilkat::CkDateTime->new();
$dt->SetFromCurrentSystemTime();
$timestamp = $dt->getAsTimestamp(1);
$req->AddHeader("TIME",$timestamp);
print "timestamp = " . $timestamp . "\r\n";
$sbXml = chilkat::CkStringBuilder->new();
$success = $sbXml->LoadFile("qa_data/xml/effectconnect/effconUpdate.xml","utf-8");
print "length = " . $sbXml->get_Length() . "\r\n";
$req->put_HttpVerb("PUT");
$req->put_Path($uri);
$req->put_ContentType("multipart/form-data");
$success = $req->AddStringForUpload("payload","effconUpdate.xml",$sbXml->getAsString(),"utf-8");
if ($success == 0) {
print $req->lastErrorText() . "\r\n";
exit;
}
# Build a string-to-sign and sign it using our effectconnect private key
$sbStringToSign = chilkat::CkStringBuilder->new();
$sbStringToSign->AppendInt($sbXml->get_Length());
$sbStringToSign->Append("PUT");
$sbStringToSign->Append($uri);
$sbStringToSign->Append($apiVersion);
$sbStringToSign->Append($timestamp);
$crypt = chilkat::CkCrypt2->new();
$crypt->put_MacAlgorithm("hmac");
$crypt->put_HashAlgorithm("sha512");
$crypt->put_EncodingMode("base64");
# Use your effectconnect private key here:
$crypt->SetMacKeyString("PRIVATE_KEY");
$req->AddHeader("SIGNATURE",$crypt->macStringENC($sbStringToSign->getAsString()));
$resp = chilkat::CkHttpResponse->new();
$success = $http->HttpSReq("submit.effectconnect.com",443,1,$req,$resp);
if ($success == 0) {
print $http->lastErrorText() . "\r\n";
exit;
}
print "response status code = " . $resp->get_StatusCode() . "\r\n";
# 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::CkXml->new();
$xmlResp->LoadXml($resp->bodyStr());
print "response body:" . "\r\n";
print $xmlResp->getXml() . "\r\n";
# 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");