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

Perl Web API Examples

Primary Categories

Facebook
GeoOp
Jira
PayPal
Peoplevox
QuickBooks

Shopify
Stripe
SugarCRM
Twitter
VoiceBase
Walmart
Xero
eBay
effectconnect

 

 

 

(Perl) Walmart - Acknowledge Order

See Acknowledge Orders for more information about this call.

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

Acknowledges an entire order, including all of its order lines. Walmart requires a seller to acknowledge orders within four hours of receipt of the order, except in extenuating circumstances.

The response to a successful call contains the acknowledged order.

In general, only orders that are in a “Created” state should be acknowledged. As a good practice, acknowledge your orders to avoid underselling. Orders that are in an “Acknowledged” state can be re-acknowledged, possibly in response to an error response from an earlier call to acknowledge order. Orders with line items that are shipped or canceled should not be re-acknowledged.

Chilkat Perl Downloads

Perl Module for Windows, Linux, Alpine Linux,
MAC OS X, Solaris, FreeBSD, OpenBSD,
Raspberry Pi and other single board computers

use chilkat();

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

# Sends the following POST request:
# POST https://marketplace.walmartapis.com/v3/orders/{purchaseOrderId}/acknowledge

$sbUrl = chilkat::CkStringBuilder->new();
$success = $sbUrl->Append("https://marketplace.walmartapis.com/v3/orders/{purchaseOrderId}/acknowledge");
$numReplaced = $sbUrl->Replace("{purchaseOrderId}","1111691995111");

$requestMethod = "POST";

# First we need to generate a signature for our request.
# The signature needs to be re-generated for each new Walmart HTTP request.
$authUtil = chilkat::CkAuthUtil->new();

$wmConsumerId = "WALMART_CONSUMER_ID";
$wmPrivateKey = "WALMART_PRIVATE_KEY";
$jsonStr = $authUtil->walmartSignature($sbUrl->getAsString(),$wmConsumerId,$wmPrivateKey,$requestMethod);
if ($authUtil->get_LastMethodSuccess() != 1) {
    print $authUtil->lastErrorText() . "\r\n";
    exit;
}

# 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 = chilkat::CkJsonObject->new();
$json->Load($jsonStr);

$http = chilkat::CkHttp->new();
$http->SetRequestHeader("WM_SVC.NAME","Walmart Marketplace");
$http->SetRequestHeader("WM_QOS.CORRELATION_ID",$json->stringOf("correlation_id"));
$http->SetRequestHeader("WM_SEC.TIMESTAMP",$json->stringOf("timestamp"));
$http->SetRequestHeader("WM_SEC.AUTH_SIGNATURE",$json->stringOf("signature"));
$http->SetRequestHeader("WM_CONSUMER.ID",$wmConsumerId);
# Note: Make sure to replace "WALMART_CHANNEL_TYPE" with the actual value for your seller account...
$http->SetRequestHeader("WM_CONSUMER.CHANNEL.TYPE","WALMART_CHANNEL_TYPE");
$http->put_Accept("application/xml");

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

# Walmart provides the option to send/receive JSON or XML.  This example will use JSON.
# Note: Please see the online JSON/XML code generation tools at https://tools.chilkat.io/
# The online tools generate code to create/parse XML or JSON.  (You copy sample JSON/XML into the online format,
# and generate code in your selected programming language.  It's a big time saver.)

$http->SetRequestHeader("Accept","application/json");
# The body of this particular POST request contains just "{}". (The order ID is already in the URL path.)
# resp is a HttpResponse
$resp = $http->PostJson2($sbUrl->getAsString(),"application/json","{}");
if ($http->get_LastMethodSuccess() != 1) {
    print $http->lastErrorText() . "\r\n";
    exit;
}

# Get the JSON response body, which could contain an error, or if successful contains
# the acknowledged order.
$sbBody = chilkat::CkStringBuilder->new();
$resp->GetBodySb($sbBody);

# A successful response should have a 200 response status
if ($resp->get_StatusCode() != 200) {
    print $sbBody->getAsString() . "\r\n";
    print "Response Status Code: " . $resp->get_StatusCode() . "\r\n";
    print "Failed." . "\r\n";

    exit;
}

# Parse the JSON response.
# A sample response is shown below this code.  (The online tools at https://tools.chilkat.io were used to generate the 
# fragment of code below using the sample response data at 
# https://developer.walmart.com/#/apicenter/marketPlace/latest?country=us#acknowledgingOrders

$json->LoadSb($sbBody);

$orderPurchaseOrderId = $json->stringOf("order.purchaseOrderId");
$orderCustomerOrderId = $json->stringOf("order.customerOrderId");
$orderCustomerEmailId = $json->stringOf("order.customerEmailId");
$orderOrderDate = $json->IntOf("order.orderDate");
$orderShippingInfoPhone = $json->stringOf("order.shippingInfo.phone");
$orderShippingInfoEstimatedDeliveryDate = $json->IntOf("order.shippingInfo.estimatedDeliveryDate");
$orderShippingInfoEstimatedShipDate = $json->IntOf("order.shippingInfo.estimatedShipDate");
$orderShippingInfoMethodCode = $json->stringOf("order.shippingInfo.methodCode");
$orderShippingInfoPostalAddressName = $json->stringOf("order.shippingInfo.postalAddress.name");
$orderShippingInfoPostalAddressAddress1 = $json->stringOf("order.shippingInfo.postalAddress.address1");
$orderShippingInfoPostalAddressAddress2 = $json->stringOf("order.shippingInfo.postalAddress.address2");
$orderShippingInfoPostalAddressCity = $json->stringOf("order.shippingInfo.postalAddress.city");
$orderShippingInfoPostalAddressState = $json->stringOf("order.shippingInfo.postalAddress.state");
$orderShippingInfoPostalAddressPostalCode = $json->stringOf("order.shippingInfo.postalAddress.postalCode");
$orderShippingInfoPostalAddressCountry = $json->stringOf("order.shippingInfo.postalAddress.country");
$orderShippingInfoPostalAddressAddressType = $json->stringOf("order.shippingInfo.postalAddress.addressType");
$i = 0;
$count_i = $json->SizeOfArray("order.orderLines.orderLine");
while ($i < $count_i) {
    $json->put_I($i);
    $lineNumber = $json->stringOf("order.orderLines.orderLine[i].lineNumber");
    $itemProductName = $json->stringOf("order.orderLines.orderLine[i].item.productName");
    $itemSku = $json->stringOf("order.orderLines.orderLine[i].item.sku");
    $orderLineQuantityUnitOfMeasurement = $json->stringOf("order.orderLines.orderLine[i].orderLineQuantity.unitOfMeasurement");
    $orderLineQuantityAmount = $json->stringOf("order.orderLines.orderLine[i].orderLineQuantity.amount");
    $statusDate = $json->IntOf("order.orderLines.orderLine[i].statusDate");
    $refundRefundId = $json->IsNullOf("order.orderLines.orderLine[i].refund.refundId");
    $refundRefundComments = $json->IsNullOf("order.orderLines.orderLine[i].refund.refundComments");
    $j = 0;
    $count_j = $json->SizeOfArray("order.orderLines.orderLine[i].charges.charge");
    while ($j < $count_j) {
        $json->put_J($j);
        $chargeType = $json->stringOf("order.orderLines.orderLine[i].charges.charge[j].chargeType");
        $chargeName = $json->stringOf("order.orderLines.orderLine[i].charges.charge[j].chargeName");
        $chargeAmountCurrency = $json->stringOf("order.orderLines.orderLine[i].charges.charge[j].chargeAmount.currency");
        $chargeAmountAmount = $json->IntOf("order.orderLines.orderLine[i].charges.charge[j].chargeAmount.amount");
        $taxTaxName = $json->stringOf("order.orderLines.orderLine[i].charges.charge[j].tax.taxName");
        $taxTaxAmountCurrency = $json->stringOf("order.orderLines.orderLine[i].charges.charge[j].tax.taxAmount.currency");
        $taxTaxAmountAmount = $json->IntOf("order.orderLines.orderLine[i].charges.charge[j].tax.taxAmount.amount");
        $j = $j + 1;
    }

    $j = 0;
    $count_j = $json->SizeOfArray("order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus");
    while ($j < $count_j) {
        $json->put_J($j);
        $status = $json->stringOf("order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].status");
        $statusQuantityUnitOfMeasurement = $json->stringOf("order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].statusQuantity.unitOfMeasurement");
        $statusQuantityAmount = $json->stringOf("order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].statusQuantity.amount");
        $cancellationReason = $json->IsNullOf("order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].cancellationReason");
        $trackingInfoShipDateTime = $json->IntOf("order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.shipDateTime");
        $trackingInfoCarrierNameOtherCarrier = $json->IsNullOf("order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.carrierName.otherCarrier");
        $trackingInfoCarrierNameCarrier = $json->stringOf("order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.carrierName.carrier");
        $trackingInfoMethodCode = $json->stringOf("order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.methodCode");
        $trackingInfoTrackingNumber = $json->stringOf("order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.trackingNumber");
        $trackingInfoTrackingURL = $json->stringOf("order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.trackingURL");
        $j = $j + 1;
    }

    $j = 0;
    $count_j = $json->SizeOfArray("order.orderLines.orderLine[i].refund.refundCharges.refundCharge");
    while ($j < $count_j) {
        $json->put_J($j);
        $refundReason = $json->stringOf("order.orderLines.orderLine[i].refund.refundCharges.refundCharge[j].refundReason");
        $chargeChargeType = $json->stringOf("order.orderLines.orderLine[i].refund.refundCharges.refundCharge[j].charge.chargeType");
        $chargeChargeName = $json->stringOf("order.orderLines.orderLine[i].refund.refundCharges.refundCharge[j].charge.chargeName");
        $chargeChargeAmountCurrency = $json->stringOf("order.orderLines.orderLine[i].refund.refundCharges.refundCharge[j].charge.chargeAmount.currency");
        $chargeChargeAmountAmount = $json->IntOf("order.orderLines.orderLine[i].refund.refundCharges.refundCharge[j].charge.chargeAmount.amount");
        $chargeTax = $json->IsNullOf("order.orderLines.orderLine[i].refund.refundCharges.refundCharge[j].charge.tax");
        $j = $j + 1;
    }

    $i = $i + 1;
}

print "Success!" . "\r\n";

# Sample Walmart Order Acknowledge Response:

# {
#   "order": {
#     "purchaseOrderId": "1577684050862",
#     "customerOrderId": "2861700797280",
#     "customerEmailId": "jsanthanam@walmartlabs.com",
#     "orderDate": 1484458949000,
#     "shippingInfo": {
#       "phone": "4151234567",
#       "estimatedDeliveryDate": 1485586800000,
#       "estimatedShipDate": 1484636400000,
#       "methodCode": "Value",
#       "postalAddress": {
#         "name": "Asha  Chakre",
#         "address1": "860 W California ave",
#         "address2": null,
#         "city": "Sunnyvale",
#         "state": "CA",
#         "postalCode": "94086",
#         "country": "USA",
#         "addressType": "RESIDENTIAL"
#       }
#     },
#     "orderLines": {
#       "orderLine": [
#         {
#           "lineNumber": "1",
#           "item": {
#             "productName": "Kellogg's Rice Krispies Cereal, 24 oz",
#             "sku": "MGR_07_21_00100123"
#           },
#           "charges": {
#             "charge": [
#               {
#                 "chargeType": "PRODUCT",
#                 "chargeName": "ItemPrice",
#                 "chargeAmount": {
#                   "currency": "USD",
#                   "amount": 19.99
#                 },
#                 "tax": {
#                   "taxName": "Tax1",
#                   "taxAmount": {
#                     "currency": "USD",
#                     "amount": 1.7
#                   }
#                 }
#               }
#             ]
#           },
#           "orderLineQuantity": {
#             "unitOfMeasurement": "EACH",
#             "amount": "1"
#           },
#           "statusDate": 1487888747000,
#           "orderLineStatuses": {
#             "orderLineStatus": [
#               {
#                 "status": "Shipped",
#                 "statusQuantity": {
#                   "unitOfMeasurement": "EACH",
#                   "amount": "1"
#                 },
#                 "cancellationReason": null,
#                 "trackingInfo": {
#                   "shipDateTime": 1485549015000,
#                   "carrierName": {
#                     "otherCarrier": null,
#                     "carrier": "FedEx"
#                   },
#                   "methodCode": "Value",
#                   "trackingNumber": "3445435443441221",
#                   "trackingURL": "http://walmart.narvar.com/walmart/tracking/Fedex?&type=MP&seller_id=801&promise_date=01/28/2017&dzip=94086&tracking_numbers=3445435443441221"
#                 }
#               }
#             ]
#           },
#           "refund": {
#             "refundId": null,
#             "refundComments": null,
#             "refundCharges": {
#               "refundCharge": [
#                 {
#                   "refundReason": "ItemNotReceivedByCustomer",
#                   "charge": {
#                     "chargeType": "PRODUCT",
#                     "chargeName": "Lost in Transit",
#                     "chargeAmount": {
#                       "currency": "USD",
#                       "amount": -0.01
#                     },
#                     "tax": null
#                   }
#                 }
#               ]
#             }
#           }
#         }
#       ]
#     }
#   }
# }

 

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