Nome da tab
Apresentação
Título
O que é?
Text

Score Customizado permite identificar de forma ágil e segura os consumidores que apresentam menor risco de crédito, com o diferencial de análise de pessoas não bancarizadas. A pesquisa é realizada utilizando o CPF e retorna o valor em formato de pontuação de crédito (0 a 1000). Quanto maior for a pontuação, menor o risco de inadimplência. Para realizar a construção do score são utilizados como base o comportamento financeiro dos clientes Claro, através de modelos customizados pelo próprio cliente, oferecendo consistência e confiabilidade ao gerar o resultado. O acesso ocorre por meio de API , permitindo ao cliente integrar nossa solução com sua plataforma ou sistema de consulta.

Título
Benefícios
Ícone
Título
Fácil integração
Text

A nossa API é “restful”, ou seja, o nosso protocolo de comunicação foi criado de uma forma que pode interpretar qualquer linguagem de programação. Isso torna o processo de integração do lado dos nossos clientes e parceiros mais flexível e de fácil entendimento. Na página de documentação deixamos alguns exemplos de linguagem, caso seja necessário.

Ícone
Título
Aumento de receita
Text

Utilizado como ferramenta para obter políticas e decisões de crédito mais adequada e confiável. Dessa forma, o nosso score possibilita:

  • Redução de risco de inadimplência;
  • Oportunidade de novos negócios mais seguros;
  • Aumento de vendas e receita sustentável;
Ícone
Título
Diferenciais
Text

 

  • Fornecemos elementos diferenciais (específicos da Claro) àqueles scores já fornecidos pelos Bureaus tradicionais, incluindo o de pessoas não bancarizadas.

 

Título
Dúvidas frequentes

A cobrança é por consulta?

Não, a cobrança é feita por resposta e informação entregue.

Vocês podem retornar o endereço ou telefone na consulta do Cpf?

O Claro Score retorna somente a pontuação de crédito do CPF consultado

Título
Documentação
Text

Nome da tab
Documentação
Título
Score Customizado
Text

Versão: 1.0

Criada por: Lorena Figueira

Data: 24.05.2022

Modificações

  • versão 1.

 

Título
Autenticação
Text

Essa API usa OAuth 2 com o fluxo de concessão de credenciais do cliente.

Tipo de segurança: OAuth2

clientCredentials OAuth Flow: Token URL: https://demo35-test.apigee.net/oauth2/token?grant_type=client_credentials

Título
Obter pontuações gerais dos clientes
Text

Obter classificações gerais de clientes para diferentes propósitos. Essa operação retorna um número inteiro que expressa o potencial de um determinado cliente da Claro.

Backend: claro-api-managment.azure-api.net

Título
Respostas

200 - A solicitação foi bem sucedida.

400 - A solicitação não pôde ser entendida pelo servidor devido à sintaxe incorreta. O cliente NÃO DEVE repetir o pedido sem modificações.

401 - A solicitação requer autenticação do usuário.

403 - O servidor entendeu a solicitação, mas está se recusando a atendê-la.

404 - O servidor não encontrou nada que corresponda ao Request-URI.

500 - O servidor falhou ao atender uma solicitação aparentemente válida.

Título
Passo a passo
Text

Caso ainda restem dúvidas, baixe o PDF que contém o tutorial de consumo da API, que explica passo a passo como utiliza-la.

Título
Códigos de Exemplo
Título
Curl
Text

#!/bin/bash

url_custom_score="https://api.claro.com.br/customers/v1/customscores"
url_token="https://api.claro.com.br/oauth2/v1/token"

key="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
secret="XXXXXXXXXXXXXXXX"
xcustomerid="XXXXXXX"
document="XXXXXXXXXXX"
score="XXXX"

senha=$( echo -n $key:$secret | base64)

token=$( curl -s -X POST --location $url_token \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'x-client-auth: Basic '"$senha"'' \
--header 'X-CustomerID: claro_exemplo' \
--data-urlencode 'grant_type=client_credentials' | jq -r '.access_token' )

curl --location --request POST $url_custom_score \
--header 'x-client-auth: Bearer '"$token"'' \
--header 'Accept: application/json' \
--header 'X-CustomerID: '"$xcustomerid"'' \
--header 'document: '"$document"'' \
--header 'score: '"$score"''
Título
Java
Text

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Base64;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestClientException;
import org.springframework.web.client.RestTemplate;

public class App {
private static final String KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
private static final String SECRET = "XXXXXXXXXXXXXXXX";
private static final String GRANT_TYPE = "client_credentials";
private static final String URL = "https://api.claro.com.br";
private static final String END_POINT_ACCESS_TOKEN = "/oauth2/v1/token";
private static final String END_POINT_API_SPONSORED_BONUS = "/customers/v1/customscores";

public static void main( String[] args ) throws URISyntaxException, JsonProcessingException, IOException

{ App app = new App(); String token = app.getAccessToken(); String document = "XXXXXXXXXXX"; String xcustomerid = "XXXXXX"; String score = "XXXX"; System.out.println("Sponsored Bonus: " + app.getCustomScore( token , document, xcustomerid )); }

public String getCustomScore(String accessToken, String document, String xcustomerid, String score) throws RestClientException, URISyntaxException, JsonProcessingException

{ HttpHeaders headers = new HttpHeaders(); headers.add("x-client-auth", "Bearer " + accessToken); headers.add("Content-Type", "application/json"); headers.add("Accept", "application/json"); headers.add("X-CustomerID", xcustomerid); headers.add("document", document); headers.add("score", score); headers.add("Cache-Control", "no-cache"); HttpEntity request = new HttpEntity<>(headers); RestTemplate restTemplate = new RestTemplate(); ResponseEntity result = restTemplate.postForEntity(new URI(URL + END_POINT_API_SPONSORED_BONUS), request, String.class); return result.getBody(); }

public String getAccessToken() throws URISyntaxException, JsonProcessingException, IOException {
String senha = Base64.getEncoder().encodeToString((App.KEY + ":" + App.SECRET).getBytes());
HttpHeaders headers = new HttpHeaders();

headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
headers.add("cache-control","no-cache");
headers.add("X-CustomerID","claro_exemplo");
headers.add("x-client-auth", "Basic " + senha);

MultiValueMap parameters = new LinkedMultiValueMap<>();
parameters.add("grant_type", GRANT_TYPE);
HttpEntity> request = new HttpEntity<>(parameters, headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity result = restTemplate.postForEntity(new URI(URL + END_POINT_ACCESS_TOKEN),request, String.class);

String responseBody = result.getBody();
if (responseBody != null && !responseBody.isEmpty())

{ return new ObjectMapper().readTree(responseBody).get("access_token").asText(); }

else

{ throw new IllegalStateException("Response body is null or empty"); }

}
class CustomScore {

public CustomScore(String document, String xcustomerid, String score)

{ this.data = new Data(document, xcustomerid, score); }

private Data data;

public Data getData()

{ return data; }

public void setData(Data data)

{ this.data = data; }

class Data {

public Data(String document, String xcustomerid, String score)

{ this.document = document; this.xcustomerid = xcustomerid; this.score = score; }

private String document;
private String xcustomerid;
private String score;

public String getDocument()

{ return document; }

public void setDocument(String document)

{ this.document = document; }

public String getXCustomerID()

{ return xcustomerid; }

public void setXCustomerID(String xcustomerid)

{ this.xcustomerid = xcustomerid; }

public String getScore()

{ return score; }

public void setScore(String score)

{ this.score = score; }

}
}
}
,>
Título
PHP
Text

<?php

$key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';

$secret = 'XXXXXXXXXXXXXXXX';

$xcustomerid = 'XXXXXXX';

$document = 'XXXXXXXXXXX';

$score = 'XXXX';

$token = getAccessToken();

$score = getCustomScore($token, $xcustomerid, $document, $score);

echo $score;

function getAccessToken() {
   
   try{
   
    $senha = base64_encode($GLOBALS['key'] . ':' . $GLOBALS['secret']);

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://api.claro.com.br/oauth2/v1/token");
        curl_setopt( $ch, CURLOPT_HTTPHEADER, [
            'Content-Type: application/x-www-form-urlencoded',
            'X-CustomerID: claro_exemplo',
            'x-client-auth: Basic ' . $senha
           
        ]);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLINFO_HEADER_OUT, true);
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, 'grant_type=client_credentials');
       
        $response = curl_exec($ch);
     
        if (!$response)

{             $error = curl_error($ch);             $info = curl_getinfo($ch);             die("cURL request failed, error = \{$error}; info = " . print_r($info, true));
        }
        if(curl_errno($ch)){             curl_close($ch);             echo 'error:' . curl_error($ch);         } else {             curl_close($ch);             return json_decode($response)->access_token;             }
   
    } catch (Exception $e) {         return 'Erro '. $e;     }
}


function getCustomScore($token, $xcustomerid, $document, $score){
   
    try {
       
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://api.claro.com.br/customers/v1/customscores");
        curl_setopt( $ch, CURLOPT_HTTPHEADER, [
            'Accept: application/json',
            'X-CustomerID:'. $xcustomerid,
            'document:'. $document,
            'score:'. $score,
            'Content-Type: application/json',
            'Authorization: Bearer ' . $token
        ]);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLINFO_HEADER_OUT, true);
        curl_setopt($ch, CURLOPT_POST, true);
     
        $response = curl_exec($ch);
 
        if (!$response){             $error = curl_error($ch);             $info = curl_getinfo($ch);             die("cURL request failed, error = {$error}

; info = " . print_r($info, true));
        }
        if(curl_errno($ch))

{             curl_close($ch);             echo 'error:' . curl_error($ch);         }

else

{             curl_close($ch);             return $response;                 }

       
    } catch (Exception $e)

{         return 'Erro '. $e;     }

}


Título
Python
Text

import requests, json
import base64

KEY="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
SECRET="XXXXXXXXXXXXXXXX"
XCUSTOMERID="XXXXXXX"
DOCUMENT="XXXXXXXXXXX"
SCORE="XXXX"

SENHA = base64.b64encode( (KEY + ':' + SECRET ).encode('ascii') ).decode('ascii')

GRANT_TYPE = "client_credentials";

URL = "https://api-test.claro.com.br";
END_POINT_ACCESS_TOKEN = "/oauth2/v1/token";
END_POINT_CUSTOM_SCORE = "/customers/v1/customscores";

headers={'Content-Type':'application/x-www-form-urlencoded','X-CustomerID':'claro_exemplo','cache-control':'no-cache','x-client-auth': 'Basic {}'.format(SENHA)}
data = {'grant_type': 'client_credentials'}

respToken = requests.post(URL + END_POINT_ACCESS_TOKEN , headers=headers , data= data)

if respToken.status_code != 200:
print('Erro:' + str( respToken.status_code))
else:
token = json.loads( respToken.text)['access_token']

headers_app = {'Content-Type': 'application/json','X-CustomerID': XCUSTOMERID, 'document': DOCUMENT, 'score': SCORE ,'Accept':'application/json', 'cache-control':'no-cache', 'user-agent':'curl/7.60.0', 'Authorization': 'Bearer {}'.format(token)}

resp = requests.post( URL + END_POINT_CUSTOM_SCORE, headers=headers_app)
print(vars(resp))
if resp.status_code != 200:
print('Erro: ' + str(resp.status_code))
else:
print('Response: ' + str( resp.text ))

Plano Trial

Para você começar a desenvolver já!

  • 1000 requisições free
  • Período de 3 meses
  • Relatório de consumo
Solicitar

Plano Pay Per Use

A melhor escolha para o seu negócio. Após testar nossa trial, você passa a consumir nosso plano em produção, cobrado por consumo conforme sua solicitação.

  • 5000 requisições
  • Utilização em até 6 meses
  • Relatório para monitoramento de consumo
Solicitar