Sample code for 30+ languages & platforms
Perl

Amazon SP-API Get Orders

See more Amazon SP-API Examples

Demonstrates Amazon SP-API Sellers API -- get orders. Returns orders created or updated during the time frame indicated by the specified parameters.

Chilkat Perl Downloads

Perl
use chilkat();

$success = 0;

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

# IMPORTANT:
# You'll need to make changes to use values specific to your own region and account.
# 
# Here is a list of values you'll need to change or provide:
# 
# 1) The access key. Change AWS_ACCESS_KEY to your actual access key.
# 2) The secret key. Change AWS_SECRET_KEY to your actual access key.
# 3) Your region.  Change "ew-west-1" to your region.
# 4) The domain to which you connect.  Change sandbox.sellingpartnerapi-eu.amazon.com to non-sandbox by removing the "sandbox." 
#    and change the "-eu" part of the domain to your region. See https://developer-docs.amazon.com/sp-api/docs/sp-api-endpoints
# 5) Use the restricted data token (RDT) obtained from your code that previously obtained the RDT.
# 	If you saved the RDT to a file, update the relative file path "qa_data/tokens/sp_api_rdt_token.json" to your actual file path.
# 6) Update your Marketplace ID(s), such as ATVPDKIKX0DER
# 7) If using the non-sandbox, change the CreatedAfter from "TEST_CASE_200" to an actual date, such as "2022-12-25"

$authAws = chilkat::CkAuthAws->new();
$authAws->put_AccessKey("AWS_ACCESS_KEY");
$authAws->put_SecretKey("AWS_SECRET_KEY");
$authAws->put_ServiceName("execute-api");
# Use the region that is correct for your needs.
$authAws->put_Region("eu-west-1");

$rest = chilkat::CkRest->new();
$bTls = 1;
$port = 443;
$bAutoReconnect = 1;
# Make sure to use the correct domain.
# This example is using the sandbox
$success = $rest->Connect("sandbox.sellingpartnerapi-eu.amazon.com",$port,$bTls,$bAutoReconnect);
if ($success == 0) {
    print $rest->lastErrorText() . "\r\n";
    exit;
}

$success = $rest->SetAuthAws($authAws);

# Here's the example to get the RDT access token: Get SP-API Restricted Data Token

# Load the previously obtained RDT access token.
# See Fetch SP-API RDT Access Token
$jsonToken = chilkat::CkJsonObject->new();
$success = $jsonToken->LoadFile("qa_data/tokens/sp_api_rdt_token.json");
if ($success == 0) {
    print "Failed to load RDT access token." . "\r\n";
    exit;
}

# Add the x-amz-access-token request header.
$rdt_token = $jsonToken->stringOf("restrictedDataToken");
$rest->ClearAllHeaders();
$rest->AddHeader("x-amz-access-token",$rdt_token);

# Indicate the marketplace IDs.  Use the marketplace ID for your needs. See https://developer-docs.amazon.com/sp-api/docs/marketplace-ids
$rest->ClearAllQueryParams();
# When using the sandbox, use these params literally and exactly has shown here:
$rest->AddQueryParam("MarketplaceIds","ATVPDKIKX0DER");
$rest->AddQueryParam("CreatedAfter","TEST_CASE_200");

$sbResponse = chilkat::CkStringBuilder->new();
$uri = "/orders/v0/orders";
$success = $rest->FullRequestNoBodySb("GET",$uri,$sbResponse);
if ($success == 0) {
    print $rest->lastErrorText() . "\r\n";
    exit;
}

# Examine the response status.
$statusCode = $rest->get_ResponseStatusCode();
if ($statusCode != 200) {
    print "Response status text: " . $rest->responseStatusText() . "\r\n";
    print "Response body: " . "\r\n";
    print $sbResponse->getAsString() . "\r\n";
    print "Failed." . "\r\n";
    exit;
}

print $sbResponse->getAsString() . "\r\n";

# If successful, gets a JSON response such as the following:

# {
#   "payload": {
#     "CreatedBefore": "1.569521782042E9",
#     "Orders": [
#       {
#         "AmazonOrderId": "902-1845936-5435065",
#         "PurchaseDate": "1970-01-19T03:58:30Z",
#         "LastUpdateDate": "1970-01-19T03:58:32Z",
#         "OrderStatus": "Unshipped",
#         "FulfillmentChannel": "MFN",
#         "SalesChannel": "Amazon.com",
#         "ShipServiceLevel": "Std US D2D Dom",
#         "OrderTotal": {
#           "CurrencyCode": "USD",
#           "Amount": "11.01"
#         },
#         "NumberOfItemsShipped": 0,
#         "NumberOfItemsUnshipped": 1,
#         "PaymentMethod": "Other",
#         "PaymentMethodDetails": [
#           "Standard"
#         ],
#         "IsReplacementOrder": false,
#         "MarketplaceId": "ATVPDKIKX0DER",
#         "ShipmentServiceLevelCategory": "Standard",
#         "OrderType": "StandardOrder",
#         "EarliestShipDate": "1970-01-19T03:59:27Z",
#         "LatestShipDate": "1970-01-19T04:05:13Z",
#         "EarliestDeliveryDate": "1970-01-19T04:06:39Z",
#         "LatestDeliveryDate": "1970-01-19T04:15:17Z",
#         "IsBusinessOrder": false,
#         "IsPrime": false,
#         "IsGlobalExpressEnabled": false,
#         "IsPremiumOrder": false,
#         "IsSoldByAB": false,
#         "IsIBA": false,
#         "DefaultShipFromLocationAddress": {
#           "Name": "MFNIntegrationTestMerchant",
#           "AddressLine1": "2201 WESTLAKE AVE",
#           "City": "SEATTLE",
#           "StateOrRegion": "WA",
#           "PostalCode": "98121-2778",
#           "CountryCode": "US",
#           "Phone": "+1 480-386-0930 ext. 73824",
#           "AddressType": "Commercial"
#         },
#         "FulfillmentInstruction": {
#           "FulfillmentSupplySourceId": "sampleSupplySourceId"
#         },
#         "IsISPU": false,
#         "IsAccessPointOrder": false,
#         "AutomatedShippingSettings": {
#           "HasAutomatedShippingSettings": false
#         },
#         "EasyShipShipmentStatus": "PendingPickUp",
#         "ElectronicInvoiceStatus": "NotRequired"
#       },
#       {
#         "AmazonOrderId": "902-8745147-1934268",
#         "PurchaseDate": "1970-01-19T03:58:30Z",
#         "LastUpdateDate": "1970-01-19T03:58:32Z",
#         "OrderStatus": "Unshipped",
#         "FulfillmentChannel": "MFN",
#         "SalesChannel": "Amazon.com",
#         "ShipServiceLevel": "Std US D2D Dom",
#         "OrderTotal": {
#           "CurrencyCode": "USD",
#           "Amount": "11.01"
#         },
#         "NumberOfItemsShipped": 0,
#         "NumberOfItemsUnshipped": 1,
#         "PaymentMethod": "Other",
#         "PaymentMethodDetails": [
#           "Standard"
#         ],
#         "IsReplacementOrder": false,
#         "MarketplaceId": "ATVPDKIKX0DER",
#         "ShipmentServiceLevelCategory": "Standard",
#         "OrderType": "StandardOrder",
#         "EarliestShipDate": "1970-01-19T03:59:27Z",
#         "LatestShipDate": "1970-01-19T04:05:13Z",
#         "EarliestDeliveryDate": "1970-01-19T04:06:39Z",
#         "LatestDeliveryDate": "1970-01-19T04:15:17Z",
#         "IsBusinessOrder": false,
#         "IsPrime": false,
#         "IsAccessPointOrder": false,
#         "IsGlobalExpressEnabled": false,
#         "IsPremiumOrder": false,
#         "IsSoldByAB": false,
#         "IsIBA": false,
#         "EasyShipShipmentStatus": "PendingPickUp",
#         "ElectronicInvoiceStatus": "NotRequired"
#       }
#     ]
#   }
# }

# Use this online tool to generate parsing code from sample JSON: 
# Generate Parsing Code from JSON

$json = chilkat::CkJsonObject->new();

$json->LoadSb($sbResponse);

$CreatedBefore = $json->stringOf("payload.CreatedBefore");
$i = 0;
$count_i = $json->SizeOfArray("payload.Orders");
while ($i < $count_i) {
    $json->put_I($i);
    $AmazonOrderId = $json->stringOf("payload.Orders[i].AmazonOrderId");
    $PurchaseDate = $json->stringOf("payload.Orders[i].PurchaseDate");
    $LastUpdateDate = $json->stringOf("payload.Orders[i].LastUpdateDate");
    $OrderStatus = $json->stringOf("payload.Orders[i].OrderStatus");
    $FulfillmentChannel = $json->stringOf("payload.Orders[i].FulfillmentChannel");
    $SalesChannel = $json->stringOf("payload.Orders[i].SalesChannel");
    $ShipServiceLevel = $json->stringOf("payload.Orders[i].ShipServiceLevel");
    $CurrencyCode = $json->stringOf("payload.Orders[i].OrderTotal.CurrencyCode");
    $Amount = $json->stringOf("payload.Orders[i].OrderTotal.Amount");
    $NumberOfItemsShipped = $json->IntOf("payload.Orders[i].NumberOfItemsShipped");
    $NumberOfItemsUnshipped = $json->IntOf("payload.Orders[i].NumberOfItemsUnshipped");
    $PaymentMethod = $json->stringOf("payload.Orders[i].PaymentMethod");
    $IsReplacementOrder = $json->BoolOf("payload.Orders[i].IsReplacementOrder");
    $MarketplaceId = $json->stringOf("payload.Orders[i].MarketplaceId");
    $ShipmentServiceLevelCategory = $json->stringOf("payload.Orders[i].ShipmentServiceLevelCategory");
    $OrderType = $json->stringOf("payload.Orders[i].OrderType");
    $EarliestShipDate = $json->stringOf("payload.Orders[i].EarliestShipDate");
    $LatestShipDate = $json->stringOf("payload.Orders[i].LatestShipDate");
    $EarliestDeliveryDate = $json->stringOf("payload.Orders[i].EarliestDeliveryDate");
    $LatestDeliveryDate = $json->stringOf("payload.Orders[i].LatestDeliveryDate");
    $IsBusinessOrder = $json->BoolOf("payload.Orders[i].IsBusinessOrder");
    $IsPrime = $json->BoolOf("payload.Orders[i].IsPrime");
    $IsGlobalExpressEnabled = $json->BoolOf("payload.Orders[i].IsGlobalExpressEnabled");
    $IsPremiumOrder = $json->BoolOf("payload.Orders[i].IsPremiumOrder");
    $IsSoldByAB = $json->BoolOf("payload.Orders[i].IsSoldByAB");
    $IsIBA = $json->BoolOf("payload.Orders[i].IsIBA");
    $Name = $json->stringOf("payload.Orders[i].DefaultShipFromLocationAddress.Name");
    $AddressLine1 = $json->stringOf("payload.Orders[i].DefaultShipFromLocationAddress.AddressLine1");
    $City = $json->stringOf("payload.Orders[i].DefaultShipFromLocationAddress.City");
    $StateOrRegion = $json->stringOf("payload.Orders[i].DefaultShipFromLocationAddress.StateOrRegion");
    $PostalCode = $json->stringOf("payload.Orders[i].DefaultShipFromLocationAddress.PostalCode");
    $CountryCode = $json->stringOf("payload.Orders[i].DefaultShipFromLocationAddress.CountryCode");
    $Phone = $json->stringOf("payload.Orders[i].DefaultShipFromLocationAddress.Phone");
    $AddressType = $json->stringOf("payload.Orders[i].DefaultShipFromLocationAddress.AddressType");
    $FulfillmentSupplySourceId = $json->stringOf("payload.Orders[i].FulfillmentInstruction.FulfillmentSupplySourceId");
    $IsISPU = $json->BoolOf("payload.Orders[i].IsISPU");
    $IsAccessPointOrder = $json->BoolOf("payload.Orders[i].IsAccessPointOrder");
    $HasAutomatedShippingSettings = $json->BoolOf("payload.Orders[i].AutomatedShippingSettings.HasAutomatedShippingSettings");
    $EasyShipShipmentStatus = $json->stringOf("payload.Orders[i].EasyShipShipmentStatus");
    $ElectronicInvoiceStatus = $json->stringOf("payload.Orders[i].ElectronicInvoiceStatus");
    $j = 0;
    $count_j = $json->SizeOfArray("payload.Orders[i].PaymentMethodDetails");
    while ($j < $count_j) {
        $json->put_J($j);
        $strVal = $json->stringOf("payload.Orders[i].PaymentMethodDetails[j]");
        $j = $j + 1;
    }

    $i = $i + 1;
}

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