github.com/mundipagg/boleto-api@v0.0.0-20230620145841-3f9ec742599f/README.md (about) 1 [](https://mundipagg.visualstudio.com/Processing%20and%20Reconciliation/_build/latest?definitionId=319&branchName=master) 2 [](https://sonarcloud.io/dashboard?id=mundipagg_boleto-api) 3 [](https://sonarcloud.io/dashboard?id=mundipagg_boleto-api) 4 5 # boleto-api [PT-BR](./README.md)/[ENG-US](./README-US-ENG.md) 6 API responsável pelo registro online de um boleto. Atualmente, oferecemos suporte aos seguintes bancos emissores: 7 * Banco do Brasil 8 * Caixa 9 * Citibank 10 * Santander 11 * BradescoShopFacil 12 * BradescoNetEmpresas 13 * Itaú 14 * Pefisa 15 16 ## Pré-requisitos 17 * Estar logado na VPN através do programa [CiscoVPN](https://www.cisco.com/c/pt_br/products/security/anyconnect-secure-mobility-client/index.html) 18 * [Golang](https://golang.org/dl/go1.13.15.windows-amd64.msi) 19 * Container [Docker](https://docs.docker.com/desktop/) 20 21 ____________________________________________________________ 22 ## Rodando a aplicação 23 Antes de clonar o projeto, você deve criar o caminho do arquivo dentro $GOPATH 24 ``` 25 % mkdir -p "$GOPATH/src/github.com/mundipagg" 26 % cd $GOPATH/src/github.com/mundipagg 27 % git clone https://github.com/mundipagg/boleto-api 28 ``` 29 30 No projeto temos duas formas de inicializar: via Docker ou via aplicação. 31 32 ### Executando via Docker 33 Baixe as dependências e inicie a aplicação executando: 34 ``` 35 cd .\boleto-api\devops\ 36 docker-compose up -d 37 ``` 38 39 Para identificar o container basta localizar o nome _boletostone-consumer através do comando: 40 ``` 41 docker ps -a 42 ``` 43 44 Para visualizar os logs da aplicação basta executar o comando a seguir: 45 ``` 46 docker logs -f ID_CONTAINER 47 ``` 48 49 ### Executando via aplicação 50 51 Gere a build da aplicação através do comando: 52 ``` 53 go build 54 ``` 55 56 Finalizado o comando acima será possível identificar o build da aplicação com o nome `boleto-api` que foi gerada dentro da pasta root do projeto. 57 58 #### Parâmetros para execução 59 Existem vários comandos que auxiliam na execução da app. 60 * *dev*: este comando carregará todas as variáveis de ambiente no modo padrão, conectando com BD, integrado com bancos emissores e etc; 61 * *mock*: caso seja necessário utilizar app sem integração com o banco emissor e com BD em memória; 62 * *nolog*: caso deseje execução sem log; 63 * *airplane-mode*: é a junção do _mock_ e _nolog_! Ou seja: não há dependências externas; 64 65 66 Para SO Linux (*NIX) execute o arquivo gerado no build: 67 ``` 68 % ./boleto-api -airplane-mode 69 ``` 70 71 Para SO Windows execute o arquivo gerado no build: 72 ``` 73 % .\boletoStone-publisher.exe -dev 74 ``` 75 76 Para instalação do executável são necessárias apenas as variáveis de ambiente configuradas e a aplicação compilada. 77 78 Edite o arquivo $HOME/.bashrc.sh 79 ``` 80 export API_PORT="3000" 81 export API_VERSION="0.0.1" 82 export ENVIRONMENT="Development" 83 export SEQ_URL="http://example.mundipagg.com" 84 export SEQ_API_KEY="API_KEY" 85 export ENABLE_REQUEST_LOG="false" 86 export ENABLE_PRINT_REQUEST="true" 87 export URL_BB_REGISTER_BOLETO="https://cobranca.desenv.bb.com.br:7101/registrarBoleto" 88 export URL_BB_TOKEN="https://oauth.desenv.bb.com.br:43000/oauth/token" 89 export MONGODB_URL="10.0.2.15:27017" 90 export APP_URL="http://localhost:8080/boleto" 91 ``` 92 93 ``` 94 % go build && mv boleto-api /usr/local/bin 95 ``` 96 ____________________________________________________________ 97 98 ### Utilizando 99 100 #### Banco do Brasil 101 ```curl 102 % curl -X POST \ 103 http://localhost:3000/v1/boleto/register \ 104 -d '{ 105 "Authentication" : { 106 "Username":"user", 107 "Password":"pass" 108 }, 109 "Agreement":{ 110 "AgreementNumber":11111, 111 "WalletVariation":19, 112 "Wallet":17, 113 "Agency":"123", 114 "AgencyDigit":"2", 115 "Account":"1231231", 116 "AccountDigit":"3" 117 }, 118 "Title":{ 119 "ExpireDate": "2017-05-25", 120 "AmountInCents":200, 121 "OurNumber":101405187, 122 "Instructions":"Instruções" 123 }, 124 "Buyer":{ 125 "Name":"BoletoOnlione", 126 "Document": { 127 "Type":"CNPJ", 128 "Number":"73400584000166" 129 }, 130 "Address":{ 131 "Street":"Rua Teste", 132 "Number": "11", 133 "Complement":"", 134 "ZipCode":"12345678", 135 "City":"Rio de Janeiro", 136 "District":"Melhor bairro", 137 "StateCode":"RJ" 138 } 139 }, 140 "Recipient":{ 141 "Name":"Nome do Recebedor", 142 "Document": { 143 "Type":"CNPJ", 144 "Number":"12312312312366" 145 }, 146 "Address":{ 147 "Street":"Rua do Recebedor", 148 "Number": "322", 149 "Complement":"2º Piso loja 404", 150 "ZipCode":"112312342", 151 "City":"Rio de Janeiro", 152 "District":"Outro bairro", 153 "StateCode":"RJ" 154 } 155 }, 156 "BankNumber":1 157 } 158 ``` 159 ### Response Banco do Brasil 160 ``` 161 { 162 "Url": "http://localhost:3000/boleto?fmt=html&id=g8HXWatft9oMLdTMAqzxbnPYFv3sqgV_KD0W7j8Cy9nkCLZMIK1WH2p9JwP1Jzz4ZtohmQ==", 163 "DigitableLine": "00190000090101405100500066673179971340000010000", 164 "BarCodeNumber": "00199713400000100000000001014051000006667317", 165 "Links": [ 166 { 167 "href": "http://localhost:3000/boleto?fmt=html&id=wOKZh6K_moLwXTW0Xr3oelh9YkYWXdl3VyURiQ-bu6TcuDzxdZI52BnQnuzNpGeh4TapUA==", 168 "rel": "html", 169 "method": "GET" 170 }, 171 { 172 "href": "http://localhost:3000/boleto?fmt=pdf&id=wOKZh6K_moLwXTW0Xr3oelh9YkYWXdl3VyURiQ-bu6TcuDzxdZI52BnQnuzNpGeh4TapUA==", 173 "rel": "pdf", 174 "method": "GET" 175 } 176 ] 177 } 178 179 ``` 180 181 #### Caixa 182 ```curl 183 curl -X POST \ 184 http://localhost:3000/v1/boleto/register \ 185 -H 'cache-control: no-cache' \ 186 -H 'content-type: application/json' \ 187 -H 'postman-token: 1bc1dd5f-cc34-0716-3d56-f18798d3fb39' \ 188 -d '{ 189 "BankNumber": 104, 190 "Agreement": { 191 "AgreementNumber": 200656, 192 "Agency":"1679" 193 }, 194 "Title": { 195 "ExpireDate": "2017-08-30", 196 "AmountInCents": 1000, 197 "OurNumber": 0, 198 "Instructions": "Mensagem", 199 "DocumentNumber": "NPC160517" 200 }, 201 "Buyer": { 202 "Name": "TESTE PAGADOR 001", 203 "Document": { 204 "Type": "CPF", 205 "Number": "57962014849" 206 }, 207 "Address": { 208 "Street": "SAUS QUADRA 03", 209 "Number": "", 210 "Complement": "", 211 "ZipCode": "20520051", 212 "City": "Rio de Janeiro", 213 "District": "Tijuca", 214 "StateCode": "RJ" 215 } 216 }, 217 "Recipient": { 218 "Document": { 219 "Type": "CNPJ", 220 "Number": "00732159000109" 221 } 222 } 223 }' 224 ``` 225 226 #### Response 227 ``` 228 { 229 "id": "e1EVv1KRwuGX6OXOo7PNGYR-ePD1VPtjv5iqya1LJiLiaIKozN11YMiePNk-WebdgP4eIA==", 230 "digitableLine": "10492.00650 61000.100042 09922.269841 3 72670000001000", 231 "barCodeNumber": "10493726700000010002006561000100040992226984", 232 "ourNumber": "14000000099222698", 233 "links": [ 234 { 235 "href": "https://200.201.168.67:8010/ecobranca/SIGCB/imprimir/0200656/14000000099222698", 236 "rel": "pdf", 237 "method": "GET" 238 } 239 ] 240 } 241 ``` 242 No caso da Caixa, a impressão do boleto ficará a cargo da Caixa. Assim, a API retornará a URL do boleto da Caixa. 243 244 245 #### Erro 246 Caso ocorra erro esta é a resposta padrão: 247 ``` 248 { 249 "Errors": [ 250 { 251 "Code": "MPExpireDate", 252 "Message": "Data de expiração não pode ser menor que a data de hoje" 253 } 254 ] 255 } 256 ``` 257 258 ## Para mais informações 259 Veja o [FAQ](./FAQ.md) 260 261 ## Contribuir 262 Veja as regras para [contribuir](CONTRIBUTING.md)