github.com/mundipagg/boleto-api@v0.0.0-20230620145841-3f9ec742599f/README.md (about)

     1  [![Build Status](https://mundipagg.visualstudio.com/Processing%20and%20Reconciliation/_apis/build/status/Banking/Boleto/boleto-api%20-%20PRODUCTION?branchName=master)](https://mundipagg.visualstudio.com/Processing%20and%20Reconciliation/_build/latest?definitionId=319&branchName=master)
     2  [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=mundipagg_boleto-api&metric=alert_status)](https://sonarcloud.io/dashboard?id=mundipagg_boleto-api)
     3  [![Coverage](https://sonarcloud.io/api/project_badges/measure?project=mundipagg_boleto-api&metric=coverage)](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)