Sample code for 30+ languages & platforms
Xbase++ Requires Chilkat v11.0.0+

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 Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oHttp
LOCAL oJsonToken
LOCAL oQueryParams
LOCAL oDt
LOCAL nAscending
LOCAL nCaseSensitive
LOCAL cAppSecret
LOCAL cPath
LOCAL oSb
LOCAL nNumParams
LOCAL i
LOCAL oCrypt
LOCAL cSig
LOCAL oResp
LOCAL oJson
LOCAL cCipher
LOCAL cCode_str
LOCAL cId
LOCAL cName
LOCAL cRegion
LOCAL cSeller_type
LOCAL nCode
LOCAL cMessage
LOCAL cRequest_id
LOCAL nCount_i

nSuccess := 0

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

oHttp := 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
oJsonToken := CreateObject("Chilkat.JsonObject")
nSuccess := oJsonToken:LoadFile("qa_data/tokens/tiktok-shops.json")
IF (nSuccess != 1)
    ? "Failed to load tiktok-shops.json"
    oHttp:destroy()
    oJsonToken:destroy()
    RETURN
ENDIF

oQueryParams := CreateObject("Chilkat.JsonObject")
oQueryParams:UpdateString("app_key", "APP_KEY")
oDt := CreateObject("Chilkat.CkDateTime")
oQueryParams:UpdateString("timestamp", oDt:GetAsUnixTimeStr(0))
oQueryParams:UpdateInt("version", 202309)

//  Sort the JSON members by member name, in ascending order (A-Z), case sensitive..
nAscending := 1
nCaseSensitive := 1
oQueryParams:Sort(nAscending, nCaseSensitive)

cAppSecret := "APP_SECRET"
cPath := "/authorization/202309/shops"

//  Build the StringToSign
oSb := CreateObject("Chilkat.StringBuilder")
oSb:Append(cAppSecret)
oSb:Append(cPath)
nNumParams := oQueryParams:Size
i := 0
DO WHILE i < nNumParams
    oSb:Append(oQueryParams:NameAt(i))
    oSb:Append(oQueryParams:StringAt(i))
    i := i + 1
ENDDO
oSb:Append(cAppSecret)

oCrypt := CreateObject("Chilkat.Crypt2")
oCrypt:HashAlgorithm := "SHA256"
oCrypt:MacAlgorithm := "HMAC"
oCrypt:EncodingMode := "hex_lower"
oCrypt:SetMacKeyString(cAppSecret)

cSig := oCrypt:MacStringENC(oSb:GetAsString())

oQueryParams:UpdateString("access_token", oJsonToken:StringOf("data.access_token"))
oQueryParams:UpdateString("sign", cSig)

oHttp:SetRequestHeader("x-tts-access-token", oJsonToken:StringOf("data.access_token"))
oHttp:SetRequestHeader("content-type", "application/json")

oResp := CreateObject("Chilkat.HttpResponse")
nSuccess := oHttp:HttpParams("GET", "https://open-api.tiktokglobalshop.com/authorization/202309/shops", oQueryParams, oResp)
IF (nSuccess == 0)
    ? oHttp:LastErrorText
    oHttp:destroy()
    oJsonToken:destroy()
    oQueryParams:destroy()
    oDt:destroy()
    oSb:destroy()
    oCrypt:destroy()
    oResp:destroy()
    RETURN
ENDIF

oJson := CreateObject("Chilkat.JsonObject")
oResp:GetBodyJson(oJson)

? Str(oResp:StatusCode)
? oResp: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"
//  }

nCode := oJson:IntOf("code")
cMessage := oJson:StringOf("message")
cRequest_id := oJson:StringOf("request_id")
i := 0
nCount_i := oJson:SizeOfArray("data.shops")
DO WHILE i < nCount_i
    oJson:I := i
    cCipher := oJson:StringOf("data.shops[i].cipher")
    cCode_str := oJson:StringOf("data.shops[i].code")
    cId := oJson:StringOf("data.shops[i].id")
    cName := oJson:StringOf("data.shops[i].name")
    cRegion := oJson:StringOf("data.shops[i].region")
    cSeller_type := oJson:StringOf("data.shops[i].seller_type")
    i := i + 1
ENDDO

oHttp:destroy()
oJsonToken:destroy()
oQueryParams:destroy()
oDt:destroy()
oSb:destroy()
oCrypt:destroy()
oResp:destroy()
oJson:destroy()