Sample code for 30+ languages & platforms
Visual FoxPro

Shopify Create a new unpublished product

See more Shopify Examples

Create a new unpublished product

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loRest
LOCAL loJsonReq
LOCAL loSbReq
LOCAL loSbJson
LOCAL loJson
LOCAL lnProductId
LOCAL lcProductTitle
LOCAL lcProductBody_html
LOCAL lcProductVendor
LOCAL lcProductProduct_type
LOCAL lcProductCreated_at
LOCAL lcProductHandle
LOCAL lcProductUpdated_at
LOCAL lnProductPublished_at
LOCAL lnProductTemplate_suffix
LOCAL lcProductPublished_scope
LOCAL lcProductTags
LOCAL lnProductImage
LOCAL i
LOCAL lnCount_i
LOCAL lnId
LOCAL lnProduct_id
LOCAL lcTitle
LOCAL lcPrice
LOCAL lcSku
LOCAL lnPosition
LOCAL lnGrams
LOCAL lcInventory_policy
LOCAL lnCompare_at_price
LOCAL lcFulfillment_service
LOCAL lnInventory_management
LOCAL lcOption1
LOCAL lnOption2
LOCAL lnOption3
LOCAL lcCreated_at
LOCAL lcUpdated_at
LOCAL lnTaxable
LOCAL lnBarcode
LOCAL lnImage_id
LOCAL lnInventory_quantity
LOCAL lnWeight
LOCAL lcWeight_unit
LOCAL lnOld_inventory_quantity
LOCAL lnRequires_shipping
LOCAL lcName
LOCAL j
LOCAL lnCount_j
LOCAL lcStrVal

lnSuccess = 0

loRest = CreateObject('Chilkat.Rest')

loRest.SetAuthBasic("SHOPIFY_PRIVATE_API_KEY","SHOPIFY_PRIVATE_API_KEY")

lnSuccess = loRest.Connect("chilkat.myshopify.com",443,1,1)
IF (lnSuccess <> 1) THEN
    ? loRest.LastErrorText
    RELEASE loRest
    CANCEL
ENDIF

* The following code creates the JSON request body.
* The JSON created by this code is shown below.
loJsonReq = CreateObject('Chilkat.JsonObject')
loJsonReq.UpdateString("product.title","Burton Custom Freestyle 151")
loJsonReq.UpdateString("product.body_html","<strong>Good snowboard!</strong>")
loJsonReq.UpdateString("product.vendor","Burton")
loJsonReq.UpdateString("product.product_type","Snowboard")
loJsonReq.UpdateBool("product.published",0)

* The JSON request body created by the above code:

* {
*   "product": {
*     "title": "Burton Custom Freestyle 151",
*     "body_html": "<strong>Good snowboard!<\/strong>",
*     "vendor": "Burton",
*     "product_type": "Snowboard",
*     "published": false
*   }
* }

loSbReq = CreateObject('Chilkat.StringBuilder')
loJsonReq.EmitSb(loSbReq)

loRest.AddHeader("Content-Type","application/json")

loSbJson = CreateObject('Chilkat.StringBuilder')
lnSuccess = loRest.FullRequestSb("POST","/admin/products.json ",loSbReq,loSbJson)
IF (lnSuccess <> 1) THEN
    ? loRest.LastErrorText
    RELEASE loRest
    RELEASE loJsonReq
    RELEASE loSbReq
    RELEASE loSbJson
    CANCEL
ENDIF

IF (loRest.ResponseStatusCode <> 201) THEN
    ? "Received error response code: " + STR(loRest.ResponseStatusCode)
    ? "Response body:"
    ? loSbJson.GetAsString()
    RELEASE loRest
    RELEASE loJsonReq
    RELEASE loSbReq
    RELEASE loSbJson
    CANCEL
ENDIF

loJson = CreateObject('Chilkat.JsonObject')
loJson.LoadSb(loSbJson)

* The following code parses the JSON response.
* A sample JSON response is shown below the sample code.

lnProductId = loJson.IntOf("product.id")
lcProductTitle = loJson.StringOf("product.title")
lcProductBody_html = loJson.StringOf("product.body_html")
lcProductVendor = loJson.StringOf("product.vendor")
lcProductProduct_type = loJson.StringOf("product.product_type")
lcProductCreated_at = loJson.StringOf("product.created_at")
lcProductHandle = loJson.StringOf("product.handle")
lcProductUpdated_at = loJson.StringOf("product.updated_at")
lnProductPublished_at = loJson.IsNullOf("product.published_at")
lnProductTemplate_suffix = loJson.IsNullOf("product.template_suffix")
lcProductPublished_scope = loJson.StringOf("product.published_scope")
lcProductTags = loJson.StringOf("product.tags")
lnProductImage = loJson.IsNullOf("product.image")
i = 0
lnCount_i = loJson.SizeOfArray("product.variants")
DO WHILE i < lnCount_i
    loJson.I = i
    lnId = loJson.IntOf("product.variants[i].id")
    lnProduct_id = loJson.IntOf("product.variants[i].product_id")
    lcTitle = loJson.StringOf("product.variants[i].title")
    lcPrice = loJson.StringOf("product.variants[i].price")
    lcSku = loJson.StringOf("product.variants[i].sku")
    lnPosition = loJson.IntOf("product.variants[i].position")
    lnGrams = loJson.IntOf("product.variants[i].grams")
    lcInventory_policy = loJson.StringOf("product.variants[i].inventory_policy")
    lnCompare_at_price = loJson.IsNullOf("product.variants[i].compare_at_price")
    lcFulfillment_service = loJson.StringOf("product.variants[i].fulfillment_service")
    lnInventory_management = loJson.IsNullOf("product.variants[i].inventory_management")
    lcOption1 = loJson.StringOf("product.variants[i].option1")
    lnOption2 = loJson.IsNullOf("product.variants[i].option2")
    lnOption3 = loJson.IsNullOf("product.variants[i].option3")
    lcCreated_at = loJson.StringOf("product.variants[i].created_at")
    lcUpdated_at = loJson.StringOf("product.variants[i].updated_at")
    lnTaxable = loJson.BoolOf("product.variants[i].taxable")
    lnBarcode = loJson.IsNullOf("product.variants[i].barcode")
    lnImage_id = loJson.IsNullOf("product.variants[i].image_id")
    lnInventory_quantity = loJson.IntOf("product.variants[i].inventory_quantity")
    lnWeight = loJson.IntOf("product.variants[i].weight")
    lcWeight_unit = loJson.StringOf("product.variants[i].weight_unit")
    lnOld_inventory_quantity = loJson.IntOf("product.variants[i].old_inventory_quantity")
    lnRequires_shipping = loJson.BoolOf("product.variants[i].requires_shipping")
    i = i + 1
ENDDO
i = 0
lnCount_i = loJson.SizeOfArray("product.options")
DO WHILE i < lnCount_i
    loJson.I = i
    lnId = loJson.IntOf("product.options[i].id")
    lnProduct_id = loJson.IntOf("product.options[i].product_id")
    lcName = loJson.StringOf("product.options[i].name")
    lnPosition = loJson.IntOf("product.options[i].position")
    j = 0
    lnCount_j = loJson.SizeOfArray("product.options[i].values")
    DO WHILE j < lnCount_j
        loJson.J = j
        lcStrVal = loJson.StringOf("product.options[i].values[j]")
        j = j + 1
    ENDDO
    i = i + 1
ENDDO
i = 0
lnCount_i = loJson.SizeOfArray("product.images")
DO WHILE i < lnCount_i
    loJson.I = i
    i = i + 1
ENDDO

* A sample JSON response body that is parsed by the above code:

* {
*   "product": {
*     "id": 1071559753,
*     "title": "Burton Custom Freestyle 151",
*     "body_html": "<strong>Good snowboard!<\/strong>",
*     "vendor": "Burton",
*     "product_type": "Snowboard",
*     "created_at": "2017-09-22T14:48:52-04:00",
*     "handle": "burton-custom-freestyle-151",
*     "updated_at": "2017-09-22T14:48:52-04:00",
*     "published_at": null,
*     "template_suffix": null,
*     "published_scope": "global",
*     "tags": "",
*     "variants": [
*       {
*         "id": 1070325224,
*         "product_id": 1071559753,
*         "title": "Default Title",
*         "price": "0.00",
*         "sku": "",
*         "position": 1,
*         "grams": 0,
*         "inventory_policy": "deny",
*         "compare_at_price": null,
*         "fulfillment_service": "manual",
*         "inventory_management": null,
*         "option1": "Default Title",
*         "option2": null,
*         "option3": null,
*         "created_at": "2017-09-22T14:48:52-04:00",
*         "updated_at": "2017-09-22T14:48:52-04:00",
*         "taxable": true,
*         "barcode": null,
*         "image_id": null,
*         "inventory_quantity": 1,
*         "weight": 0.0,
*         "weight_unit": "lb",
*         "old_inventory_quantity": 1,
*         "requires_shipping": true
*       }
*     ],
*     "options": [
*       {
*         "id": 1022828912,
*         "product_id": 1071559753,
*         "name": "Title",
*         "position": 1,
*         "values": [
*           "Default Title"
*         ]
*       }
*     ],
*     "images": [
*     ],
*     "image": null
*   }
* }

? "Example Completed."

RELEASE loRest
RELEASE loJsonReq
RELEASE loSbReq
RELEASE loSbJson
RELEASE loJson