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
(Delphi DLL) 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
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, BinData, Rest, StringBuilder, Crypt2; ... procedure TForm1.Button1Click(Sender: TObject); var success: Boolean; rest: HCkRest; bTls: Boolean; port: Integer; bAutoReconnect: Boolean; pdfData: HCkBinData; crypt: HCkCrypt2; md5Hash: PWideChar; sbResponseBody: HCkStringBuilder; begin // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. rest := CkRest_Create(); // 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 := True; port := 443; bAutoReconnect := True; success := CkRest_Connect(rest,'mws.amazonservices.com',port,bTls,bAutoReconnect); CkRest_putHost(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. pdfData := CkBinData_Create(); success := CkBinData_LoadFile(pdfData,'qa_data/pdf/sample.pdf'); // Get the MD5 hash of the PDF data. crypt := CkCrypt2_Create(); CkCrypt2_putHashAlgorithm(crypt,'md5'); CkCrypt2_putEncodingMode(crypt,'base64'); 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'); sbResponseBody := CkStringBuilder_Create(); success := CkRest_FullRequestBd(rest,'POST','/Feeds/2009-01-01',pdfData,sbResponseBody); if (CkRest_getLastMethodSuccess(rest) <> True) then begin Memo1.Lines.Add(CkRest__lastErrorText(rest)); Exit; end; if (CkRest_getResponseStatusCode(rest) <> 200) then begin // Examine the request/response to see what happened. Memo1.Lines.Add('response status code = ' + IntToStr(CkRest_getResponseStatusCode(rest))); Memo1.Lines.Add('response status text = ' + CkRest__responseStatusText(rest)); Memo1.Lines.Add('response header: ' + CkRest__responseHeader(rest)); Memo1.Lines.Add('response body: ' + CkStringBuilder__getAsString(sbResponseBody)); Memo1.Lines.Add('---'); Memo1.Lines.Add('LastRequestStartLine: ' + CkRest__lastRequestStartLine(rest)); Memo1.Lines.Add('LastRequestHeader: ' + CkRest__lastRequestHeader(rest)); end; // Examine the XML returned in the response body. Memo1.Lines.Add(CkStringBuilder__getAsString(sbResponseBody)); Memo1.Lines.Add('----'); Memo1.Lines.Add('Success.'); CkRest_Dispose(rest); CkBinData_Dispose(pdfData); CkCrypt2_Dispose(crypt); CkStringBuilder_Dispose(sbResponseBody); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.