Sample code for 30+ languages & platforms
Visual FoxPro

TikTok Shop Get Authorized Shops

See more TikTok Shop Examples

An example showing how to get the authorized shops in the TikTok Shops API.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loHttp
LOCAL loJsonToken
LOCAL loQueryParams
LOCAL loDt
LOCAL lnAscending
LOCAL lnCaseSensitive
LOCAL lcAppSecret
LOCAL lcPath
LOCAL loSb
LOCAL lnNumParams
LOCAL i
LOCAL loCrypt
LOCAL lcSig
LOCAL loResp
LOCAL loJson
LOCAL lcCipher
LOCAL lcCode_str
LOCAL lcId
LOCAL lcName
LOCAL lcRegion
LOCAL lcSeller_type
LOCAL lnCode
LOCAL lcMessage
LOCAL lcRequest_id
LOCAL lnCount_i

lnSuccess = 0

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

loHttp = CreateObject('Chilkat.Http')

* It is assumed we previously obtained an OAuth2 access token.
* This example loads the JSON access token file 
* saved by this example: Get TikTok Shop OAuth2 Access Token
* or refrehsed by this example: Get TikTok Shop Refresh OAuth2 Access Token
loJsonToken = CreateObject('Chilkat.JsonObject')
lnSuccess = loJsonToken.LoadFile("qa_data/tokens/tiktok-shops.json")
IF (lnSuccess <> 1) THEN
    ? "Failed to load tiktok-shops.json"
    RELEASE loHttp
    RELEASE loJsonToken
    CANCEL
ENDIF

loQueryParams = CreateObject('Chilkat.JsonObject')
loQueryParams.UpdateString("app_key","APP_KEY")
loDt = CreateObject('Chilkat.CkDateTime')
loQueryParams.UpdateString("timestamp",loDt.GetAsUnixTimeStr(0))
loQueryParams.UpdateInt("version",202309)

* Sort the JSON members by member name, in ascending order (A-Z), case sensitive..
lnAscending = 1
lnCaseSensitive = 1
loQueryParams.Sort(lnAscending,lnCaseSensitive)

lcAppSecret = "APP_SECRET"
lcPath = "/authorization/202309/shops"

* Build the StringToSign
loSb = CreateObject('Chilkat.StringBuilder')
loSb.Append(lcAppSecret)
loSb.Append(lcPath)
lnNumParams = loQueryParams.Size
i = 0
DO WHILE i < lnNumParams
    loSb.Append(loQueryParams.NameAt(i))
    loSb.Append(loQueryParams.StringAt(i))
    i = i + 1
ENDDO
loSb.Append(lcAppSecret)

loCrypt = CreateObject('Chilkat.Crypt2')
loCrypt.HashAlgorithm = "SHA256"
loCrypt.MacAlgorithm = "HMAC"
loCrypt.EncodingMode = "hex_lower"
loCrypt.SetMacKeyString(lcAppSecret)

lcSig = loCrypt.MacStringENC(loSb.GetAsString())

loQueryParams.UpdateString("access_token",loJsonToken.StringOf("data.access_token"))
loQueryParams.UpdateString("sign",lcSig)

loHttp.SetRequestHeader("x-tts-access-token",loJsonToken.StringOf("data.access_token"))
loHttp.SetRequestHeader("content-type","application/json")

loResp = CreateObject('Chilkat.HttpResponse')
lnSuccess = loHttp.HttpParams("GET","https://open-api.tiktokglobalshop.com/authorization/202309/shops",loQueryParams,loResp)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loHttp
    RELEASE loJsonToken
    RELEASE loQueryParams
    RELEASE loDt
    RELEASE loSb
    RELEASE loCrypt
    RELEASE loResp
    CANCEL
ENDIF

loJson = CreateObject('Chilkat.JsonObject')
loResp.GetBodyJson(loJson)

? STR(loResp.StatusCode)
? loResp.BodyStr

* Sample JSON response...
* Use this online tool to generate parsing code from sample JSON: 
* Generate Parsing Code from JSON

* {
*   "code": 0,
*   "data": {
*     "shops": [
*       {
*         "cipher": "GCP_XF90igAAAABh00qsWgtvOiGFNqyubMt3",
*         "code": "CNGBCBA4LLU8",
*         "id": "7000714532876273420",
*         "name": "Maomao beauty shop",
*         "region": "GB",
*         "seller_type": "CROSS_BORDER"
*       }
*     ]
*   },
*   "message": "Success",
*   "request_id": "202203070749000101890810281E8C70B7"
* }

lnCode = loJson.IntOf("code")
lcMessage = loJson.StringOf("message")
lcRequest_id = loJson.StringOf("request_id")
i = 0
lnCount_i = loJson.SizeOfArray("data.shops")
DO WHILE i < lnCount_i
    loJson.I = i
    lcCipher = loJson.StringOf("data.shops[i].cipher")
    lcCode_str = loJson.StringOf("data.shops[i].code")
    lcId = loJson.StringOf("data.shops[i].id")
    lcName = loJson.StringOf("data.shops[i].name")
    lcRegion = loJson.StringOf("data.shops[i].region")
    lcSeller_type = loJson.StringOf("data.shops[i].seller_type")
    i = i + 1
ENDDO

RELEASE loHttp
RELEASE loJsonToken
RELEASE loQueryParams
RELEASE loDt
RELEASE loSb
RELEASE loCrypt
RELEASE loResp
RELEASE loJson