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) Amazon MWS Upload InvoiceDemonstrates how to upload an invoice using _UPLOAD_VAT_INVOICE_FeedType to submit an invoice for an order. For more information, see https://m.media-amazon.com/images/G/03/B2B/invoice-uploader-developer-documentation.pdf
IncludeFile "CkBinData.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 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 Endpoint, otherwise ; you'll get an HTTP 401 response code. ; ; See Amazon MWS endpoints and MarketplaceId values 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") ; 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::ckAddQueryParam(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. pdfData.i = CkBinData::ckCreate() If pdfData.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success = CkBinData::ckLoadFile(pdfData,"qa_data/pdf/sample.pdf") ; Get the MD5 hash of the PDF data. crypt.i = CkCrypt2::ckCreate() If crypt.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkCrypt2::setCkHashAlgorithm(crypt, "md5") CkCrypt2::setCkEncodingMode(crypt, "base64") md5Hash.s = CkCrypt2::ckHashBdENC(crypt,pdfData) CkRest::ckAddQueryParam(rest,"AWSAccessKeyId","0PB842ExampleN4ZTR2") CkRest::ckAddQueryParam(rest,"Action","SubmitFeed") CkRest::ckAddQueryParam(rest,"FeedType","_UPLOAD_VAT_INVOICE_") CkRest::ckAddQueryParam(rest,"MWSAuthToken","EXAMPLE-amzn.mws.4ea38b7b-f563-7709-4bae-87aea-EXAMPLE") CkRest::ckAddQueryParam(rest,"MarketplaceIdList.Id.1","ATVExampleDER") CkRest::ckAddQueryParam(rest,"SellerId","A1XExample5E6") CkRest::ckAddQueryParam(rest,"ContentMD5Value",md5Hash) 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","YOUR_MWS_SECRET_ACCESS_KEY_ID") CkRest::ckAddHeader(rest,"Content-Type","application/octet-stream") sbResponseBody.i = CkStringBuilder::ckCreate() If sbResponseBody.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success = CkRest::ckFullRequestBd(rest,"POST","/Feeds/2009-01-01",pdfData,sbResponseBody) If CkRest::ckLastMethodSuccess(rest) <> 1 Debug CkRest::ckLastErrorText(rest) CkRest::ckDispose(rest) CkBinData::ckDispose(pdfData) CkCrypt2::ckDispose(crypt) CkStringBuilder::ckDispose(sbResponseBody) 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: " + CkStringBuilder::ckGetAsString(sbResponseBody) Debug "---" Debug "LastRequestStartLine: " + CkRest::ckLastRequestStartLine(rest) Debug "LastRequestHeader: " + CkRest::ckLastRequestHeader(rest) EndIf ; Examine the XML returned in the response body. Debug CkStringBuilder::ckGetAsString(sbResponseBody) Debug "----" Debug "Success." CkRest::ckDispose(rest) CkBinData::ckDispose(pdfData) CkCrypt2::ckDispose(crypt) CkStringBuilder::ckDispose(sbResponseBody) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.