O 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.
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.
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;
- Fornecemos elementos diferenciais (específicos da Claro) àqueles scores já fornecidos pelos Bureaus tradicionais, incluindo o de pessoas não bancarizadas.
Versão: 1.0
Criada por: Lorena Figueira
Data: 24.05.2022
Modificações
- versão 1.
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
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
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.
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.
#!/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"''
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"); HttpEntityrequest = 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; } } } } ,>
<?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; } }
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
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