Exemplos de Integração

Aprenda como integrar sua aplicação com a API do CFS Brasil usando diversas linguagens.

Voltar para Home

Autenticação e Consulta de Códigos Oficiais

Abaixo você encontra exemplos de como realizar a autenticação (login) para obter o token JWT e, em seguida, utilizar esse token para consultar a lista de códigos oficiais (EAN-13, NBS, etc.).

Delphi (Console) - Uses System.Net.HttpClient Baixar
program CFSBrasilClient;

{$APPTYPE CONSOLE}

uses
  System.SysUtils, System.Classes, System.Net.HttpClient, System.Net.HttpClientComponent, System.JSON;

var
  objClient: TNetHTTPClient;
  objResponse: IHTTPResponse;
  objJson: TJSONObject;
  objPair: TJSONPair;
  strToken: string;
  strBaseUrl: string;
begin
  strBaseUrl := 'https://cfsbrasil.com.br/api';
  objClient := TNetHTTPClient.Create(nil);
  try
    try
      // 1. Login
      Writeln('Autenticando...');
      objJson := TJSONObject.Create;
      objJson.AddPair('email', 'seu@email');
      objJson.AddPair('password', 'sua@senha');
      
      var objSource := TStringStream.Create(objJson.ToString, TEncoding.UTF8);
      objClient.ContentType := 'application/json';
      
      objResponse := objClient.Post(strBaseUrl + '/auth/login', objSource);
      
      if (objResponse.StatusCode >= 200) and (objResponse.StatusCode <= 299) then
      begin
        objJson := TJSONObject.ParseJSONValue(objResponse.ContentAsString) as TJSONObject;
        strToken := objJson.GetValue('token').Value;
        Writeln('Login com sucesso! Token: ' + Copy(strToken, 1, 20) + '...');
        
        // 2. Consultar Códigos Oficiais (Requer Autenticação)
        Writeln('Consultando códigos oficiais...');
        
        // Adiciona Token no Header
        objClient.CustomHeaders['Authorization'] := 'Bearer ' + strToken;
        
        // Rota: /api/official-services (GET)
        objResponse := objClient.Get(strBaseUrl + '/api/official-services?page=1&limit=5');
        
        if (objResponse.StatusCode >= 200) and (objResponse.StatusCode <= 299) then
          Writeln('Dados recebidos: ' + objResponse.ContentAsString)
        else
          Writeln('Erro ao consultar: ' + objResponse.StatusCode.ToString);
      end
      else
        Writeln('Erro no login: ' + objResponse.StatusCode.ToString + ' - ' + objResponse.ContentAsString);
        
    except
      on E: Exception do
        Writeln(E.ClassName, ': ', E.Message);
    end;
  finally
    objClient.Free;
  end;
  Readln;
end.
C# (.NET Console) - Uses System.Net.Http Baixar
using System;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var strBaseUrl = "https://cfsbrasil.com.br/api";
        using var objClient = new HttpClient();

        try
        {
            // 1. Login
            Console.WriteLine("Autenticando...");
            var objLoginData = new { email = "seu@email", password = "sua@senha" };
            var strJsonContent = JsonSerializer.Serialize(objLoginData);
            var objContent = new StringContent(strJsonContent, Encoding.UTF8, "application/json");

            var objResponse = await objClient.PostAsync($"{strBaseUrl}/auth/login", objContent);

            if (objResponse.IsSuccessStatusCode)
            {
                var strResponseBody = await objResponse.Content.ReadAsStringAsync();
                var objJson = JsonSerializer.Deserialize(strResponseBody);
                var strToken = objJson.GetProperty("token").GetString();
                
                Console.WriteLine($"Login com sucesso! Token: {strToken.Substring(0, 20)}...");

                // 2. Consultar Códigos Oficiais
                Console.WriteLine("Consultando códigos oficiais...");
                
                // Adiciona Token no Header
                objClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", strToken);

                var objServicesResponse = await objClient.GetAsync($"{strBaseUrl}/api/official-services?page=1&limit=5");
                
                if (objServicesResponse.IsSuccessStatusCode)
                {
                    var strServices = await objServicesResponse.Content.ReadAsStringAsync();
                    Console.WriteLine("Dados recebidos: " + strServices);
                }
                else
                {
                    Console.WriteLine($"Erro ao consultar: {objServicesResponse.StatusCode}");
                }
            }
            else
            {
                Console.WriteLine($"Erro no login: {objResponse.StatusCode}");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Erro: {ex.Message}");
        }
    }
}
Go - Uses net/http Baixar
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {
	strBaseUrl := "https://cfsbrasil.com.br/api"

	// 1. Login
	fmt.Println("Autenticando...")
	values := map[string]string{"email": "seu@email", "password": "sua@senha"}
	jsonData, _ := json.Marshal(values)

	resp, err := http.Post(strBaseUrl+"/auth/login", "application/json", bytes.NewBuffer(jsonData))
	if err != nil {
		fmt.Printf("Erro: %s\n", err)
		return
	}
	defer resp.Body.Close()

	if resp.StatusCode >= 200 && resp.StatusCode <= 299 {
		body, _ := ioutil.ReadAll(resp.Body)
		var result map[string]interface{}
		json.Unmarshal(body, &result)
		strToken := result["token"].(string)
		fmt.Printf("Login com sucesso! Token: %s...\n", strToken[:20])

		// 2. Consultar Códigos Oficiais
		fmt.Println("Consultando códigos oficiais...")
		client := &http.Client{}
		req, _ := http.NewRequest("GET", strBaseUrl+"/api/official-services?page=1&limit=5", nil)
		
		// Adiciona Token no Header
		req.Header.Add("Authorization", "Bearer "+strToken)

		respServices, err := client.Do(req)
		if err != nil {
			fmt.Printf("Erro: %s\n", err)
			return
		}
		defer respServices.Body.Close()

		if respServices.StatusCode >= 200 && respServices.StatusCode <= 299 {
			bodyServices, _ := ioutil.ReadAll(respServices.Body)
			fmt.Printf("Dados recebidos: %s\n", string(bodyServices))
		} else {
			fmt.Printf("Erro ao consultar: %d\n", respServices.StatusCode)
		}

	} else {
		fmt.Printf("Erro no login: %d\n", resp.StatusCode)
	}
}
Java 11+ - Uses java.net.http.HttpClient
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse.BodyHandlers;

public class Main {
    public static void main(String[] args) {
        String strBaseUrl = "https://cfsbrasil.com.br/api";
        HttpClient objClient = HttpClient.newHttpClient();

        try {
            // 1. Login
            System.out.println("Autenticando...");
            String strJsonInput = "{\"email\":\"seu@email\",\"password\":\"sua@senha\"}";
            
            HttpRequest objRequest = HttpRequest.newBuilder()
                    .uri(URI.create(strBaseUrl + "/auth/login"))
                    .header("Content-Type", "application/json")
                    .POST(BodyPublishers.ofString(strJsonInput))
                    .build();

            HttpResponse objResponse = objClient.send(objRequest, BodyHandlers.ofString());

            if (objResponse.statusCode() >= 200 && objResponse.statusCode() <= 299) {
                // Parse JSON simples (para evitar libs externas no exemplo, fazemos string manipulation basica)
                String strBody = objResponse.body();
                String strToken = strBody.split("\"token\":\"")[1].split("\"")[0];
                System.out.println("Login com sucesso! Token: " + strToken.substring(0, 20) + "...");

                // 2. Consultar Códigos Oficiais
                System.out.println("Consultando códigos oficiais...");
                HttpRequest objServiceRequest = HttpRequest.newBuilder()
                        .uri(URI.create(strBaseUrl + "/api/official-services?page=1&limit=5"))
                        .header("Authorization", "Bearer " + strToken)
                        .GET()
                        .build();

                HttpResponse objServiceResponse = objClient.send(objServiceRequest, BodyHandlers.ofString());
                
                if (objServiceResponse.statusCode() >= 200 && objServiceResponse.statusCode() <= 299) {
                    System.out.println("Dados recebidos: " + objServiceResponse.body());
                } else {
                    System.out.println("Erro ao consultar: " + objServiceResponse.statusCode());
                }
            } else {
                System.out.println("Erro no login: " + objResponse.statusCode());
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Node.js - Uses fetch (Node 18+) Baixar
const strBaseUrl = "https://cfsbrasil.com.br/api";

async function main() {
    try {
        // 1. Login
        console.log("Autenticando...");
        const objResponse = await fetch(`${strBaseUrl}/auth/login`, {
            method: 'POST',
            headers: { 'Content-Type': 'application/json' },
            body: JSON.stringify({ email: 'seu@email', password: 'sua@senha' })
        });

        if (objResponse.ok) {
            const objData = await objResponse.json();
            const strToken = objData.token;
            console.log(`Login com sucesso! Token: ${strToken.substring(0, 20)}...`);

            // 2. Consultar Códigos Oficiais
            console.log("Consultando códigos oficiais...");
            const objServiceResponse = await fetch(`${strBaseUrl}/api/official-services?page=1&limit=5`, {
                method: 'GET',
                headers: { 'Authorization': `Bearer ${strToken}` }
            });

            if (objServiceResponse.ok) {
                const objServices = await objServiceResponse.json();
                console.log("Dados recebidos:", objServices);
            } else {
                console.error(`Erro ao consultar: ${objServiceResponse.status}`);
            }
        } else {
            console.error(`Erro no login: ${objResponse.status}`);
        }
    } catch (error) {
        console.error("Erro:", error);
    }
}

main();
PHP - Uses cURL Baixar
<?php
$strBaseUrl = "https://cfsbrasil.com.br/api";

// 1. Login
echo "Autenticando...\n";
$ch = curl_init($strBaseUrl . "/auth/login");
$payload = json_encode(array("email" => "seu@email", "password" => "sua@senha"));

curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode >= 200 && $httpCode <= 299) {
    $data = json_decode($result, true);
    $strToken = $data['token'];
    echo "Login com sucesso! Token: " . substr($strToken, 0, 20) . "...\n";

    // 2. Consultar Códigos Oficiais
    echo "Consultando códigos oficiais...\n";
    $ch = curl_init($strBaseUrl . "/api/official-services?page=1&limit=5");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Bearer $strToken"));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    $resultServices = curl_exec($ch);
    $httpCodeServices = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    
    if ($httpCodeServices >= 200 && $httpCodeServices <= 299) {
        echo "Dados recebidos: " . $resultServices . "\n";
    } else {
        echo "Erro ao consultar: $httpCodeServices\n";
    }

} else {
    echo "Erro no login: $httpCode\n";
}
?>