Documentação API

< Documentação >

URL da API:

https://www.assinebem.com.br/api/

Encoding:

UTF-8

Segurança:

API:

Cada cliente pode cadastrar um ou mais IP's de onde serão feitas as requisições, qualquer requisição feita de um endereço diferente não será aceita.

Secret:

É uma senha, que será necessária em cada requisição para validar a autenticidade.

Token:

Forneceremos um token de acesso, que será usado em cada requisição. No request, adicionar header HTTP-SECURITY-HASH que é composto por:

TOKEN_ACESSO: HASH_SHA256(URL_REQUEST+SECRET+QUERY_STRING)

Encodado em base64.

Obs.: Se o request for GET, então a QUERY_STRING será a QUERY_STRING formatado conforme exemplo: 'param1=valor1&param2=valor'

Se o request for POST, então a QUERY_STRING será PAYLOAD formatado em JSON.


Classe de autenticação:


from requests.auth import AuthBase
import hashlib
import base64


class AuthAD(AuthBase):
    """Classe para autenticacao Assine Bem."""
    self.SECRET = 'seu_secret'
    self.TOKEN = 'seu_token'

    def __init__(self, url, query):
        """Construtor da classe de autenticacao."""
        self.URL_REQUEST = url
        self.QUERY_REQUEST = query

    def __call__(self, r):
        """Caller method.

        Adiciona a security_hash no header.
        """
        r.headers['security-hash'] = base64.b64encode(
            '%s:%s' % (
                self.TOKEN, hashlib.sha256(
                    self.URL_REQUEST +
                    self.SECRET +
                    self.QUERY_REQUEST
                ).hexdigest()
            )
        )

        return r
    
require 'vendor/autoload.php';
use GuzzleHttp\Client;

class AuthAD {
    # Classe para autenticacao Assine Bem.
    public $ASSINE_BEM_SECRET = '';
    public $ASSINE_BEM_TOKEN = '';
    public $ASSINE_BEM_URL = 'https://www.assinebem.com.br/api/';
    public function monta_security_hash($endpoint='', $query_string='')
    {
        $url_request = $this->ASSINE_BEM_URL.$endpoint;
        $hash_acesso = hash('sha256', $url_request.$this->ASSINE_BEM_SECRET.$query_string);
        $security_hash = base64_encode($this->ASSINE_BEM_TOKEN.':'.$hash_acesso);
        return $security_hash;
    }
}
    

Uso de requisição:


Estrutura POST:


from AuthAD import AuthAD
r = req.post(
    url=url, auth=AuthAD(url=url, query=''),
    json=data, query=json.dumps(data)
)
response = r.json()
    
$client = new Client();
$url_endpoint = 'ENDPOINT_QUE_DESEJA';
$headers = [ 'SECURITY-HASH' => 'SUA_HASH'];
$response = $client->request('POST', $url_endpoint, [
    'headers' => $headers,
    'verify'  => false,
    'form_params' => ($params ? $params : null)
]);
$json = json_decode($response->getBody(), true);
    
curl -X POST 'ENDPOINT_QUE_DESEJA' \
  -H 'security-hash: SUA_HASH' \
  -H 'Accept: application/json' \
  -H 'Content-type: application/json' \
  -d AQUI_VAI_JSON
    

Estrutura GET:


from AuthAD import AuthAD

def __formatar_query_string(self, data):
    """Transforma dicionario em query string de GET."""
    return '&'.join("%s=%s" % i for i in data.items())

data = {"id_externo": id_externo}
r = req.get(url=url, params=data, auth=AuthAD(
    url=url, query=__formatar_query_string(data)))
response = r.json()
    
$client = new Client();
$url_endpoint = 'ENDPOINT_QUE_DESEJA';
$headers = [ 'SECURITY-HASH' => 'SUA_HASH'];
$response = $client->request('GET', $url_endpoint, [
    'headers' => $headers,
    'query' => $params
]);
    
curl -X GET 'ENDPOINT_QUE_DESEJA' \
  -H 'security-hash: SUA_HASH' \
  -H 'Accept: application/json' \
  -H 'Content-type: application/json'