Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) MWS SubmitFeed (Amazon Marketplace Web Service)Uploads a feed for processing by Amazon MWS. See Amazon MWS SubmitFeed for the Amazon MWS SubmitFeed reference documentation. Important: The Chilkat v9.5.0.75 release accidentally breaks Amazon MWS (not AWS) authentication. If you need MWS with 9.5.0.75, send email to support@chilkatsoft.com for a hotfix, or revert back to v9.5.0.73, or update to a version after 9.5.0.75.
IncludeFile "CkXml.pb" IncludeFile "CkStringBuilder.pb" IncludeFile "CkRest.pb" IncludeFile "CkCrypt2.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. success.i ; This example will send an XML file in the HTTP request body. ; First we'll construct the XML, then we'll compute the MD5 digest which needs to be added as a query param.. ; Construct the following XML. (This is just a sample XML body..) ; <AmazonEnvelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ; xsi:noNamespaceSchemaLocation="amzn-envelope.xsd"> ; <Header> ; <DocumentVersion>1.01</DocumentVersion> ; <MerchantIdentifier>M_EXAMPLE_123456</MerchantIdentifier> ; </Header> ; <MessageType>Product</MessageType> ; <PurgeAndReplace>false</PurgeAndReplace> ; <Message> ; <MessageID>1</MessageID> ; <OperationType>Update</OperationType> ; <Product> ; <SKU>56789</SKU> ; <StandardProductID> ; <Type>ASIN</Type> ; <Value>B0EXAMPLEG</Value> ; </StandardProductID> ; <ProductTaxCode>A_GEN_NOTAX</ProductTaxCode> ; <DescriptionData> ; <Title>Example Product Title</Title> ; <Brand>Example Product Brand</Brand> ; <Description>This is an example product description.</Description> ; <BulletPoint>Example Bullet Point 1</BulletPoint> ; <BulletPoint>Example Bullet Point 2</BulletPoint> ; <MSRP currency="USD">25.19</MSRP> ; <Manufacturer>Example Product Manufacturer</Manufacturer> ; <ItemType>example-item-type</ItemType> ; </DescriptionData> ; <ProductData> ; <Health> ; <ProductType> ; <HealthMisc> ; <Ingredients>Example Ingredients</Ingredients> ; <Directions>Example Directions</Directions> ; </HealthMisc> ; </ProductType> ; </Health> ; </ProductData> ; </Product> ; </Message> ; </AmazonEnvelope> ; This code was generated by pasting the above XML into the online tool at http://tools.chilkat.io/xmlCreate.cshtml xml.i = CkXml::ckCreate() If xml.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkXml::setCkTag(xml, "AmazonEnvelope") CkXml::ckAddAttribute(xml,"xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance") CkXml::ckAddAttribute(xml,"xsi:noNamespaceSchemaLocation","amzn-envelope.xsd") CkXml::ckUpdateChildContent(xml,"Header|DocumentVersion","1.01") CkXml::ckUpdateChildContent(xml,"Header|MerchantIdentifier","M_EXAMPLE_123456") CkXml::ckUpdateChildContent(xml,"MessageType","Product") CkXml::ckUpdateChildContent(xml,"PurgeAndReplace","false") CkXml::ckUpdateChildContent(xml,"Message|MessageID","1") CkXml::ckUpdateChildContent(xml,"Message|OperationType","Update") CkXml::ckUpdateChildContent(xml,"Message|Product|SKU","56789") CkXml::ckUpdateChildContent(xml,"Message|Product|StandardProductID|Type","ASIN") CkXml::ckUpdateChildContent(xml,"Message|Product|StandardProductID|Value","B0EXAMPLEG") CkXml::ckUpdateChildContent(xml,"Message|Product|ProductTaxCode","A_GEN_NOTAX") CkXml::ckUpdateChildContent(xml,"Message|Product|DescriptionData|Title","Example Product Title") CkXml::ckUpdateChildContent(xml,"Message|Product|DescriptionData|Brand","Example Product Brand") CkXml::ckUpdateChildContent(xml,"Message|Product|DescriptionData|Description","This is an example product description.") CkXml::ckUpdateChildContent(xml,"Message|Product|DescriptionData|BulletPoint","Example Bullet Point 1") CkXml::ckUpdateChildContent(xml,"Message|Product|DescriptionData|BulletPoint[1]","Example Bullet Point 2") CkXml::ckUpdateAttrAt(xml,"Message|Product|DescriptionData|MSRP",1,"currency","USD") CkXml::ckUpdateChildContent(xml,"Message|Product|DescriptionData|MSRP","25.19") CkXml::ckUpdateChildContent(xml,"Message|Product|DescriptionData|Manufacturer","Example Product Manufacturer") CkXml::ckUpdateChildContent(xml,"Message|Product|DescriptionData|ItemType","example-item-type") CkXml::ckUpdateChildContent(xml,"Message|Product|ProductData|Health|ProductType|HealthMisc|Ingredients","Example Ingredients") CkXml::ckUpdateChildContent(xml,"Message|Product|ProductData|Health|ProductType|HealthMisc|Directions","Example Directions") ; Get the XML in the most compact form for the feed submission. sbXml.i = CkStringBuilder::ckCreate() If sbXml.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkXml::setCkEmitCompact(xml, 1) CkXml::ckGetXmlSb(xml,sbXml) ; Get the MD5 hash.. crypt.i = CkCrypt2::ckCreate() If crypt.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkCrypt2::setCkHashAlgorithm(crypt, "md5") contentMd5Value.s = CkCrypt2::ckHashStringENC(crypt,CkStringBuilder::ckGetAsString(sbXml)) rest.i = CkRest::ckCreate() If rest.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; Connect to the Amazon MWS REST server. ; ; Make sure to connect to the correct Amazon MWS Endpoing, otherwise ; you'll get an HTTP 401 response code. ; ; The possible servers are: ; ; North America (NA) https://mws.amazonservices.com ; Europe (EU) https://mws-eu.amazonservices.com ; India (IN) https://mws.amazonservices.in ; China (CN) https://mws.amazonservices.com.cn ; Japan (JP) https://mws.amazonservices.jp ; bTls.i = 1 port.i = 443 bAutoReconnect.i = 1 success = CkRest::ckConnect(rest,"mws.amazonservices.com",port,bTls,bAutoReconnect) CkRest::setCkHost(rest, "mws.amazonservices.com") CkRest::ckAddQueryParam(rest,"AWSAccessKeyId","0PB842ExampleN4ZTR2") CkRest::ckAddQueryParam(rest,"Action","SubmitFeed") CkRest::ckAddQueryParam(rest,"FeedType","_POST_PRODUCT_DATA_") CkRest::ckAddQueryParam(rest,"MWSAuthToken","amzn.mws.4ea38b7b-f563-7709-4bae-87aeaEXAMPLE") CkRest::ckAddQueryParam(rest,"MarketplaceId.Id.1","ATVExampleDER") CkRest::ckAddQueryParam(rest,"SellerId","A1XExample5E6") CkRest::ckAddQueryParam(rest,"ContentMD5Value",contentMd5Value) CkRest::ckAddQueryParam(rest,"SignatureMethod","HmacSHA256") CkRest::ckAddQueryParam(rest,"SignatureVersion","2") CkRest::ckAddQueryParam(rest,"Version","2009-01-01") ; Add the MWS Signature param. (Also adds the Timestamp parameter using the curent system date/time.) CkRest::ckAddMwsSignature(rest,"POST","/Feeds/2009-01-01","mws.amazonservices.com","MWS_SECRET_ACCESS_KEY_ID") CkRest::ckAddHeader(rest,"Content-Type","text/xml") responseXml.s = CkRest::ckFullRequestString(rest,"POST","/Feeds/2009-01-01",CkStringBuilder::ckGetAsString(sbXml)) If CkRest::ckLastMethodSuccess(rest) <> 1 Debug CkRest::ckLastErrorText(rest) CkXml::ckDispose(xml) CkStringBuilder::ckDispose(sbXml) CkCrypt2::ckDispose(crypt) CkRest::ckDispose(rest) ProcedureReturn EndIf If CkRest::ckResponseStatusCode(rest) <> 200 ; Examine the request/response to see what happened. Debug "response status code = " + Str(CkRest::ckResponseStatusCode(rest)) Debug "response status text = " + CkRest::ckResponseStatusText(rest) Debug "response header: " + CkRest::ckResponseHeader(rest) Debug "response body: " + responseXml Debug "---" Debug "LastRequestStartLine: " + CkRest::ckLastRequestStartLine(rest) Debug "LastRequestHeader: " + CkRest::ckLastRequestHeader(rest) EndIf ; Examine the XML returned in the response body. Debug responseXml Debug "----" Debug "Success." CkXml::ckDispose(xml) CkStringBuilder::ckDispose(sbXml) CkCrypt2::ckDispose(crypt) CkRest::ckDispose(rest) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.