Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

Walmart v3 Ship Order Lines

See more Walmart v3 Examples

Updates the status of order lines to Shipped and trigger the charge to the customer. The response to a successful call contains the order with the shipped line items.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.Http,
  Chilkat.HttpResponse,
  Chilkat.JsonObject;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  http: THttp;
  json: TJsonObject;
  orderLineIndex: Integer;
  statusIndex: Integer;
  resp: THttpResponse;
  lineNumber: string;
  ProductName: string;
  Sku: string;
  UnitOfMeasurement: string;
  Amount: string;
  statusDate: Integer;
  count_j: Integer;
  chargeType: string;
  chargeName: string;
  v_Currency: string;
  chargeAmountAmount: Integer;
  TaxName: string;
  TaxAmountCurrency: string;
  TaxAmountAmount: string;
  status: string;
  statusQuantityUnitOfMeasurement: string;
  statusQuantityAmount: string;
  ShipDateTime: Integer;
  Carrier: string;
  trackingInfoMethodCode: string;
  TrackingNumber: string;
  TrackingURL: string;
  returnCenterAddressName: string;
  returnCenterAddressAddress1: string;
  returnCenterAddressCity: string;
  returnCenterAddressState: string;
  returnCenterAddressPostalCode: string;
  returnCenterAddressCountry: string;
  DayPhone: string;
  EmailId: string;
  PurchaseOrderId: string;
  CustomerOrderId: string;
  SellerOrderId: string;
  CustomerEmailId: string;
  OrderDate: Integer;
  Phone: string;
  EstimatedDeliveryDate: Integer;
  EstimatedShipDate: Integer;
  MethodCode: string;
  Name: string;
  Address1: string;
  City: string;
  State: string;
  PostalCode: string;
  Country: string;
  AddressType: string;
  i: Integer;
  j: Integer;
  count_i: Integer;

begin
  success := False;

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

  http := THttp.Create;

  http.SetRequestHeader('WM_QOS.CORRELATION_ID','b3261d2d-028a-4ef7-8602-633c23200af6');
  http.SetRequestHeader('WM_SEC.ACCESS_TOKEN','eyJraWQiOiIzZjVhYTFmNS1hYWE5LTQzM.....');
  http.SetRequestHeader('Accept','application/json');
  http.SetRequestHeader('WM_SVC.NAME','Walmart Marketplace');

  //  Send the following in the request body:

  //  {
  //    "orderShipment": {
  //      "orderLines": {
  //        "orderLine": [
  //          {
  //            "lineNumber": "1",
  //            "intentToCancelOverride": false,
  //            "sellerOrderId": "92344",
  //            "orderLineStatuses": {
  //              "orderLineStatus": [
  //                {
  //                  "status": "Shipped",
  //                  "statusQuantity": {
  //                    "unitOfMeasurement": "EACH",
  //                    "amount": "1"
  //                  },
  //                  "trackingInfo": {
  //                    "shipDateTime": 1580821866000,
  //                    "carrierName": {
  //                      "carrier": "UPS"
  //                    },
  //                    "methodCode": "Standard",
  //                    "trackingNumber": "22344",
  //                    "trackingURL": "http://walmart/tracking/ups?&type=MP&seller_id=12345&promise_date=03/02/2020&dzip=92840&tracking_numbers=92345"
  //                  },
  //                  "returnCenterAddress": {
  //                    "name": "walmart",
  //                    "address1": "walmart store 2",
  //                    "city": "Huntsville",
  //                    "state": "AL",
  //                    "postalCode": "35805",
  //                    "country": "USA",
  //                    "dayPhone": "12344",
  //                    "emailId": "walmart@walmart.com"
  //                  }
  //                }
  //              ]
  //            }
  //          },
  //          {
  //            "lineNumber": "2",
  //            "sellerOrderId": "92344",
  //            "orderLineStatuses": {
  //              "orderLineStatus": [
  //                {
  //                  "status": "Shipped",
  //                  "statusQuantity": {
  //                    "unitOfMeasurement": "EACH",
  //                    "amount": "1"
  //                  },
  //                  "trackingInfo": {
  //                    "shipDateTime": 1580821866000,
  //                    "carrierName": {
  //                      "carrier": "FedEx"
  //                    },
  //                    "methodCode": "Express",
  //                    "trackingNumber": "22344",
  //                    "trackingURL": "http://walmart/tracking/fedEx?&type=MP&seller_id=12345&promise_date=03/02/2020&dzip=92840&tracking_numbers=92344"
  //                  },
  //                  "returnCenterAddress": {
  //                    "name": "walmart",
  //                    "address1": "walmart store 2",
  //                    "city": "Huntsville",
  //                    "state": "AL",
  //                    "postalCode": "35805",
  //                    "country": "USA",
  //                    "dayPhone": "12344",
  //                    "emailId": "walmart@walmart.com"
  //                  }
  //                }
  //              ]
  //            }
  //          }
  //        ]
  //      }
  //    }
  //  }

  json := TJsonObject.Create;
  orderLineIndex := 0;
  statusIndex := 0;
  json.I := orderLineIndex;
  json.J := statusIndex;
  json.UpdateString('orderShipment.orderLines.orderLine[i].lineNumber','1');
  json.UpdateBool('orderShipment.orderLines.orderLine[i].intentToCancelOverride',False);
  json.UpdateString('orderShipment.orderLines.orderLine[i].sellerOrderId','92344');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].status','Shipped');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].statusQuantity.unitOfMeasurement','EACH');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].statusQuantity.amount','1');
  json.UpdateInt('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.shipDateTime',123);
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.carrierName.carrier','UPS');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.methodCode','Standard');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.trackingNumber','22344');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.trackingURL','http://walmart/tracking/ups?&type=MP&seller_id=12345&promise_date=03/02/2020&dzip=92840&tracking_numbers=92345');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.name','walmart');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.address1','walmart store 2');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.city','Huntsville');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.state','AL');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.postalCode','35805');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.country','USA');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.dayPhone','12344');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.emailId','walmart@walmart.com');

  orderLineIndex := orderLineIndex + 1;
  statusIndex := 0;
  json.I := orderLineIndex;
  json.J := statusIndex;
  json.UpdateString('orderShipment.orderLines.orderLine[i].lineNumber','2');
  json.UpdateString('orderShipment.orderLines.orderLine[i].sellerOrderId','92344');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].status','Shipped');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].statusQuantity.unitOfMeasurement','EACH');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].statusQuantity.amount','1');
  json.UpdateInt('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.shipDateTime',123);
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.carrierName.carrier','FedEx');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.methodCode','Express');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.trackingNumber','22344');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.trackingURL','http://walmart/tracking/fedEx?&type=MP&seller_id=12345&promise_date=03/02/2020&dzip=92840&tracking_numbers=92344');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.name','walmart');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.address1','walmart store 2');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.city','Huntsville');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.state','AL');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.postalCode','35805');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.country','USA');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.dayPhone','12344');
  json.UpdateString('orderShipment.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.emailId','walmart@walmart.com');

  resp := THttpResponse.Create;
  success := http.HttpJson('POST','https://api-gateway.walmart.com/v3/orders/{purchaseOrderId}/shipping',json,'application/json',resp);
  if (success = False) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

  WriteLn('Response status code: ' + resp.StatusCode);

  resp.GetBodyJson(json);

  //  A sample JSON response:

  //  {
  //    "order": {
  //      "purchaseOrderId": "1234567891234",
  //      "customerOrderId": "9876543212345",
  //      "sellerOrderId": "13233454564657",
  //      "customerEmailId": "customer@walmartlabs.com",
  //      "orderDate": 1478284060000,
  //      "shippingInfo": {
  //        "phone": "6501234567",
  //        "estimatedDeliveryDate": 1479798000000,
  //        "estimatedShipDate": 1478674800000,
  //        "methodCode": "Value",
  //        "postalAddress": {
  //          "name": "Jane Doe",
  //          "address1": "123 Main street",
  //          "city": "Sunnyvale",
  //          "state": "CA",
  //          "postalCode": "94086",
  //          "country": "USA",
  //          "addressType": "OFFICE"
  //        }
  //      },
  //      "orderLines": {
  //        "orderLine": [
  //          {
  //            "lineNumber": "1",
  //            "item": {
  //              "productName": "Kenmore CF-1 or 20-86883 Canister Secondary Filter Generic 2 Pack",
  //              "sku": "wei-ASSET-675gku675"
  //            },
  //            "charges": {
  //              "charge": [
  //                {
  //                  "chargeType": "PRODUCT",
  //                  "chargeName": "ItemPrice",
  //                  "chargeAmount": {
  //                    "currency": "USD",
  //                    "amount": 555
  //                  },
  //                  "tax": {
  //                    "taxName": "Tax1",
  //                    "taxAmount": {
  //                      "currency": "USD",
  //                      "amount": 48.56
  //                    }
  //                  }
  //                }
  //              ]
  //            },
  //            "orderLineQuantity": {
  //              "unitOfMeasurement": "EACH",
  //              "amount": "1"
  //            },
  //            "statusDate": 1478297929000,
  //            "orderLineStatuses": {
  //              "orderLineStatus": [
  //                {
  //                  "status": "Shipped",
  //                  "statusQuantity": {
  //                    "unitOfMeasurement": "EACH",
  //                    "amount": "1"
  //                  },
  //                  "trackingInfo": {
  //                    "shipDateTime": 1438163400000,
  //                    "carrierName": {
  //                      "carrier": "FedEx"
  //                    },
  //                    "methodCode": "Value",
  //                    "trackingNumber": "911001572321619861",
  //                    "trackingURL": "http://www.fedex.com/Tracking?action=track=english=us=x=911001572321619861"
  //                  },
  //                  "returnCenterAddress": {
  //                    "name": "ABC",
  //                    "address1": "123 Bridge street",
  //                    "city": "Huntsville",
  //                    "state": "AL",
  //                    "postalCode": "35805",
  //                    "country": "USA",
  //                    "dayPhone": "6501234567",
  //                    "emailId": "RCemailaddress@company.com"
  //                  }
  //                }
  //              ]
  //            }
  //          }
  //        ]
  //      }
  //    }
  //  }

  json.EmitCompact := False;
  WriteLn('Response JSON:');
  WriteLn(json.Emit());

  //  Insert code here to load the above JSON into the json object.

  PurchaseOrderId := json.StringOf('order.purchaseOrderId');
  CustomerOrderId := json.StringOf('order.customerOrderId');
  SellerOrderId := json.StringOf('order.sellerOrderId');
  CustomerEmailId := json.StringOf('order.customerEmailId');
  OrderDate := json.IntOf('order.orderDate');
  Phone := json.StringOf('order.shippingInfo.phone');
  EstimatedDeliveryDate := json.IntOf('order.shippingInfo.estimatedDeliveryDate');
  EstimatedShipDate := json.IntOf('order.shippingInfo.estimatedShipDate');
  MethodCode := json.StringOf('order.shippingInfo.methodCode');
  Name := json.StringOf('order.shippingInfo.postalAddress.name');
  Address1 := json.StringOf('order.shippingInfo.postalAddress.address1');
  City := json.StringOf('order.shippingInfo.postalAddress.city');
  State := json.StringOf('order.shippingInfo.postalAddress.state');
  PostalCode := json.StringOf('order.shippingInfo.postalAddress.postalCode');
  Country := json.StringOf('order.shippingInfo.postalAddress.country');
  AddressType := json.StringOf('order.shippingInfo.postalAddress.addressType');
  i := 0;
  j := 0;
  count_i := json.SizeOfArray('order.orderLines.orderLine');
  while i < count_i do
    begin
      json.I := i;
      lineNumber := json.StringOf('order.orderLines.orderLine[i].lineNumber');
      ProductName := json.StringOf('order.orderLines.orderLine[i].item.productName');
      Sku := json.StringOf('order.orderLines.orderLine[i].item.sku');
      UnitOfMeasurement := json.StringOf('order.orderLines.orderLine[i].orderLineQuantity.unitOfMeasurement');
      Amount := json.StringOf('order.orderLines.orderLine[i].orderLineQuantity.amount');
      statusDate := json.IntOf('order.orderLines.orderLine[i].statusDate');
      j := 0;
      count_j := json.SizeOfArray('order.orderLines.orderLine[i].charges.charge');
      while j < count_j do
        begin
          json.J := j;
          chargeType := json.StringOf('order.orderLines.orderLine[i].charges.charge[j].chargeType');
          chargeName := json.StringOf('order.orderLines.orderLine[i].charges.charge[j].chargeName');
          v_Currency := json.StringOf('order.orderLines.orderLine[i].charges.charge[j].chargeAmount.currency');
          chargeAmountAmount := json.IntOf('order.orderLines.orderLine[i].charges.charge[j].chargeAmount.amount');
          TaxName := json.StringOf('order.orderLines.orderLine[i].charges.charge[j].tax.taxName');
          TaxAmountCurrency := json.StringOf('order.orderLines.orderLine[i].charges.charge[j].tax.taxAmount.currency');
          TaxAmountAmount := json.StringOf('order.orderLines.orderLine[i].charges.charge[j].tax.taxAmount.amount');
          j := j + 1;
        end;

      j := 0;
      count_j := json.SizeOfArray('order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus');
      while j < count_j do
        begin
          json.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');
          ShipDateTime := json.IntOf('order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.shipDateTime');
          Carrier := json.StringOf('order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.carrierName.carrier');
          trackingInfoMethodCode := json.StringOf('order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.methodCode');
          TrackingNumber := json.StringOf('order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.trackingNumber');
          TrackingURL := json.StringOf('order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].trackingInfo.trackingURL');
          returnCenterAddressName := json.StringOf('order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.name');
          returnCenterAddressAddress1 := json.StringOf('order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.address1');
          returnCenterAddressCity := json.StringOf('order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.city');
          returnCenterAddressState := json.StringOf('order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.state');
          returnCenterAddressPostalCode := json.StringOf('order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.postalCode');
          returnCenterAddressCountry := json.StringOf('order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.country');
          DayPhone := json.StringOf('order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.dayPhone');
          EmailId := json.StringOf('order.orderLines.orderLine[i].orderLineStatuses.orderLineStatus[j].returnCenterAddress.emailId');
          j := j + 1;
        end;

      i := i + 1;
    end;



  http.Free;
  json.Free;
  resp.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.