Sample code for 30+ languages & platforms
B4X

Shopware 6 - Find Product by Name

See more Shopware 6 Examples

Find a product with a given name and get the id.

Chilkat B4X Downloads

B4X
Dim success As Boolean = False

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

Dim http As ChilkatHttp
http.Initialize("http")

'  Sends the following POST to find the product named "Test123"

'  POST /api/v3/search/product
'  {
'      "filter": [
'          { "type": "equals", "field": "name", "value": "Test123" }
'      ],
'      "includes": {
'          "product": ["id", "name"]
'      }
'  }

'  Create the above JSON.
'  Use this online tool to generate code from sample JSON:
'  Generate Code to Create JSON

Dim json As ChilkatJsonObject
json.Initialize
json.UpdateString("filter[0].type", "equals")
json.UpdateString("filter[0].field", "name")
json.UpdateString("filter[0].value", "Test123")
json.UpdateString("includes.product[0]", "id")
json.UpdateString("includes.product[1]", "name")
'  

'  Load the access token previously obtained in Shopware 6 OAuth2 Client Credentials
Dim jsonToken As ChilkatJsonObject
jsonToken.Initialize
jsonToken.LoadFile("qa_data/tokens/shopware6.json")

'  This causes the "Authorization: Bearer <access_token>" header to be added.
http.AuthToken = jsonToken.StringOf("access_token")

'  Note: If you get a 401 response status code, then fetch a new access token and retry.
Dim resp As ChilkatHttpResponse
resp.Initialize
success = http.HttpJson("POST", "https://my-shopware-6-shop.de/api/v3/search/product", json, "application/json", resp)
If success = False Then
    Log(http.LastErrorText)
    Return
End If


Dim sbResponseBody As ChilkatStringBuilder
sbResponseBody.Initialize
resp.GetBodySb(sbResponseBody)
Dim jResp As ChilkatJsonObject
jResp.Initialize
jResp.LoadSb(sbResponseBody)
jResp.EmitCompact = False

Log("Response Body:")
Log(jResp.Emit)

'  If we get a 401 response, it may be that our access token expired and we need to fetch a new one.
Dim respStatusCode As Int = resp.StatusCode
Log("Response Status Code = " & respStatusCode)
If respStatusCode >= 400 Then
    Log("Response Header:")
    Log(resp.Header)
    Log("Failed.")
    Return
End If


'  The response looks like this:
'  Use the following online tool to generate parsing code from sample JSON:
'  Generate Parsing Code from JSON

'  {
'    "data": [
'      {
'        "id": "d195dabb53cf46d096bd9a8726d82558",
'        "type": "product",
'        "attributes": {
'          "name": "Test123",
'          "apiAlias": null
'        },
'        "links": {
'          "self": "https:\/\/***.de\/api\/v3\/product\/d195dabb53cf46d096bd9a8726d82558"
'        },
'        "relationships": [
'        ],
'        "meta": null
'      }
'    ],
'    "included": [
'    ],
'    "links": {
'      "self": "https:\/\/***.de\/api\/v3\/search\/product"
'    },
'    "meta": {
'      "totalCountMode": 0,
'      "total": 1
'    },
'    "aggregations": [
'    ]
'  }

Dim numSearchResults As Int = jResp.SizeOfArray("data")
If numSearchResults <> 1 Then
    Log("numSearchResults = " & numSearchResults)
    Log("Did not find the product, or unexpectedly found more than one with the same name.")
    Return
End If


Dim productId As String = jResp.StringOf("data[0].id")

Log("Product ID = " & productId)