|  | 
Chilkat  HOME  Android™  AutoIt  C  C#  C++  Chilkat2-Python  CkPython  Classic ASP  DataFlex  Delphi DLL  Go  Java  Node.js  Objective-C  PHP Extension  Perl  PowerBuilder  PowerShell  PureBasic  Ruby  SQL Server  Swift  Tcl  Unicode C  Unicode C++  VB.NET  VBScript  Visual Basic 6.0  Visual FoxPro  Xojo Plugin
| (Delphi DLL) TikTok Shop Get Authorized ShopsSee more TikTok Shop ExamplesAn example showing how to get the authorized shops in the TikTok Shops API.Note: This example requires Chilkat v11.0.0 or greater. For more information, see https://partner.tiktokshop.com/docv2/page/6507ead7b99d5302be949ba9?external_id=6507ead7b99d5302be949ba9 
 uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Http, CkDateTime, HttpResponse, StringBuilder, JsonObject, Crypt2; ... procedure TForm1.Button1Click(Sender: TObject); var success: Boolean; http: HCkHttp; jsonToken: HCkJsonObject; queryParams: HCkJsonObject; dt: HCkDateTime; ascending: Boolean; caseSensitive: Boolean; appSecret: PWideChar; path: PWideChar; sb: HCkStringBuilder; numParams: Integer; i: Integer; crypt: HCkCrypt2; sig: PWideChar; resp: HCkHttpResponse; json: HCkJsonObject; cipher: PWideChar; code_str: PWideChar; id: PWideChar; name: PWideChar; region: PWideChar; seller_type: PWideChar; code: Integer; message: PWideChar; request_id: PWideChar; count_i: Integer; begin success := False; // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. http := CkHttp_Create(); // 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 jsonToken := CkJsonObject_Create(); success := CkJsonObject_LoadFile(jsonToken,'qa_data/tokens/tiktok-shops.json'); if (success <> True) then begin Memo1.Lines.Add('Failed to load tiktok-shops.json'); Exit; end; queryParams := CkJsonObject_Create(); CkJsonObject_UpdateString(queryParams,'app_key','APP_KEY'); dt := CkDateTime_Create(); CkJsonObject_UpdateString(queryParams,'timestamp',CkDateTime__getAsUnixTimeStr(dt,False)); CkJsonObject_UpdateInt(queryParams,'version',202309); // Sort the JSON members by member name, in ascending order (A-Z), case sensitive.. ascending := True; caseSensitive := True; CkJsonObject_Sort(queryParams,ascending,caseSensitive); appSecret := 'APP_SECRET'; path := '/authorization/202309/shops'; // Build the StringToSign sb := CkStringBuilder_Create(); CkStringBuilder_Append(sb,appSecret); CkStringBuilder_Append(sb,path); numParams := CkJsonObject_getSize(queryParams); i := 0; while i < numParams do begin CkStringBuilder_Append(sb,CkJsonObject__nameAt(queryParams,i)); CkStringBuilder_Append(sb,CkJsonObject__stringAt(queryParams,i)); i := i + 1; end; CkStringBuilder_Append(sb,appSecret); crypt := CkCrypt2_Create(); CkCrypt2_putHashAlgorithm(crypt,'SHA256'); CkCrypt2_putMacAlgorithm(crypt,'HMAC'); CkCrypt2_putEncodingMode(crypt,'hex_lower'); CkCrypt2_SetMacKeyString(crypt,appSecret); sig := CkCrypt2__macStringENC(crypt,CkStringBuilder__getAsString(sb)); CkJsonObject_UpdateString(queryParams,'access_token',CkJsonObject__stringOf(jsonToken,'data.access_token')); CkJsonObject_UpdateString(queryParams,'sign',sig); CkHttp_SetRequestHeader(http,'x-tts-access-token',CkJsonObject__stringOf(jsonToken,'data.access_token')); CkHttp_SetRequestHeader(http,'content-type','application/json'); resp := CkHttpResponse_Create(); success := CkHttp_HttpParams(http,'GET','https://open-api.tiktokglobalshop.com/authorization/202309/shops',queryParams,resp); if (success = False) then begin Memo1.Lines.Add(CkHttp__lastErrorText(http)); Exit; end; json := CkJsonObject_Create(); CkHttpResponse_GetBodyJson(resp,json); Memo1.Lines.Add(IntToStr(CkHttpResponse_getStatusCode(resp))); Memo1.Lines.Add(CkHttpResponse__bodyStr(resp)); // 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" // } code := CkJsonObject_IntOf(json,'code'); message := CkJsonObject__stringOf(json,'message'); request_id := CkJsonObject__stringOf(json,'request_id'); i := 0; count_i := CkJsonObject_SizeOfArray(json,'data.shops'); while i < count_i do begin CkJsonObject_putI(json,i); cipher := CkJsonObject__stringOf(json,'data.shops[i].cipher'); code_str := CkJsonObject__stringOf(json,'data.shops[i].code'); id := CkJsonObject__stringOf(json,'data.shops[i].id'); name := CkJsonObject__stringOf(json,'data.shops[i].name'); region := CkJsonObject__stringOf(json,'data.shops[i].region'); seller_type := CkJsonObject__stringOf(json,'data.shops[i].seller_type'); i := i + 1; end; CkHttp_Dispose(http); CkJsonObject_Dispose(jsonToken); CkJsonObject_Dispose(queryParams); CkDateTime_Dispose(dt); CkStringBuilder_Dispose(sb); CkCrypt2_Dispose(crypt); CkHttpResponse_Dispose(resp); CkJsonObject_Dispose(json); end; | ||||
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.