Zig
Zig
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 Zig Downloads
const std = @import("std");
const chilkat = @import("chilkat");
pub fn main(init: std.process.Init) !void {
const alloc = init.arena.allocator();
// 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"
const auth_aws = try chilkat.AuthAws.init();
defer auth_aws.deinit();
auth_aws.setAccessKey("AWS_ACCESS_KEY");
auth_aws.setSecretKey("AWS_SECRET_KEY");
auth_aws.setServiceName("execute-api");
// Use the region that is correct for your needs.
auth_aws.setRegion("eu-west-1");
const rest = try chilkat.Rest.init();
defer rest.deinit();
const b_tls = true;
const port = 443;
const b_auto_reconnect = true;
// Make sure to use the correct domain.
// This example is using the sandbox
rest.connect("sandbox.sellingpartnerapi-eu.amazon.com", port, b_tls, b_auto_reconnect) catch {
std.debug.print("{s}\n", .{try rest.getLastErrorText(alloc)});
return;
};
try rest.setAuthAws(auth_aws);
// 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
const json_token = try chilkat.JsonObject.init();
defer json_token.deinit();
json_token.loadFile("qa_data/tokens/sp_api_rdt_token.json") catch {
std.debug.print("Failed to load RDT access token.\n", .{});
return;
};
// Add the x-amz-access-token request header.
const rdt_token = try json_token.stringOf(alloc, "restrictedDataToken");
rest.clearAllHeaders() catch {};
rest.addHeader("x-amz-access-token", rdt_token) catch {};
// Indicate the marketplace IDs. Use the marketplace ID for your needs. See https://developer-docs.amazon.com/sp-api/docs/marketplace-ids
rest.clearAllQueryParams() catch {};
// When using the sandbox, use these params literally and exactly has shown here:
rest.addQueryParam("MarketplaceIds", "ATVPDKIKX0DER") catch {};
rest.addQueryParam("CreatedAfter", "TEST_CASE_200") catch {};
const sb_response = try chilkat.StringBuilder.init();
defer sb_response.deinit();
const uri = "/orders/v0/orders";
rest.fullRequestNoBodySb("GET", uri, sb_response) catch {
std.debug.print("{s}\n", .{try rest.getLastErrorText(alloc)});
return;
};
// Examine the response status.
const status_code = rest.getResponseStatusCode();
if (status_code != 200) {
std.debug.print("Response status text: {s}\n", .{try rest.getResponseStatusText(alloc)});
std.debug.print("Response body: \n", .{});
std.debug.print("{s}\n", .{try sb_response.getAsString(alloc)});
std.debug.print("Failed.\n", .{});
return;
}
std.debug.print("{s}\n", .{try sb_response.getAsString(alloc)});
// 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
const json = try chilkat.JsonObject.init();
defer json.deinit();
json.loadSb(sb_response) catch {};
var amazon_order_id: [:0]const u8 = "";
var purchase_date: [:0]const u8 = "";
var last_update_date: [:0]const u8 = "";
var order_status: [:0]const u8 = "";
var fulfillment_channel: [:0]const u8 = "";
var sales_channel: [:0]const u8 = "";
var ship_service_level: [:0]const u8 = "";
var currency_code: [:0]const u8 = "";
var amount: [:0]const u8 = "";
var number_of_items_shipped: i32 = 0;
var number_of_items_unshipped: i32 = 0;
var payment_method: [:0]const u8 = "";
var is_replacement_order: bool = false;
var marketplace_id: [:0]const u8 = "";
var shipment_service_level_category: [:0]const u8 = "";
var order_type: [:0]const u8 = "";
var earliest_ship_date: [:0]const u8 = "";
var latest_ship_date: [:0]const u8 = "";
var earliest_delivery_date: [:0]const u8 = "";
var latest_delivery_date: [:0]const u8 = "";
var is_business_order: bool = false;
var is_prime: bool = false;
var is_global_express_enabled: bool = false;
var is_premium_order: bool = false;
var is_sold_by_ab: bool = false;
var is_iba: bool = false;
var name: [:0]const u8 = "";
var address_line1: [:0]const u8 = "";
var city: [:0]const u8 = "";
var state_or_region: [:0]const u8 = "";
var postal_code: [:0]const u8 = "";
var country_code: [:0]const u8 = "";
var phone: [:0]const u8 = "";
var address_type: [:0]const u8 = "";
var fulfillment_supply_source_id: [:0]const u8 = "";
var is_ispu: bool = false;
var is_access_point_order: bool = false;
var has_automated_shipping_settings: bool = false;
var easy_ship_shipment_status: [:0]const u8 = "";
var electronic_invoice_status: [:0]const u8 = "";
var j: i32 = 0;
var count_j: i32 = 0;
var str_val: [:0]const u8 = "";
_ = try json.stringOf(alloc, "payload.CreatedBefore");
var i: i32 = 0;
const count_i = json.sizeOfArray("payload.Orders");
while (i < count_i) {
json.setI(i);
amazon_order_id = try json.stringOf(alloc, "payload.Orders[i].AmazonOrderId");
purchase_date = try json.stringOf(alloc, "payload.Orders[i].PurchaseDate");
last_update_date = try json.stringOf(alloc, "payload.Orders[i].LastUpdateDate");
order_status = try json.stringOf(alloc, "payload.Orders[i].OrderStatus");
fulfillment_channel = try json.stringOf(alloc, "payload.Orders[i].FulfillmentChannel");
sales_channel = try json.stringOf(alloc, "payload.Orders[i].SalesChannel");
ship_service_level = try json.stringOf(alloc, "payload.Orders[i].ShipServiceLevel");
currency_code = try json.stringOf(alloc, "payload.Orders[i].OrderTotal.CurrencyCode");
amount = try json.stringOf(alloc, "payload.Orders[i].OrderTotal.Amount");
number_of_items_shipped = json.intOf("payload.Orders[i].NumberOfItemsShipped");
number_of_items_unshipped = json.intOf("payload.Orders[i].NumberOfItemsUnshipped");
payment_method = try json.stringOf(alloc, "payload.Orders[i].PaymentMethod");
is_replacement_order = json.boolOf("payload.Orders[i].IsReplacementOrder");
marketplace_id = try json.stringOf(alloc, "payload.Orders[i].MarketplaceId");
shipment_service_level_category = try json.stringOf(alloc, "payload.Orders[i].ShipmentServiceLevelCategory");
order_type = try json.stringOf(alloc, "payload.Orders[i].OrderType");
earliest_ship_date = try json.stringOf(alloc, "payload.Orders[i].EarliestShipDate");
latest_ship_date = try json.stringOf(alloc, "payload.Orders[i].LatestShipDate");
earliest_delivery_date = try json.stringOf(alloc, "payload.Orders[i].EarliestDeliveryDate");
latest_delivery_date = try json.stringOf(alloc, "payload.Orders[i].LatestDeliveryDate");
is_business_order = json.boolOf("payload.Orders[i].IsBusinessOrder");
is_prime = json.boolOf("payload.Orders[i].IsPrime");
is_global_express_enabled = json.boolOf("payload.Orders[i].IsGlobalExpressEnabled");
is_premium_order = json.boolOf("payload.Orders[i].IsPremiumOrder");
is_sold_by_ab = json.boolOf("payload.Orders[i].IsSoldByAB");
is_iba = json.boolOf("payload.Orders[i].IsIBA");
name = try json.stringOf(alloc, "payload.Orders[i].DefaultShipFromLocationAddress.Name");
address_line1 = try json.stringOf(alloc, "payload.Orders[i].DefaultShipFromLocationAddress.AddressLine1");
city = try json.stringOf(alloc, "payload.Orders[i].DefaultShipFromLocationAddress.City");
state_or_region = try json.stringOf(alloc, "payload.Orders[i].DefaultShipFromLocationAddress.StateOrRegion");
postal_code = try json.stringOf(alloc, "payload.Orders[i].DefaultShipFromLocationAddress.PostalCode");
country_code = try json.stringOf(alloc, "payload.Orders[i].DefaultShipFromLocationAddress.CountryCode");
phone = try json.stringOf(alloc, "payload.Orders[i].DefaultShipFromLocationAddress.Phone");
address_type = try json.stringOf(alloc, "payload.Orders[i].DefaultShipFromLocationAddress.AddressType");
fulfillment_supply_source_id = try json.stringOf(alloc, "payload.Orders[i].FulfillmentInstruction.FulfillmentSupplySourceId");
is_ispu = json.boolOf("payload.Orders[i].IsISPU");
is_access_point_order = json.boolOf("payload.Orders[i].IsAccessPointOrder");
has_automated_shipping_settings = json.boolOf("payload.Orders[i].AutomatedShippingSettings.HasAutomatedShippingSettings");
easy_ship_shipment_status = try json.stringOf(alloc, "payload.Orders[i].EasyShipShipmentStatus");
electronic_invoice_status = try json.stringOf(alloc, "payload.Orders[i].ElectronicInvoiceStatus");
j = 0;
count_j = json.sizeOfArray("payload.Orders[i].PaymentMethodDetails");
while (j < count_j) {
json.setJ(j);
str_val = try json.stringOf(alloc, "payload.Orders[i].PaymentMethodDetails[j]");
j = j + 1;
}
i = i + 1;
}
std.debug.print("Success!\n", .{});
}