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
(DataFlex) Walmart - Update Inventory for an ItemDemonstrates how to update inventory for an item.
Use ChilkatAx-win32.pkg Procedure Test Handle hoSbUrl Boolean iSuccess Integer iNumReplaced String sRequestMethod Handle hoAuthUtil String sWmConsumerId String sWmPrivateKey String sJsonStr Handle hoJson Handle hoHttp Integer iOriginalAmount Body Handle hoXmlBody String sXmlStr Handle hoXml String sTemp1 String sTemp2 Integer iTemp1 Boolean bTemp1 // --------------------------------------------------------------------------------------------------------- // Note: This example is deprecated. The Walmart API no longer uses the Signature method of authenticating. // Walmart now uses OAuth2. // --------------------------------------------------------------------------------------------------------- // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // Sends the following PUT request: // PUT https://marketplace.walmartapis.com/v2/inventory?sku={SKU} Get Create (RefClass(cComChilkatStringBuilder)) To hoSbUrl If (Not(IsComObjectCreated(hoSbUrl))) Begin Send CreateComObject of hoSbUrl End Get ComAppend Of hoSbUrl "https://marketplace.walmartapis.com/v2/inventory?sku={SKU}" To iSuccess Get ComReplace Of hoSbUrl "{SKU}" "HOPP~904~51041" To iNumReplaced Move "PUT" To sRequestMethod // First we need to generate a signature for our request. // The signature needs to be re-generated for each new Walmart HTTP request. Get Create (RefClass(cComChilkatAuthUtil)) To hoAuthUtil If (Not(IsComObjectCreated(hoAuthUtil))) Begin Send CreateComObject of hoAuthUtil End Move "WALMART_CONSUMER_ID" To sWmConsumerId Move "WALMART_PRIVATE_KEY" To sWmPrivateKey Get ComGetAsString Of hoSbUrl To sTemp1 Get ComWalmartSignature Of hoAuthUtil sTemp1 sWmConsumerId sWmPrivateKey sRequestMethod To sJsonStr Get ComLastMethodSuccess Of hoAuthUtil To bTemp1 If (bTemp1 <> True) Begin Get ComLastErrorText Of hoAuthUtil To sTemp1 Showln sTemp1 Procedure_Return End // The JSON returned by WalmartSignature contains the values to be used in the following // header fields: WM_SEC.AUTH_SIGNATURE, WM_SEC.TIMESTAMP, and WM_QOS.CORRELATION_ID Get Create (RefClass(cComChilkatJsonObject)) To hoJson If (Not(IsComObjectCreated(hoJson))) Begin Send CreateComObject of hoJson End Get ComLoad Of hoJson sJsonStr To iSuccess Get Create (RefClass(cComChilkatHttp)) To hoHttp If (Not(IsComObjectCreated(hoHttp))) Begin Send CreateComObject of hoHttp End Send ComSetRequestHeader To hoHttp "WM_SVC.NAME" "Walmart Marketplace" Get ComStringOf Of hoJson "correlation_id" To sTemp1 Send ComSetRequestHeader To hoHttp "WM_QOS.CORRELATION_ID" sTemp1 Get ComStringOf Of hoJson "timestamp" To sTemp1 Send ComSetRequestHeader To hoHttp "WM_SEC.TIMESTAMP" sTemp1 Get ComStringOf Of hoJson "signature" To sTemp1 Send ComSetRequestHeader To hoHttp "WM_SEC.AUTH_SIGNATURE" sTemp1 Send ComSetRequestHeader To hoHttp "WM_CONSUMER.ID" sWmConsumerId Set ComAccept Of hoHttp To "application/xml" // Note: Do not explicitly set the "Host" header. Chilkat will set it automatically. // The body of the PUT request will be XML that looks like this: // <?xml version="1.0" encoding="utf-8" ?> // <wm:inventory xmlns:wm="http://walmart.com/"> // <wm:sku>HOPP~904~51041</wm:sku> // <wm:quantity> // <wm:unit>EACH</wm:unit> // <wm:amount>235</wm:amount> // </wm:quantity> // <wm:fulfillmentLagTime>5</wm:fulfillmentLagTime> // </wm:inventory> // Build the XML request body: Move 234 To iOriginalAmount Get Create (RefClass(cComChilkatXml)) To hoXmlBody If (Not(IsComObjectCreated(hoXmlBody))) Begin Send CreateComObject of hoXmlBody End Set ComTag Of hoXmlBody To "wm:inventory" Get ComAddAttribute Of hoXmlBody "xmlns:wm" "http://walmart.com/" To iSuccess Send ComUpdateChildContent To hoXmlBody "wm:sku" "HOPP~904~51041" Send ComUpdateChildContent To hoXmlBody "wm:quantity|wm:unit" "EACH" Send ComUpdateChildContentInt To hoXmlBody "wm:quantity|wm:amount" (iOriginalAmount + 1) Send ComUpdateChildContent To hoXmlBody "wm:fulfillmentLagTime" "5" Showln "PUT request body:" Get ComGetXml Of hoXmlBody To sTemp1 Showln sTemp1 Showln "--" // This is a simple PUT that can be sent w/ the PutText method. Get ComGetAsString Of hoSbUrl To sTemp1 Get ComGetXml Of hoXmlBody To sTemp2 Get ComPutText Of hoHttp sTemp1 sTemp2 "utf-8" "application/xml" False False To sXmlStr Get ComLastMethodSuccess Of hoHttp To bTemp1 If (bTemp1 <> True) Begin Get ComLastErrorText Of hoHttp To sTemp1 Showln sTemp1 Procedure_Return End Get Create (RefClass(cComChilkatXml)) To hoXml If (Not(IsComObjectCreated(hoXml))) Begin Send CreateComObject of hoXml End Get ComLoadXml Of hoXml sXmlStr To iSuccess // A successful response should have a 200 response status Get ComLastStatus Of hoHttp To iTemp1 If (iTemp1 <> 200) Begin Get ComGetXml Of hoXml To sTemp1 Showln sTemp1 Get ComLastStatus Of hoHttp To iTemp1 Showln "Response Status Code: " iTemp1 Showln "Failed." Procedure_Return End // A sample XML response is shown below.. Get ComGetXml Of hoXml To sTemp1 Showln sTemp1 Showln "--" Showln "Success!" // --------------------------------------- // Sample XML response // --------------------------------------- // <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> // <inventory xmlns="http://walmart.com/"> // <sku>HOPP~904~51041</sku> // <quantity> // <unit>EACH</unit> // <amount>235</amount> // </quantity> // <fulfillmentLagTime>5</fulfillmentLagTime> // </inventory> End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.