Para este passo vamos precisar apenas do conteúdo do arquivo de retorno vindo do banco. Esse conteúdo será tratado internamente em nossa API, pois é agora que vamos conciliar em nossa base de dados a resposta do banco, ou seja, é nesse momento que nosso banco de dados será atualizado com as informações do boleto vindas do sistema bancário.
É através desse passo que vamos saber se o boleto foi Registrado, Liquidado, Rejeitado, etc..
POST
A solicitação é feita através de uma requisição POST. A rota chamada deve ter a seguinte URL:
Homologação:
https://homologacao.plugboleto.com.br/api/v1/retornos
Produção:
https://plugboleto.com.br/api/v1/retornos
Headers
Nome | Descrição | Exemplo |
Content-Type | Indica o tipo de arquivo | application/x-www-form-urlencoded |
cnpj-cedente | CNPJ do Cedente | 01001001000113 |
cnpj-sh | CNPJ da Software House | 01001001000113 |
token-sh | Token da Software House | f22b97c0c9a3d41ac0a3875aba69e5aa |
Headers (Opcional)
Utilizar esses headers em caso de autenticação direto com as credenciais do cedente:
Nome | Descrição | Exemplo |
Content-Type | Indica o tipo de arquivo | application/json |
cnpj-cedente | CNPJ do Cedente | 01001001000113 |
token-cedente | Token do Cedente | f22b97c0c9a3d41ac0a3875aba69e5aa1 |
Objeto
Para solicitar a impressão, o objeto JSON pode ter os seguintes campos:
Campo | Tipo | Descrição |
arquivo | string |
Conteúdo do arquivo de retorno baixado no site do banco. Esse conteúdo deve estar em base64. |
nome | string | Parâmetro opcional. É usado para definir um nome para o registro de retorno. |
Body
Exemplo de JSON:
{
"arquivo": "MDAxMDAwMDAgICAgICAgICAyMjIyMjIyMjIyMjIyMjI4ODg4ODg4ODg4ODg4ICAgICAgIDExMTExMjMzMzMzMzMzMzMzMzMgVEVTVEUgICAgICAgICAgICAgICAgICAgICAgICAgQkFOQ08gRE8gQlJBU0lMICAgICAgICAgICAgICAgICAgICAgICAgIDIwNjA1MjAxOTA4ODg4ODAwMDAwMTAzMDAwMDAwMzMzMzMzMzMzUFJPQ0VTU0FNRU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQowMDEwMDAxMVQwMTAwMDIwIDIwMjIyMjIyMjIyMjIyMjI4ODg4ODg4ODg4ODg4ICAgICAgIDExMTExMjMzMzMzMzMzMzMzMzMgVEVTVEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMDAwMDAwMDA2MDUyMDE5MDAwMDAwMDAgIDAwMDAwMDAwMCAgICAgICAgICAgICAgICAgICAgICANCjAwMTAwMDEzMDAwMDFUIDA2MTExMTE2MzMzMzMzMzMzMzMzMyA3Nzc3Nzc3MDAwMDAwMTExMSAgIDdBQkMxMTEgICAgICAgICAwMTA1MjAxOTAwMDAwMDAwMDAzNzAwMDAwMTMzMzMzMyAgICAgICAgICAgICAgICAgICAgICAgICAwOTAwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwICAgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwICAgICAgICAxNzAxOTc3Nzc3NzcgICAgIA0KMDAxMDAwMTMwMDAwMlUgMDYwMDAwMDAwMDAwMDAyMzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMzU1NDkwMDAwMDAwMDAwMzU1NDkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwNjEyMjAxOTA4MTIyMDE5ICAgICAgICAgICAgMDAwMDAwMDAwMDAwMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgDQowMDEwMDAxMzAwMDAxVCAwNjExMTExNjMzMzMzMzMzMzMzMzMgNzc3Nzc3NzAwMDAwMDExMTIgICA3QUJDMTExICAgICAgICAgMDEwNTIwMTkwMDAwMDAwMDAwMzcwMDAwMDEzMzMzMzMgICAgICAgICAgICAgICAgICAgICAgICAgMDkwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCAgICAgICAgMTcwMTk3Nzc3Nzc3ICAgICANCjAwMTAwMDEzMDAwMDJVIDA2MDAwMDAwMDAwMDAwMjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDM1NTQ5MDAwMDAwMDAwMDM1NTQ5MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDYxMjIwMTkwODEyMjAxOSAgICAgICAgICAgIDAwMDAwMDAwMDAwMDAwMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAwMCAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KMDAxMDAwMTMwMDAwMVQgMDYxMTExMTYzMzMzMzMzMzMzMzMzIDc3Nzc3NzcwMDAwMDAxMTEzICAgN0FCQzExMSAgICAgICAgIDAxMDUyMDE5MDAwMDAwMDAwMDM3MDAwMDAxMzMzMzMzICAgICAgICAgICAgICAgICAgICAgICAgIDA5MDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgICAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgICAgICAgIDE3MDE5Nzc3Nzc3NyAgICAgDQowMDEwMDAxMzAwMDAyVSAwNjAwMDAwMDAwMDAwMDIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAzNTU0OTAwMDAwMDAwMDAzNTU0OTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2MTIyMDE5MDgxMjIwMTkgICAgICAgICAgICAwMDAwMDAwMDAwMDAwMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMDAgICAgICAgICAgICAgICAgICAgICAgICAgICANCjAwMTAwMDE1ICAgICAgICAgMDAwMDA4MDAwMDY5MDAwMDAwMDAwMDk5OTk5OTkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KMDAxOTk5OTkgICAgICAgICAwMDAwMDEwMDAwMTAwMDAwMDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCAgICAgICAgICAgICAgICAgICAgDQo"
}
O processamento do arquivo de retorno é feito individualmente. Sendo assim, se houver mais de um arquivo para ser processado, a rota deve ser chamada mais de uma vez.
Retorno
Exemplo de retorno:
{
"_status": "sucesso",
"_mensagem": "Retorno pendente de processamento",
"_dados": {
"situacao": "PROCESSANDO",
"protocolo": "SkR1z8B-G"
}
}
Exemplo de retorno com erro:
{
"_status": "erro",
"_mensagem": "Erro de validação.",
"_dados" : [
{
"_campo": "arquivo",
"_erro": "Campo obrigatório.",
}
]
}
Em caso de sucesso, a rota irá retornar um número de protocolo através do campo protocolo. Isso acontece pois a rota é assíncrona. Usando esse número de protocolo, nosso próximo passo é consultá-lo e verificar o resultado do processamento do envio do arquivo de retorno.
Comentários
0 comentário
Por favor, entre para comentar.