Lua
Lua
MWS SubmitFeed (Amazon Marketplace Web Service)
See more HTTP Misc Examples
Uploads a feed for processing by Amazon MWS.See Amazon MWS SubmitFeed for the Amazon MWS SubmitFeed reference documentation.
Chilkat Lua Downloads
local chilkat = require("chilkat")
-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
-- 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
local xml = chilkat.Xml.new()
xml.tag = "AmazonEnvelope"
xml:add_attribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance")
xml:add_attribute("xsi:noNamespaceSchemaLocation", "amzn-envelope.xsd")
xml:update_child_content("Header|DocumentVersion", "1.01")
xml:update_child_content("Header|MerchantIdentifier", "M_EXAMPLE_123456")
xml:update_child_content("MessageType", "Product")
xml:update_child_content("PurgeAndReplace", "false")
xml:update_child_content("Message|MessageID", "1")
xml:update_child_content("Message|OperationType", "Update")
xml:update_child_content("Message|Product|SKU", "56789")
xml:update_child_content("Message|Product|StandardProductID|Type", "ASIN")
xml:update_child_content("Message|Product|StandardProductID|Value", "B0EXAMPLEG")
xml:update_child_content("Message|Product|ProductTaxCode", "A_GEN_NOTAX")
xml:update_child_content("Message|Product|DescriptionData|Title", "Example Product Title")
xml:update_child_content("Message|Product|DescriptionData|Brand", "Example Product Brand")
xml:update_child_content("Message|Product|DescriptionData|Description", "This is an example product description.")
xml:update_child_content("Message|Product|DescriptionData|BulletPoint", "Example Bullet Point 1")
xml:update_child_content("Message|Product|DescriptionData|BulletPoint[1]", "Example Bullet Point 2")
xml:update_attr_at("Message|Product|DescriptionData|MSRP", true, "currency", "USD")
xml:update_child_content("Message|Product|DescriptionData|MSRP", "25.19")
xml:update_child_content("Message|Product|DescriptionData|Manufacturer", "Example Product Manufacturer")
xml:update_child_content("Message|Product|DescriptionData|ItemType", "example-item-type")
xml:update_child_content("Message|Product|ProductData|Health|ProductType|HealthMisc|Ingredients", "Example Ingredients")
xml:update_child_content("Message|Product|ProductData|Health|ProductType|HealthMisc|Directions", "Example Directions")
-- Get the XML in the most compact form for the feed submission.
local sbXml = chilkat.StringBuilder.new()
xml.emit_compact = true
xml:get_xml_sb(sbXml)
-- Get the MD5 hash..
local crypt = chilkat.Crypt2.new()
crypt.hash_algorithm = "md5"
local contentMd5Value = crypt:hash_string_enc(sbXml:get_as_string())
local rest = chilkat.Rest.new()
-- 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
--
local bTls = true
local port = 443
local bAutoReconnect = true
local success = rest:connect("mws.amazonservices.com", port, bTls, bAutoReconnect)
rest.host = "mws.amazonservices.com"
rest:add_query_param("AWSAccessKeyId", "0PB842ExampleN4ZTR2")
rest:add_query_param("Action", "SubmitFeed")
rest:add_query_param("FeedType", "_POST_PRODUCT_DATA_")
rest:add_query_param("MWSAuthToken", "amzn.mws.4ea38b7b-f563-7709-4bae-87aeaEXAMPLE")
rest:add_query_param("MarketplaceId.Id.1", "ATVExampleDER")
rest:add_query_param("SellerId", "A1XExample5E6")
rest:add_query_param("ContentMD5Value", contentMd5Value)
rest:add_query_param("SignatureMethod", "HmacSHA256")
rest:add_query_param("SignatureVersion", "2")
rest:add_query_param("Version", "2009-01-01")
-- Add the MWS Signature param. (Also adds the Timestamp parameter using the curent system date/time.)
rest:add_mws_signature("POST", "/Feeds/2009-01-01", "mws.amazonservices.com", "MWS_SECRET_ACCESS_KEY_ID")
rest:add_header("Content-Type", "text/xml")
local responseXml = rest:full_request_string("POST", "/Feeds/2009-01-01", sbXml:get_as_string())
if not rest.last_method_success then
print(rest.last_error_text)
return
end
if rest.response_status_code ~= 200 then
-- Examine the request/response to see what happened.
print("response status code = " .. rest.response_status_code)
print("response status text = " .. rest.response_status_text)
print("response header: " .. rest.response_header)
print("response body: " .. responseXml)
print("---")
print("LastRequestStartLine: " .. rest.last_request_start_line)
print("LastRequestHeader: " .. rest.last_request_header)
end
-- Examine the XML returned in the response body.
print(responseXml)
print("----")
print("Success.")