Sample code for 30+ languages & platforms
Lua

MWS RequestReport (Amazon Marketplace Web Service)

See more Amazon MWS Examples

Creates a report request and submits the request to Amazon MWS.

See Amazon MWS RequestReport for more information.

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

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

local rest = chilkat.Rest.new()

-- Connect to the Amazon MWS REST server.
--
-- Make sure to connect to the correct Amazon MWS Endpoint, 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)
if not success then
    print("ConnectFailReason: " .. rest.connect_fail_reason)
    print(rest.last_error_text)
    return
end

rest.host = "mws.amazonservices.com"

rest:add_query_param("AWSAccessKeyId", "0PB842EXAMPLE7N4ZTR2")
rest:add_query_param("Action", "RequestReport")
rest:add_query_param("EndDate", "2008-06-26T18:12:21")
rest:add_query_param("MWSAuthToken", "amzn.mws.4ea38b7b-f563-7709-4bae-87aeaEXAMPLE")
rest:add_query_param("Marketplace", "ATVPDKIKX0DER")
rest:add_query_param("ReportType", "_GET_MERCHANT_LISTINGS_DATA_")
rest:add_query_param("SellerId", "A1XEXAMPLE5E6")
rest:add_query_param("SignatureMethod", "HmacSHA256")
rest:add_query_param("SignatureVersion", "2")
rest:add_query_param("StartDate", "2009-01-03T18:12:21")
rest:add_query_param("Version", "2009-01-01")

-- Add the MWS Signature param.  (Also adds the Timestamp parameter using the curent system date/time.)
-- The AddMwsSignature method adds the Timestamp and Signature query params.
rest:add_mws_signature("POST", "/Reports/2009-01-01", "mws.amazonservices.com", "MWS_SECRET_KEY")

local responseXml = rest:full_request_form_url_encoded("POST", "/Reports/2009-01-01")
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.")

-- Sample Response

-- Use this online tool to generate parsing code from sample XML:
-- Generate Parsing Code from XML

-- <?xml version="1.0"?>
-- <RequestReportResponse
--     xmlns="http://mws.amazonaws.com/doc/2009-01-01/">
--     <RequestReportResult>
--         <ReportRequestInfo>
--             <ReportRequestId>2291326454</ReportRequestId>
--             <ReportType>_GET_MERCHANT_LISTINGS_DATA_</ReportType>
--             <StartDate>2009-01-21T02:10:39+00:00</StartDate>
--             <EndDate>2009-02-13T02:10:39+00:00</EndDate>
--             <Scheduled>false</Scheduled>
--             <SubmittedDate>2009-02-20T02:10:39+00:00</SubmittedDate>
--             <ReportProcessingStatus>_SUBMITTED_</ReportProcessingStatus>
--         </ReportRequestInfo>
--     </RequestReportResult>
--     <ResponseMetadata>
--         <RequestId>88faca76-b600-46d2-b53c-0c8c4533e43a</RequestId>
--     </ResponseMetadata>
-- </RequestReportResponse>

local xml = chilkat.Xml.new()
xml:load_xml(responseXml)

local RequestReportResponse_xmlns = xml:get_attr_value("xmlns")
local ReportRequestId = xml:get_child_content("RequestReportResult|ReportRequestInfo|ReportRequestId")
local ReportType = xml:get_child_content("RequestReportResult|ReportRequestInfo|ReportType")
local StartDate = xml:get_child_content("RequestReportResult|ReportRequestInfo|StartDate")
local EndDate = xml:get_child_content("RequestReportResult|ReportRequestInfo|EndDate")
local Scheduled = xml:get_child_content("RequestReportResult|ReportRequestInfo|Scheduled")
local SubmittedDate = xml:get_child_content("RequestReportResult|ReportRequestInfo|SubmittedDate")
local ReportProcessingStatus = xml:get_child_content("RequestReportResult|ReportRequestInfo|ReportProcessingStatus")
local RequestId = xml:get_child_content("ResponseMetadata|RequestId")