Chilkat Examples

ChilkatHOMEAndroid™Classic ASPCC++C#Mono C#.NET Core C#C# UWP/WinRTDataFlexDelphi ActiveXDelphi DLLVisual FoxProJavaLianjaMFCObjective-CPerlPHP ActiveXPHP ExtensionPowerBuilderPowerShellPureBasicCkPythonChilkat2-PythonRubySQL ServerSwift 2Swift 3/4TclUnicode CUnicode C++Visual Basic 6.0VB.NETVB.NET UWP/WinRTVBScriptXojo PluginNode.jsExcelGo

C Web API Examples

Primary Categories

Facebook
GeoOp
Jira
PayPal
Peoplevox
QuickBooks

Shopify
Stripe
SugarCRM
Twitter
VoiceBase
Walmart
Xero
eBay
effectconnect

 

 

 

(C) Walmart - Get List of Orders

Demonstrates how to get a list of all orders.

Note: This example requires Chilkat v9.5.0.67 or greater.

Chilkat C/C++ Library Downloads

MS Visual C/C++

Linux/CentOS C/C++

Alpine Linux C/C++

MAC OS X C/C++

armhf/aarch64 C/C++

C++ Builder

iOS C/C++

Android C/C++

Win Mobile 5.0/Pocket PC 2003

Solaris C/C++

FreeBSD C/C++

OpenBSD C/C++

MinGW C/C++

#include <C_CkStringBuilder.h>
#include <C_CkDateTime.h>
#include <C_CkAuthUtil.h>
#include <C_CkJsonObject.h>
#include <C_CkHttp.h>
#include <C_CkXml.h>

void ChilkatSample(void)
    {
    HCkStringBuilder sbUrl;
    BOOL success;
    int numReplaced;
    HCkDateTime dtStartDate;
    const char *requestMethod;
    HCkAuthUtil authUtil;
    const char *wmConsumerId;
    const char *wmPrivateKey;
    const char *jsonStr;
    HCkJsonObject json;
    HCkHttp http;
    const char *xmlStr;
    HCkXml xml;
    int i;
    int numOrders;
    HCkXml order;
    int j;
    int numOrderLines;
    HCkXml orderLine;
    int k;
    int numOrderLineStatuses;

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

    // Demonstrates how to get a list of Walmart orders and parse the XML result.

    // ---
    // Note: The Walmart documentation indicates that the createdStartDate/createdEndDate query parameters are optional,
    // however, this may not actually be the case.  It may be that at least one is required for getting a list of orders.
    // ---

    // The general format to get orders is as follows:
    // GET https://marketplace.walmartapis.com/v3/orders?sku={sku}&customerOrderId={customerOrderId}&purchaseOrderId={purchaseOrderId}&status={status}&createdStartDate={createdStartDate}&createdEndDate={createdEndDate}&fromExpectedShipDate={fromExpectedShipDate}&toExpectedShipDate={toExpectedShipDate}&limit={limit} 

    // Let's build a request to get all the orders in the last 7 days.
    sbUrl = CkStringBuilder_Create();
    success = CkStringBuilder_Append(sbUrl,"https://marketplace.walmartapis.com/v3/orders?createdStartDate={createdStartDate}&limit={limit}");
    // We'll just get 2 results so we can demonstrate iterating over the XML..
    numReplaced = CkStringBuilder_ReplaceI(sbUrl,"{limit}",2);

    // Get the current system date/time and add -7 days to get 1 week ago.
    dtStartDate = CkDateTime_Create();
    CkDateTime_SetFromCurrentSystemTime(dtStartDate);
    CkDateTime_AddDays(dtStartDate,-7);
    printf("One week ago (GMT): %s\n",CkDateTime_getAsTimestamp(dtStartDate,FALSE));

    numReplaced = CkStringBuilder_Replace(sbUrl,"{createdStartDate}",CkDateTime_getAsTimestamp(dtStartDate,FALSE));

    requestMethod = "GET";

    // First we need to generate a signature for our request.
    // The signature needs to be re-generated for each new Walmart HTTP request.
    authUtil = CkAuthUtil_Create();

    wmConsumerId = "WALMART_CONSUMER_ID";
    wmPrivateKey = "WALMART_PRIVATE_KEY";
    jsonStr = CkAuthUtil_walmartSignature(authUtil,CkStringBuilder_getAsString(sbUrl),wmConsumerId,wmPrivateKey,requestMethod);
    if (CkAuthUtil_getLastMethodSuccess(authUtil) != TRUE) {
        printf("%s\n",CkAuthUtil_lastErrorText(authUtil));
        CkStringBuilder_Dispose(sbUrl);
        CkDateTime_Dispose(dtStartDate);
        CkAuthUtil_Dispose(authUtil);
        return;
    }

    // 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
    json = CkJsonObject_Create();
    CkJsonObject_Load(json,jsonStr);

    http = CkHttp_Create();
    CkHttp_SetRequestHeader(http,"WM_SVC.NAME","Walmart Marketplace");
    CkHttp_SetRequestHeader(http,"WM_QOS.CORRELATION_ID",CkJsonObject_stringOf(json,"correlation_id"));
    CkHttp_SetRequestHeader(http,"WM_SEC.TIMESTAMP",CkJsonObject_stringOf(json,"timestamp"));
    CkHttp_SetRequestHeader(http,"WM_SEC.AUTH_SIGNATURE",CkJsonObject_stringOf(json,"signature"));
    CkHttp_SetRequestHeader(http,"WM_CONSUMER.ID",wmConsumerId);
    // Note: check to see what keyword you should use for your situation.
    // The keyword "WALMART_CHANNEL_TYPE" is one option.  Another is "SWAGGER_CHANNEL_TYPE".
    CkHttp_SetRequestHeader(http,"WM_CONSUMER.CHANNEL.TYPE","WALMART_CHANNEL_TYPE");

    CkHttp_putAccept(http,"application/xml");

    // Note: Do not explicitly set the "Host" header.  Chilkat will set it automatically.

    xmlStr = CkHttp_quickGetStr(http,CkStringBuilder_getAsString(sbUrl));
    if (CkHttp_getLastMethodSuccess(http) != TRUE) {
        printf("%s\n",CkHttp_lastErrorText(http));
        CkStringBuilder_Dispose(sbUrl);
        CkDateTime_Dispose(dtStartDate);
        CkAuthUtil_Dispose(authUtil);
        CkJsonObject_Dispose(json);
        CkHttp_Dispose(http);
        return;
    }

    xml = CkXml_Create();
    CkXml_LoadXml(xml,xmlStr);

    // A successful response should have a 200 response status
    if (CkHttp_getLastStatus(http) != 200) {
        printf("%s\n",CkXml_getXml(xml));
        printf("Response Status Code: %d\n",CkHttp_getLastStatus(http));
        printf("Failed.\n");
        CkStringBuilder_Dispose(sbUrl);
        CkDateTime_Dispose(dtStartDate);
        CkAuthUtil_Dispose(authUtil);
        CkJsonObject_Dispose(json);
        CkHttp_Dispose(http);
        CkXml_Dispose(xml);
        return;
    }

    // A sample XML response is shown below..

    // Let's grab some information, and iterate over the XML..
    printf("Total number of orders in last 7 days: %d\n",CkXml_GetChildIntValue(xml,"ns3:meta|ns3:totalCount"));

    // The outermost loop loops over the orders.  
    // The next inner loop loops over the order lines.
    // The innermost loop loops over the order line statuses.
    i = 0;
    numOrders = CkXml_NumChildrenAt(xml,"ns3:elements");
    while (i < numOrders) {
        CkXml_putI(xml,i);
        printf("---- order %d ----\n",i + 1);

        order = CkXml_GetChildWithTag(xml,"ns3:elements|ns3:order[i]");
        printf("purchaseOrderId: %s\n",CkXml_getChildContent(order,"ns3:purchaseOrderId"));
        printf("name: %s\n",CkXml_getChildContent(order,"ns3:shippingInfo|ns3:postalAddress|ns3:name"));

        j = 0;
        numOrderLines = CkXml_NumChildrenAt(order,"ns3:orderLines");
        while (j < numOrderLines) {
            CkXml_putJ(order,j);
            orderLine = CkXml_GetChildWithTag(order,"ns3:orderLines|ns3:orderLine[j]");
            printf("  productName: %s\n",CkXml_getChildContent(orderLine,"ns3:item|ns3:productName"));

            k = 0;
            numOrderLineStatuses = CkXml_NumChildrenAt(orderLine,"ns3:orderLineStatuses");
            while (k < numOrderLineStatuses) {
                CkXml_putK(orderLine,k);
                printf("    order line status: %s\n",CkXml_getChildContent(orderLine,"ns3:orderLineStatuses|ns3:orderLineStatus[k]|ns3:status"));
                printf("    order line carrier: %s\n",CkXml_getChildContent(orderLine,"ns3:orderLineStatuses|ns3:orderLineStatus[k]|ns3:trackingInfo|ns3:carrierName|ns3:carrier"));
                k = k + 1;
            }

            CkXml_Dispose(orderLine);
            j = j + 1;
        }

        CkXml_Dispose(order);
        i = i + 1;
    }

    printf("Success.\n");

    // ---------------------------------------
    // Sample XML response
    // (The confidential information has been redacted or modified with fake data.
    // ---------------------------------------

    // <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
    // <ns3:list xmlns:ns2="http://walmart.com/mp/orders" xmlns:ns3="http://walmart.com/mp/v3/orders" xmlns:ns4="http://walmart.com/">
    //     <ns3:meta>
    //         <ns3:totalCount>239</ns3:totalCount>
    //         <ns3:limit>2</ns3:limit>
    //         <ns3:nextCursor>?limit=2&amp;hasMoreElements=true&amp;soIndex=239&amp;poIndex=1578652999055&amp;partnerId=10000999999&amp;sellerId=9999&amp;createdStartDate=2017-04-21T19:08:55Z&amp;createdEndDate=2017-04-28T19:08:58.464Z</ns3:nextCursor>
    //     </ns3:meta>
    //     <ns3:elements>
    //         <ns3:order>
    //             <ns3:purchaseOrderId>1111641944111</ns3:purchaseOrderId>
    //             <ns3:customerOrderId>1111777852111</ns3:customerOrderId>
    //             <ns3:customerEmailId>somebody@somewhere.com</ns3:customerEmailId>
    //             <ns3:orderDate>2017-04-21T01:25:52.000Z</ns3:orderDate>
    //             <ns3:shippingInfo>
    //                 <ns3:phone>3175555555</ns3:phone>
    //                 <ns3:estimatedDeliveryDate>2017-05-10T06:00:00.000Z</ns3:estimatedDeliveryDate>
    //                 <ns3:estimatedShipDate>2017-04-29T06:00:00.000Z</ns3:estimatedShipDate>
    //                 <ns3:methodCode>Value</ns3:methodCode>
    //                 <ns3:postalAddress>
    //                     <ns3:name>barry redacted</ns3:name>
    //                     <ns3:address1>9999 redacted dr</ns3:address1>
    //                     <ns3:city>Indianapolis</ns3:city>
    //                     <ns3:state>IN</ns3:state>
    //                     <ns3:postalCode>46227</ns3:postalCode>
    //                     <ns3:country>USA</ns3:country>
    //                     <ns3:addressType>RESIDENTIAL</ns3:addressType>
    //                 </ns3:postalAddress>
    //             </ns3:shippingInfo>
    //             <ns3:orderLines>
    //                 <ns3:orderLine>
    //                     <ns3:lineNumber>1</ns3:lineNumber>
    //                     <ns3:item>
    //                         <ns3:productName>DPX DPx HEST 2.0 Mil-Spec Fixed Blade G10 Multi-Colored</ns3:productName>
    //                         <ns3:sku>DPXG~DPHSX008~00317</ns3:sku>
    //                     </ns3:item>
    //                     <ns3:charges>
    //                         <ns3:charge>
    //                             <ns3:chargeType>PRODUCT</ns3:chargeType>
    //                             <ns3:chargeName>ItemPrice</ns3:chargeName>
    //                             <ns3:chargeAmount>
    //                                 <ns3:currency>USD</ns3:currency>
    //                                 <ns3:amount>125.00</ns3:amount>
    //                             </ns3:chargeAmount>
    //                         </ns3:charge>
    //                     </ns3:charges>
    //                     <ns3:orderLineQuantity>
    //                         <ns3:unitOfMeasurement>EACH</ns3:unitOfMeasurement>
    //                         <ns3:amount>1</ns3:amount>
    //                     </ns3:orderLineQuantity>
    //                     <ns3:statusDate>2017-04-28T18:09:26.000Z</ns3:statusDate>
    //                     <ns3:orderLineStatuses>
    //                         <ns3:orderLineStatus>
    //                             <ns3:status>Shipped</ns3:status>
    //                             <ns3:statusQuantity>
    //                                 <ns3:unitOfMeasurement>EACH</ns3:unitOfMeasurement>
    //                                 <ns3:amount>1</ns3:amount>
    //                             </ns3:statusQuantity>
    //                             <ns3:trackingInfo>
    //                                 <ns3:shipDateTime>2017-04-24T20:57:52.000Z</ns3:shipDateTime>
    //                                 <ns3:carrierName>
    //                                     <ns3:carrier>USPS</ns3:carrier>
    //                                 </ns3:carrierName>
    //                                 <ns3:methodCode>Value</ns3:methodCode>
    //                                 <ns3:trackingNumber>redacted</ns3:trackingNumber>
    //                                 <ns3:trackingURL>http://walmart.narvar.com/walmart/tracking/usps?redacted</ns3:trackingURL>
    //                             </ns3:trackingInfo>
    //                         </ns3:orderLineStatus>
    //                     </ns3:orderLineStatuses>
    //                 </ns3:orderLine>
    //             </ns3:orderLines>
    //         </ns3:order>
    //         <ns3:order>
    //             <ns3:purchaseOrderId>1111652066111</ns3:purchaseOrderId>
    //             <ns3:customerOrderId>1111778837111</ns3:customerOrderId>
    //             <ns3:customerEmailId>somebody2@somewhere.com</ns3:customerEmailId>
    //             <ns3:orderDate>2017-04-22T13:37:12.000Z</ns3:orderDate>
    //             <ns3:shippingInfo>
    //                 <ns3:phone>8435555555</ns3:phone>
    //                 <ns3:estimatedDeliveryDate>2017-05-11T06:00:00.000Z</ns3:estimatedDeliveryDate>
    //                 <ns3:estimatedShipDate>2017-05-02T06:00:00.000Z</ns3:estimatedShipDate>
    //                 <ns3:methodCode>Value</ns3:methodCode>
    //                 <ns3:postalAddress>
    //                     <ns3:name>Doug Redacted</ns3:name>
    //                     <ns3:address1>1111 redacted dr</ns3:address1>
    //                     <ns3:city>Columbia</ns3:city>
    //                     <ns3:state>SC</ns3:state>
    //                     <ns3:postalCode>29527</ns3:postalCode>
    //                     <ns3:country>USA</ns3:country>
    //                     <ns3:addressType>RESIDENTIAL</ns3:addressType>
    //                 </ns3:postalAddress>
    //             </ns3:shippingInfo>
    //             <ns3:orderLines>
    //                 <ns3:orderLine>
    //                     <ns3:lineNumber>1</ns3:lineNumber>
    //                     <ns3:item>
    //                         <ns3:productName>Rayovac Specialty Battery 123A 2PK, RL123A-2D</ns3:productName>
    //                         <ns3:sku>RAYO~RL123A-2A~46270</ns3:sku>
    //                     </ns3:item>
    //                     <ns3:charges>
    //                         <ns3:charge>
    //                             <ns3:chargeType>PRODUCT</ns3:chargeType>
    //                             <ns3:chargeName>ItemPrice</ns3:chargeName>
    //                             <ns3:chargeAmount>
    //                                 <ns3:currency>USD</ns3:currency>
    //                                 <ns3:amount>12.92</ns3:amount>
    //                             </ns3:chargeAmount>
    //                         </ns3:charge>
    //                     </ns3:charges>
    //                     <ns3:orderLineQuantity>
    //                         <ns3:unitOfMeasurement>EACH</ns3:unitOfMeasurement>
    //                         <ns3:amount>1</ns3:amount>
    //                     </ns3:orderLineQuantity>
    //                     <ns3:statusDate>2017-04-28T17:18:51.000Z</ns3:statusDate>
    //                     <ns3:orderLineStatuses>
    //                         <ns3:orderLineStatus>
    //                             <ns3:status>Shipped</ns3:status>
    //                             <ns3:statusQuantity>
    //                                 <ns3:unitOfMeasurement>EACH</ns3:unitOfMeasurement>
    //                                 <ns3:amount>1</ns3:amount>
    //                             </ns3:statusQuantity>
    //                             <ns3:trackingInfo>
    //                                 <ns3:shipDateTime>2017-04-28T16:50:53.000Z</ns3:shipDateTime>
    //                                 <ns3:carrierName>
    //                                     <ns3:carrier>USPS</ns3:carrier>
    //                                 </ns3:carrierName>
    //                                 <ns3:methodCode>Value</ns3:methodCode>
    //                                 <ns3:trackingNumber>redacted</ns3:trackingNumber>
    //                                 <ns3:trackingURL>http://walmart.narvar.com/walmart/tracking/usps?redacted</ns3:trackingURL>
    //                             </ns3:trackingInfo>
    //                         </ns3:orderLineStatus>
    //                     </ns3:orderLineStatuses>
    //                 </ns3:orderLine>
    //                 <ns3:orderLine>
    //                     <ns3:lineNumber>2</ns3:lineNumber>
    //                     <ns3:item>
    //                         <ns3:productName>Rayovac Specialty Battery 123A 2PK, RL123A-2D</ns3:productName>
    //                         <ns3:sku>RAYO~RL123A-2A~46270</ns3:sku>
    //                     </ns3:item>
    //                     <ns3:charges>
    //                         <ns3:charge>
    //                             <ns3:chargeType>PRODUCT</ns3:chargeType>
    //                             <ns3:chargeName>ItemPrice</ns3:chargeName>
    //                             <ns3:chargeAmount>
    //                                 <ns3:currency>USD</ns3:currency>
    //                                 <ns3:amount>12.92</ns3:amount>
    //                             </ns3:chargeAmount>
    //                         </ns3:charge>
    //                     </ns3:charges>
    //                     <ns3:orderLineQuantity>
    //                         <ns3:unitOfMeasurement>EACH</ns3:unitOfMeasurement>
    //                         <ns3:amount>1</ns3:amount>
    //                     </ns3:orderLineQuantity>
    //                     <ns3:statusDate>2017-04-28T17:18:51.000Z</ns3:statusDate>
    //                     <ns3:orderLineStatuses>
    //                         <ns3:orderLineStatus>
    //                             <ns3:status>Shipped</ns3:status>
    //                             <ns3:statusQuantity>
    //                                 <ns3:unitOfMeasurement>EACH</ns3:unitOfMeasurement>
    //                                 <ns3:amount>1</ns3:amount>
    //                             </ns3:statusQuantity>
    //                             <ns3:trackingInfo>
    //                                 <ns3:shipDateTime>2017-04-28T16:50:53.000Z</ns3:shipDateTime>
    //                                 <ns3:carrierName>
    //                                     <ns3:carrier>USPS</ns3:carrier>
    //                                 </ns3:carrierName>
    //                                 <ns3:methodCode>Value</ns3:methodCode>
    //                                 <ns3:trackingNumber>redacted</ns3:trackingNumber>
    //                                 <ns3:trackingURL>http://walmart.narvar.com/walmart/tracking/usps?redacted</ns3:trackingURL>
    //                             </ns3:trackingInfo>
    //                         </ns3:orderLineStatus>
    //                     </ns3:orderLineStatuses>
    //                 </ns3:orderLine>
    //             </ns3:orderLines>
    //         </ns3:order>
    //     </ns3:elements>
    // </ns3:list>


    CkStringBuilder_Dispose(sbUrl);
    CkDateTime_Dispose(dtStartDate);
    CkAuthUtil_Dispose(authUtil);
    CkJsonObject_Dispose(json);
    CkHttp_Dispose(http);
    CkXml_Dispose(xml);

    }

 

© 2000-2019 Chilkat Software, Inc. All Rights Reserved.