Visual FoxPro
Visual FoxPro
Shopify Create New Product
See more Shopify Examples
Create a new productChilkat Visual FoxPro Downloads
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 lcProductPublished_at
LOCAL lnProductTemplate_suffix
LOCAL lcProductPublished_scope
LOCAL lcProductTags
LOCAL lnProductImageId
LOCAL lnProductImageProduct_id
LOCAL lnProductImagePosition
LOCAL lcProductImageCreated_at
LOCAL lcProductImageUpdated_at
LOCAL lnProductImageWidth
LOCAL lnProductImageHeight
LOCAL lcProductImageSrc
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
LOCAL lnWidth
LOCAL lnHeight
LOCAL lcSrc
lnSuccess = 0
loRest = CreateObject('Chilkat.Rest')
loRest.SetAuthBasic("SHOPIFY_PRIVATE_API_KEY","SHOPIFY_PRIVATE_API_SECRET_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.UpdateString("product.images[0].attachment","R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==")
* 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",
* "images": [
* {
* "attachment": "R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="
* }
* ]
* }
* }
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")
lcProductPublished_at = loJson.StringOf("product.published_at")
lnProductTemplate_suffix = loJson.IsNullOf("product.template_suffix")
lcProductPublished_scope = loJson.StringOf("product.published_scope")
lcProductTags = loJson.StringOf("product.tags")
lnProductImageId = loJson.IntOf("product.image.id")
lnProductImageProduct_id = loJson.IntOf("product.image.product_id")
lnProductImagePosition = loJson.IntOf("product.image.position")
lcProductImageCreated_at = loJson.StringOf("product.image.created_at")
lcProductImageUpdated_at = loJson.StringOf("product.image.updated_at")
lnProductImageWidth = loJson.IntOf("product.image.width")
lnProductImageHeight = loJson.IntOf("product.image.height")
lcProductImageSrc = loJson.StringOf("product.image.src")
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
lnId = loJson.IntOf("product.images[i].id")
lnProduct_id = loJson.IntOf("product.images[i].product_id")
lnPosition = loJson.IntOf("product.images[i].position")
lcCreated_at = loJson.StringOf("product.images[i].created_at")
lcUpdated_at = loJson.StringOf("product.images[i].updated_at")
lnWidth = loJson.IntOf("product.images[i].width")
lnHeight = loJson.IntOf("product.images[i].height")
lcSrc = loJson.StringOf("product.images[i].src")
j = 0
lnCount_j = loJson.SizeOfArray("product.images[i].variant_ids")
DO WHILE j < lnCount_j
loJson.J = j
j = j + 1
ENDDO
i = i + 1
ENDDO
i = 0
lnCount_i = loJson.SizeOfArray("image.product.variant_ids")
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": 1071559747,
* "title": "Burton Custom Freestyle 151",
* "body_html": "<strong>Good snowboard!<\/strong>",
* "vendor": "Burton",
* "product_type": "Snowboard",
* "created_at": "2017-09-22T14:48:43-04:00",
* "handle": "burton-custom-freestyle-151",
* "updated_at": "2017-09-22T14:48:44-04:00",
* "published_at": "2017-09-22T14:48:43-04:00",
* "template_suffix": null,
* "published_scope": "global",
* "tags": "",
* "variants": [
* {
* "id": 1070325218,
* "product_id": 1071559747,
* "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:44-04:00",
* "updated_at": "2017-09-22T14:48:44-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": 1022828903,
* "product_id": 1071559747,
* "name": "Title",
* "position": 1,
* "values": [
* "Default Title"
* ]
* }
* ],
* "images": [
* {
* "id": 1001473945,
* "product_id": 1071559747,
* "position": 1,
* "created_at": "2017-09-22T14:48:43-04:00",
* "updated_at": "2017-09-22T14:48:43-04:00",
* "width": 1,
* "height": 1,
* "src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/products\/df3e567d6f16d040326c7a0ea29a4f41.gif?v=1506106123",
* "variant_ids": [
* ]
* }
* ],
* "image": {
* "id": 1001473945,
* "product_id": 1071559747,
* "position": 1,
* "created_at": "2017-09-22T14:48:43-04:00",
* "updated_at": "2017-09-22T14:48:43-04:00",
* "width": 1,
* "height": 1,
* "src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/products\/df3e567d6f16d040326c7a0ea29a4f41.gif?v=1506106123",
* "variant_ids": [
* ]
* }
* }
* }
? "Example Completed."
RELEASE loRest
RELEASE loJsonReq
RELEASE loSbReq
RELEASE loSbJson
RELEASE loJson