Sample code for 30+ languages & platforms
Lua

Shippo Create an Order

See more Shippo Examples

Demonstrates how to create an order with all the information about your order by sending a POST request to the orders endpoint.

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

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

local http = chilkat.Http.new()

-- Implements the following CURL command:

-- curl https://api.goshippo.com/orders/ \
--     -H "Authorization: ShippoToken <API_Token>" \
--     -H "Content-Type: application/json"  \
--     -d '{
--             "to_address": {
--                 "city": "San Francisco",
--                 "company": "Shippo",
--                 "country": "US",
--                 "email": "shippotle@goshippo.com",
--                 "name": "Mr Hippo",
--                 "phone": "15553419393",
--                 "state": "CA",
--                 "street1": "215 Clayton St.",
--                 "zip": "94117"
--             },
--             "line_items": [
--                 {
--                     "quantity": 1,
--                     "sku": "HM-123",
--                     "title": "Hippo Magazines",
--                     "total_price": "12.10",
--                     "currency": "USD",
--                     "weight": "0.40",
--                     "weight_unit": "lb"
--                 }
--             ],
--             "placed_at": "2016-09-23T01:28:12Z",
--             "order_number": "#1068",
--             "order_status": "PAID",
--             "shipping_cost": "12.83",
--             "shipping_cost_currency": "USD",
--             "shipping_method": "USPS First Class Package",
--             "subtotal_price": "12.10",
--             "total_price": "24.93",
--             "total_tax": "0.00",
--             "currency": "USD",
--             "weight": "0.40",
--             "weight_unit": "lb"
--         }'

-- Use this online tool to generate code from sample JSON:
-- Generate Code to Create JSON

-- The following JSON is sent in the request body.

-- {
--   "to_address": {
--     "city": "San Francisco",
--     "company": "Shippo",
--     "country": "US",
--     "email": "shippotle@goshippo.com",
--     "name": "Mr Hippo",
--     "phone": "15553419393",
--     "state": "CA",
--     "street1": "215 Clayton St.",
--     "zip": "94117"
--   },
--   "line_items": [
--     {
--       "quantity": 1,
--       "sku": "HM-123",
--       "title": "Hippo Magazines",
--       "total_price": "12.10",
--       "currency": "USD",
--       "weight": "0.40",
--       "weight_unit": "lb"
--     }
--   ],
--   "placed_at": "2016-09-23T01:28:12Z",
--   "order_number": "#1068",
--   "order_status": "PAID",
--   "shipping_cost": "12.83",
--   "shipping_cost_currency": "USD",
--   "shipping_method": "USPS First Class Package",
--   "subtotal_price": "12.10",
--   "total_price": "24.93",
--   "total_tax": "0.00",
--   "currency": "USD",
--   "weight": "0.40",
--   "weight_unit": "lb"
-- }

local json = chilkat.JsonObject.new()
json:update_string("to_address.city", "San Francisco")
json:update_string("to_address.company", "Shippo")
json:update_string("to_address.country", "US")
json:update_string("to_address.email", "shippotle@goshippo.com")
json:update_string("to_address.name", "Mr Hippo")
json:update_string("to_address.phone", "15553419393")
json:update_string("to_address.state", "CA")
json:update_string("to_address.street1", "215 Clayton St.")
json:update_string("to_address.zip", "94117")
json:update_int("line_items[0].quantity", 1)
json:update_string("line_items[0].sku", "HM-123")
json:update_string("line_items[0].title", "Hippo Magazines")
json:update_string("line_items[0].total_price", "12.10")
json:update_string("line_items[0].currency", "USD")
json:update_string("line_items[0].weight", "0.40")
json:update_string("line_items[0].weight_unit", "lb")
json:update_string("placed_at", "2016-09-23T01:28:12Z")
json:update_string("order_number", "#1068")
json:update_string("order_status", "PAID")
json:update_string("shipping_cost", "12.83")
json:update_string("shipping_cost_currency", "USD")
json:update_string("shipping_method", "USPS First Class Package")
json:update_string("subtotal_price", "12.10")
json:update_string("total_price", "24.93")
json:update_string("total_tax", "0.00")
json:update_string("currency", "USD")
json:update_string("weight", "0.40")
json:update_string("weight_unit", "lb")

http:set_request_header("Authorization", "ShippoToken <API_Token>")
http:set_request_header("Content-Type", "application/json")

local resp = chilkat.HttpResponse.new()
local success = http:http_json("POST", "https://api.goshippo.com/orders/", json, "application/json", resp)
if not success then
    print(http.last_error_text)
    return
end

local sbResponseBody = chilkat.StringBuilder.new()
resp:get_body_sb(sbResponseBody)
local jResp = chilkat.JsonObject.new()
jResp:load_sb(sbResponseBody)
jResp.emit_compact = false

print("Response Body:")
print(jResp:emit())

local respStatusCode = resp.status_code
print("Response Status Code = " .. respStatusCode)
if respStatusCode >= 400 then
    print("Response Header:")
    print(resp.header)
    print("Failed.")
    return
end

-- Sample JSON response:
-- (Sample code for parsing the JSON response is shown below)

-- {}

-- Sample code for parsing the JSON response...
-- Use the following online tool to generate parsing code from sample JSON:
-- Generate Parsing Code from JSON