|  | 
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) hacienda.go.cr Refrescar un TokenRefreshes an access token for the Recepción de Comprobantes Electrónicos del Ministerio de Hacienda (Costa Rica) Note: This example requires Chilkat v11.0.0 or greater. For more information, see https://www.hacienda.go.cr/ATV/ComprobanteElectronico/docs/esquemas/2016/v4.3/Guia_IdP.pdf 
 uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Http, HttpRequest, StringBuilder, HttpResponse, JsonObject; ... procedure TForm1.Button1Click(Sender: TObject); var success: Boolean; jsonToken: HCkJsonObject; http: HCkHttp; req: HCkHttpRequest; resp: HCkHttpResponse; sbResponseBody: HCkStringBuilder; jResp: HCkJsonObject; respStatusCode: Integer; access_token: PWideChar; expires_in: Integer; id_token: PWideChar; not_before_policy: Integer; refresh_expires_in: Integer; refresh_token: PWideChar; session_state: PWideChar; token_type: PWideChar; begin success := False; // This example assumes the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // It is assumed we previously obtained an OAuth2 access token. // This example loads the JSON access token file // saved by this example: Get hacienda.co.cr OAuth2 Access Token jsonToken := CkJsonObject_Create(); success := CkJsonObject_LoadFile(jsonToken,'qa_data/tokens/hacienda_cr.json'); if (success <> True) then begin Memo1.Lines.Add('Failed to load constantContact.json'); Exit; end; // The access token JSON looks like this: // { // "access_token": "ey....", // "expires_in": 300, // "id_token": "ey....", // "not-before-policy": 0, // "refresh_expires_in": 1800, // "refresh_token": "ey...", // "session_state": "...", // "token_type": "bearer" // } http := CkHttp_Create(); // Implements the following CURL command: // curl -X "POST" "https://idp.comprobanteselectronicos.go.cr/auth/realms/rut-stag/protocol/openid-connect/token" \ // -H "Content-Type: application/x-www-form-urlencoded; charset=utf-8" \ // --data-urlencode "client_id=api-stag" \ // --data-urlencode "refresh_token=ey..." \ // --data-urlencode "grant_type=refresh_token" // Use the following online tool to generate HTTP code from a CURL command // Convert a cURL Command to HTTP Source Code req := CkHttpRequest_Create(); CkHttpRequest_putHttpVerb(req,'POST'); CkHttpRequest_putPath(req,'/auth/realms/rut-stag/protocol/openid-connect/token'); CkHttpRequest_putContentType(req,'application/x-www-form-urlencoded'); CkHttpRequest_AddParam(req,'client_id','api-stag'); CkHttpRequest_AddParam(req,'refresh_token',CkJsonObject__stringOf(jsonToken,'refresh_token')); CkHttpRequest_AddParam(req,'grant_type','refresh_token'); resp := CkHttpResponse_Create(); success := CkHttp_HttpReq(http,'https://idp.comprobanteselectronicos.go.cr/auth/realms/rut-stag/protocol/openid-connect/token',req,resp); if (success = False) then begin Memo1.Lines.Add(CkHttp__lastErrorText(http)); Exit; end; sbResponseBody := CkStringBuilder_Create(); CkHttpResponse_GetBodySb(resp,sbResponseBody); jResp := CkJsonObject_Create(); CkJsonObject_LoadSb(jResp,sbResponseBody); CkJsonObject_putEmitCompact(jResp,False); Memo1.Lines.Add('Response Body:'); Memo1.Lines.Add(CkJsonObject__emit(jResp)); respStatusCode := CkHttpResponse_getStatusCode(resp); Memo1.Lines.Add('Response Status Code = ' + IntToStr(respStatusCode)); if (respStatusCode >= 400) then begin Memo1.Lines.Add('Response Header:'); Memo1.Lines.Add(CkHttpResponse__header(resp)); Memo1.Lines.Add('Failed.'); Exit; end; // Sample JSON response: // (Sample code for parsing the JSON response is shown below) // { // "access_token": "ey....", // "expires_in": 300, // "id_token": "ey....", // "not-before-policy": 0, // "refresh_expires_in": 1800, // "refresh_token": "ey...", // "session_state": "...", // "token_type": "bearer" // } // Sample code for parsing the JSON response... // Use the following online tool to generate parsing code from sample JSON: // Generate Parsing Code from JSON access_token := CkJsonObject__stringOf(jResp,'access_token'); expires_in := CkJsonObject_IntOf(jResp,'expires_in'); id_token := CkJsonObject__stringOf(jResp,'id_token'); not_before_policy := CkJsonObject_IntOf(jResp,'not-before-policy'); refresh_expires_in := CkJsonObject_IntOf(jResp,'refresh_expires_in'); refresh_token := CkJsonObject__stringOf(jResp,'refresh_token'); session_state := CkJsonObject__stringOf(jResp,'session_state'); token_type := CkJsonObject__stringOf(jResp,'token_type'); // Save the new JSON access token response to a file. success := CkJsonObject_WriteFile(jResp,'qa_data/tokens/haciendda_cr.json'); CkJsonObject_Dispose(jsonToken); CkHttp_Dispose(http); CkHttpRequest_Dispose(req); CkHttpResponse_Dispose(resp); CkStringBuilder_Dispose(sbResponseBody); CkJsonObject_Dispose(jResp); end; | ||||
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.