Tcl
Tcl
Amazon MWS Upload Invoice
See more Amazon MWS Examples
Demonstrates how to upload an invoice using _UPLOAD_VAT_INVOICE_FeedType to submit an invoice for an order.Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
set rest [new_CkRest]
# 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.
#
# See Amazon MWS endpoints and MarketplaceId values
set bTls 1
set port 443
set bAutoReconnect 1
set success [CkRest_Connect $rest "mws.amazonservices.com" $port $bTls $bAutoReconnect]
CkRest_put_Host $rest "mws.amazonservices.com"
# MarketplaceList.Id parameter �This should be the marketplace in which the order was placed. Only one marketplace must be used per order.T
# Here are the marketplace ID's
# Spain: A1RKKUPIHCS9HS
# UK: A1F83G8C2ARO7P
# France: A13V1IB3VIYZZH
# Germany: A1PA6795UKMFR9
# Italy: APJ6JRA9NG5V4
# ...
# (See https://docs.developer.amazonservices.com/en_US/dev_guide/DG_Endpoints.html)
# FeedOptions parameter � Seller can input key value pairs to give important metadata along with the PDF invoice.
CkRest_AddQueryParam $rest "FeedOptions" "metadata:orderid=206-2341234-3455465;metadata:invoicenumber=INT-3431-XJE3;metadata:documenttype=Invoice"
# Load the PDF invoice file that is to be the body of the HTTP POST request.
set pdfData [new_CkBinData]
set success [CkBinData_LoadFile $pdfData "qa_data/pdf/sample.pdf"]
# Get the MD5 hash of the PDF data.
set crypt [new_CkCrypt2]
CkCrypt2_put_HashAlgorithm $crypt "md5"
CkCrypt2_put_EncodingMode $crypt "base64"
set md5Hash [CkCrypt2_hashBdENC $crypt $pdfData]
CkRest_AddQueryParam $rest "AWSAccessKeyId" "0PB842ExampleN4ZTR2"
CkRest_AddQueryParam $rest "Action" "SubmitFeed"
CkRest_AddQueryParam $rest "FeedType" "_UPLOAD_VAT_INVOICE_"
CkRest_AddQueryParam $rest "MWSAuthToken" "EXAMPLE-amzn.mws.4ea38b7b-f563-7709-4bae-87aea-EXAMPLE"
CkRest_AddQueryParam $rest "MarketplaceIdList.Id.1" "ATVExampleDER"
CkRest_AddQueryParam $rest "SellerId" "A1XExample5E6"
CkRest_AddQueryParam $rest "ContentMD5Value" $md5Hash
CkRest_AddQueryParam $rest "SignatureMethod" "HmacSHA256"
CkRest_AddQueryParam $rest "SignatureVersion" "2"
CkRest_AddQueryParam $rest "Version" "2009-01-01"
# Add the MWS Signature param. (Also adds the Timestamp parameter using the curent system date/time.)
CkRest_AddMwsSignature $rest "POST" "/Feeds/2009-01-01" "mws.amazonservices.com" "YOUR_MWS_SECRET_ACCESS_KEY_ID"
CkRest_AddHeader $rest "Content-Type" "application/octet-stream"
set sbResponseBody [new_CkStringBuilder]
set success [CkRest_FullRequestBd $rest "POST" "/Feeds/2009-01-01" $pdfData $sbResponseBody]
if {[CkRest_get_LastMethodSuccess $rest] != 1} then {
puts [CkRest_lastErrorText $rest]
delete_CkRest $rest
delete_CkBinData $pdfData
delete_CkCrypt2 $crypt
delete_CkStringBuilder $sbResponseBody
exit
}
if {[CkRest_get_ResponseStatusCode $rest] != 200} then {
# Examine the request/response to see what happened.
puts "response status code = [CkRest_get_ResponseStatusCode $rest]"
puts "response status text = [CkRest_responseStatusText $rest]"
puts "response header: [CkRest_responseHeader $rest]"
puts "response body: [CkStringBuilder_getAsString $sbResponseBody]"
puts "---"
puts "LastRequestStartLine: [CkRest_lastRequestStartLine $rest]"
puts "LastRequestHeader: [CkRest_lastRequestHeader $rest]"
}
# Examine the XML returned in the response body.
puts [CkStringBuilder_getAsString $sbResponseBody]
puts "----"
puts "Success."
delete_CkRest $rest
delete_CkBinData $pdfData
delete_CkCrypt2 $crypt
delete_CkStringBuilder $sbResponseBody