Sample code for 30+ languages & platforms
Classic ASP

Shopify Add a metafield to an existing product

See more Shopify Examples

Add a metafield to an existing product

Chilkat Classic ASP Downloads

Classic ASP
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<%
success = 0

set rest = Server.CreateObject("Chilkat.Rest")

success = rest.SetAuthBasic("SHOPIFY_PRIVATE_API_KEY","SHOPIFY_PRIVATE_API_KEY")

success = rest.Connect("chilkat.myshopify.com",443,1,1)
If (success <> 1) Then
    Response.Write "<pre>" & Server.HTMLEncode( rest.LastErrorText) & "</pre>"
    Response.End
End If

' The following code creates the JSON request body.
' The JSON created by this code is shown below.
set jsonReq = Server.CreateObject("Chilkat.JsonObject")
success = jsonReq.UpdateNumber("product.id","632910392")
success = jsonReq.UpdateString("product.metafields[0].key","new")
success = jsonReq.UpdateString("product.metafields[0].value","newvalue")
success = jsonReq.UpdateString("product.metafields[0].value_type","string")
success = jsonReq.UpdateString("product.metafields[0].namespace","global")

' The JSON request body created by the above code:

' {
'   "product": {
'     "id": 632910392,
'     "metafields": [
'       {
'         "key": "new",
'         "value": "newvalue",
'         "value_type": "string",
'         "namespace": "global"
'       }
'     ]
'   }
' }

set sbReq = Server.CreateObject("Chilkat.StringBuilder")
success = jsonReq.EmitSb(sbReq)

success = rest.AddHeader("Content-Type","application/json")

set sbJson = Server.CreateObject("Chilkat.StringBuilder")
success = rest.FullRequestSb("PUT","/admin/products/#{id}.json",sbReq,sbJson)
If (success <> 1) Then
    Response.Write "<pre>" & Server.HTMLEncode( rest.LastErrorText) & "</pre>"
    Response.End
End If

If (rest.ResponseStatusCode <> 200) Then
    Response.Write "<pre>" & Server.HTMLEncode( "Received error response code: " & rest.ResponseStatusCode) & "</pre>"
    Response.Write "<pre>" & Server.HTMLEncode( "Response body:") & "</pre>"
    Response.Write "<pre>" & Server.HTMLEncode( sbJson.GetAsString()) & "</pre>"
    Response.End
End If

set json = Server.CreateObject("Chilkat.JsonObject")
success = json.LoadSb(sbJson)

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

productId = json.IntOf("product.id")
productTitle = json.StringOf("product.title")
productBody_html = json.StringOf("product.body_html")
productVendor = json.StringOf("product.vendor")
productProduct_type = json.StringOf("product.product_type")
productCreated_at = json.StringOf("product.created_at")
productHandle = json.StringOf("product.handle")
productUpdated_at = json.StringOf("product.updated_at")
productPublished_at = json.StringOf("product.published_at")
productTemplate_suffix = json.IsNullOf("product.template_suffix")
productPublished_scope = json.StringOf("product.published_scope")
productTags = json.StringOf("product.tags")
productImageId = json.IntOf("product.image.id")
productImageProduct_id = json.IntOf("product.image.product_id")
productImagePosition = json.IntOf("product.image.position")
productImageCreated_at = json.StringOf("product.image.created_at")
productImageUpdated_at = json.StringOf("product.image.updated_at")
productImageWidth = json.IntOf("product.image.width")
productImageHeight = json.IntOf("product.image.height")
productImageSrc = json.StringOf("product.image.src")
i = 0
count_i = json.SizeOfArray("product.variants")
Do While i < count_i
    json.I = i
    id = json.IntOf("product.variants[i].id")
    product_id = json.IntOf("product.variants[i].product_id")
    title = json.StringOf("product.variants[i].title")
    price = json.StringOf("product.variants[i].price")
    sku = json.StringOf("product.variants[i].sku")
    position = json.IntOf("product.variants[i].position")
    grams = json.IntOf("product.variants[i].grams")
    inventory_policy = json.StringOf("product.variants[i].inventory_policy")
    compare_at_price = json.IsNullOf("product.variants[i].compare_at_price")
    fulfillment_service = json.StringOf("product.variants[i].fulfillment_service")
    inventory_management = json.StringOf("product.variants[i].inventory_management")
    option1 = json.StringOf("product.variants[i].option1")
    option2 = json.IsNullOf("product.variants[i].option2")
    option3 = json.IsNullOf("product.variants[i].option3")
    created_at = json.StringOf("product.variants[i].created_at")
    updated_at = json.StringOf("product.variants[i].updated_at")
    taxable = json.BoolOf("product.variants[i].taxable")
    barcode = json.StringOf("product.variants[i].barcode")
    image_id = json.IntOf("product.variants[i].image_id")
    inventory_quantity = json.IntOf("product.variants[i].inventory_quantity")
    weight = json.IntOf("product.variants[i].weight")
    weight_unit = json.StringOf("product.variants[i].weight_unit")
    old_inventory_quantity = json.IntOf("product.variants[i].old_inventory_quantity")
    requires_shipping = json.BoolOf("product.variants[i].requires_shipping")
    i = i + 1
Loop
i = 0
count_i = json.SizeOfArray("product.options")
Do While i < count_i
    json.I = i
    id = json.IntOf("product.options[i].id")
    product_id = json.IntOf("product.options[i].product_id")
    name = json.StringOf("product.options[i].name")
    position = json.IntOf("product.options[i].position")
    j = 0
    count_j = json.SizeOfArray("product.options[i].values")
    Do While j < count_j
        json.J = j
        strVal = json.StringOf("product.options[i].values[j]")
        j = j + 1
    Loop
    i = i + 1
Loop
i = 0
count_i = json.SizeOfArray("product.images")
Do While i < count_i
    json.I = i
    id = json.IntOf("product.images[i].id")
    product_id = json.IntOf("product.images[i].product_id")
    position = json.IntOf("product.images[i].position")
    created_at = json.StringOf("product.images[i].created_at")
    updated_at = json.StringOf("product.images[i].updated_at")
    width = json.IntOf("product.images[i].width")
    height = json.IntOf("product.images[i].height")
    src = json.StringOf("product.images[i].src")
    j = 0
    count_j = json.SizeOfArray("product.images[i].variant_ids")
    Do While j < count_j
        json.J = j
        intVal = json.IntOf("product.images[i].variant_ids[j]")
        j = j + 1
    Loop
    i = i + 1
Loop
i = 0
count_i = json.SizeOfArray("image.product.variant_ids")
Do While i < count_i
    json.I = i
    i = i + 1
Loop

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

' {
'   "product": {
'     "id": 632910392,
'     "title": "IPod Nano - 8GB",
'     "body_html": "<p>It's the small iPod with one very big idea: Video. Now the world's most popular music player, available in 4GB and 8GB models, lets you enjoy TV shows, movies, video podcasts, and more. The larger, brighter display means amazing picture quality. In six eye-catching colors, iPod nano is stunning all around. And with models starting at just $149, little speaks volumes.<\/p>",
'     "vendor": "Apple",
'     "product_type": "Cult Products",
'     "created_at": "2017-09-22T14:08:02-04:00",
'     "handle": "ipod-nano",
'     "updated_at": "2017-09-22T14:48:57-04:00",
'     "published_at": "2007-12-31T19:00:00-05:00",
'     "template_suffix": null,
'     "published_scope": "web",
'     "tags": "Emotive, Flash Memory, MP3, Music",
'     "variants": [
'       {
'         "id": 808950810,
'         "product_id": 632910392,
'         "title": "Pink",
'         "price": "199.00",
'         "sku": "IPOD2008PINK",
'         "position": 1,
'         "grams": 567,
'         "inventory_policy": "continue",
'         "compare_at_price": null,
'         "fulfillment_service": "manual",
'         "inventory_management": "shopify",
'         "option1": "Pink",
'         "option2": null,
'         "option3": null,
'         "created_at": "2017-09-22T14:08:02-04:00",
'         "updated_at": "2017-09-22T14:48:57-04:00",
'         "taxable": true,
'         "barcode": "1234_pink",
'         "image_id": 562641783,
'         "inventory_quantity": 10,
'         "weight": 1.25,
'         "weight_unit": "lb",
'         "old_inventory_quantity": 10,
'         "requires_shipping": true
'       },
'       {
'         "id": 49148385,
'         "product_id": 632910392,
'         "title": "Red",
'         "price": "199.00",
'         "sku": "IPOD2008RED",
'         "position": 2,
'         "grams": 567,
'         "inventory_policy": "continue",
'         "compare_at_price": null,
'         "fulfillment_service": "manual",
'         "inventory_management": "shopify",
'         "option1": "Red",
'         "option2": null,
'         "option3": null,
'         "created_at": "2017-09-22T14:08:02-04:00",
'         "updated_at": "2017-09-22T14:08:02-04:00",
'         "taxable": true,
'         "barcode": "1234_red",
'         "image_id": null,
'         "inventory_quantity": 20,
'         "weight": 1.25,
'         "weight_unit": "lb",
'         "old_inventory_quantity": 20,
'         "requires_shipping": true
'       },
'       {
'         "id": 39072856,
'         "product_id": 632910392,
'         "title": "Green",
'         "price": "199.00",
'         "sku": "IPOD2008GREEN",
'         "position": 3,
'         "grams": 567,
'         "inventory_policy": "continue",
'         "compare_at_price": null,
'         "fulfillment_service": "manual",
'         "inventory_management": "shopify",
'         "option1": "Green",
'         "option2": null,
'         "option3": null,
'         "created_at": "2017-09-22T14:08:02-04:00",
'         "updated_at": "2017-09-22T14:08:02-04:00",
'         "taxable": true,
'         "barcode": "1234_green",
'         "image_id": null,
'         "inventory_quantity": 30,
'         "weight": 1.25,
'         "weight_unit": "lb",
'         "old_inventory_quantity": 30,
'         "requires_shipping": true
'       },
'       {
'         "id": 457924702,
'         "product_id": 632910392,
'         "title": "Black",
'         "price": "199.00",
'         "sku": "IPOD2008BLACK",
'         "position": 4,
'         "grams": 567,
'         "inventory_policy": "continue",
'         "compare_at_price": null,
'         "fulfillment_service": "manual",
'         "inventory_management": "shopify",
'         "option1": "Black",
'         "option2": null,
'         "option3": null,
'         "created_at": "2017-09-22T14:08:02-04:00",
'         "updated_at": "2017-09-22T14:08:02-04:00",
'         "taxable": true,
'         "barcode": "1234_black",
'         "image_id": null,
'         "inventory_quantity": 40,
'         "weight": 1.25,
'         "weight_unit": "lb",
'         "old_inventory_quantity": 40,
'         "requires_shipping": true
'       }
'     ],
'     "options": [
'       {
'         "id": 594680422,
'         "product_id": 632910392,
'         "name": "Color",
'         "position": 1,
'         "values": [
'           "Pink",
'           "Red",
'           "Green",
'           "Black"
'         ]
'       }
'     ],
'     "images": [
'       {
'         "id": 850703190,
'         "product_id": 632910392,
'         "position": 1,
'         "created_at": "2017-09-22T14:08:02-04:00",
'         "updated_at": "2017-09-22T14:08:02-04:00",
'         "width": 123,
'         "height": 456,
'         "src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/products\/ipod-nano.png?v=1506103682",
'         "variant_ids": [
'         ]
'       },
'       {
'         "id": 562641783,
'         "product_id": 632910392,
'         "position": 2,
'         "created_at": "2017-09-22T14:08:02-04:00",
'         "updated_at": "2017-09-22T14:08:02-04:00",
'         "width": 123,
'         "height": 456,
'         "src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/products\/ipod-nano-2.png?v=1506103682",
'         "variant_ids": [
'           808950810
'         ]
'       }
'     ],
'     "image": {
'       "id": 850703190,
'       "product_id": 632910392,
'       "position": 1,
'       "created_at": "2017-09-22T14:08:02-04:00",
'       "updated_at": "2017-09-22T14:08:02-04:00",
'       "width": 123,
'       "height": 456,
'       "src": "https:\/\/cdn.shopify.com\/s\/files\/1\/0006\/9093\/3842\/products\/ipod-nano.png?v=1506103682",
'       "variant_ids": [
'       ]
'     }
'   }
' }

Response.Write "<pre>" & Server.HTMLEncode( "Example Completed.") & "</pre>"

%>
</body>
</html>