bancointer-python 0.16
Emita boletos bancários utilizando a API do Banco Inter PJ.
License: MIT License

#  Banco Inter Python
Este projeto consome a API do Banco Inter PJ de boletos registrados. Para acesso a documentação precisa estar logado no internet banking do Banco Inter. Para criar seu aplicativo, siga estas etapas simples:

* Faça login no Internet Banking (Banco Inter).
* Navegue até a seção APIs:
* Conta Digital > Aplicações > <em>**Nova Aplicação**</em>

**Atualizado para a API versão 3**

* Crie um arquivo `.env` com os seguitntes atributos na aplicação que irá usar este projeto.

```
    # Application Environment - SANDBOX or PRODUCTION
    APP_ENV=SANDBOX
    CPFCNPJ_BENEF='Número CPF OU CNPJ da conta no banco inter'
    X_INTER_CONTA_CORRENTE='Numero da conta corrente'
    # SANDBOX
    API_SBX_TOKEN_V2=https://cdpj-sandbox.partners.uatinter.co/oauth/v2/token
    API_SBX_COBRA_V3=https://cdpj-sandbox.partners.uatinter.co/cobranca/v3/
    # PRODUCTION
    API_URL_TOKEN_V2=https://cdpj.partners.bancointer.com.br/oauth/v2/token
    API_URL_COBRA_V3=https://cdpj.partners.bancointer.com.br/cobranca/v3/
    API_URL_COBRA_V2=https://cdpj.partners.bancointer.com.br/cobranca/v2/
    API_URL_COBRA_V1=https://apis.bancointer.com.br/openbanking/v1/certificado/
    SSL_DIR_BASE='Diretorio base dos arquivos SSL'
    PUBLIC_KEY_V1='Path do arquivo public key da versão 1'
    PRIVATE_KEY_V1='Path do Arquivo private key da versão 1'
    PUBLIC_KEY_V2='Path do arquivo public key da versão 2'
    PRIVATE_KEY_V2='Path do Arquivo private key da versão 2'
    DOWNLOAD_PATH='Path do diretorio que os arquivos PDF de download serão salvos'
    CLIENT_ID='Chave client id da sua app no banco inter'
    CLIENT_SECRET='Chave client secret da sua app no banco inter'
```

**Referências:**

* Portal do desenvolvedor: https://developers.inter.co/
* Referência da API: https://developers.inter.co/references/token

##  Funcionalidades disponíveis
    * API Cobrança (Boleto com Pix)
        * Cobrança
            - Emissão de boletos
            - Download de boletos
            - Baixa de boletos
            - Consulta detalhada de boletos
    
    * API Banking
        * Saldo
            - Consultar saldo
        * Extrato
            - Consultar extrato
            - Recuperar extrato em PDF
        * Pagamento
            - Incluir pagamento com código de barras
            - Incluir pagamento DARF
            - Cancelar agendamento do pagamento
            - Buscar pagamentos
            - Buscar pagamentos de DARF
        * Pix pagamento
            - Incluir Pagamento Pix
            - Consultar Pagamento Pix
    
    * Api Pix
        * Cobrança imediata
            - Criar cobrança imediata com txid
            - Revisar cobrança imediata
            - Criar cobrança imediata
            - Consultar cobrança imediata
            - Pagar Pix de cobrança imediata (Sandbox)
        * Cobrança com vencimento
            - Criar cobrança com vencimento
            - Revisar cobrança com vencimento
            - Consultar cobrança com vencimento
        * Pix
            - Consultar pix
        * Webhook
            - Criar webhook
            - Obter webhook cadastrado
            - Excluir webhook

###  Novas funcionalidades a serem implementadas
    * Recursos da API Cobrança (Boleto com Pix)
        * Webhook
            - Criar ou editar um webhook
            - Obter webhook cadastrado
            - Excluir webhook

    * Recursos da Api Banking
        * Extrato
            - Consultar extrato enriquecido

    * Recursos da Api Pix
        * Pix
            - Consultar pix recebidos
            - Solicitar devolução
            - Consultar devolução


##  Instalação para utilização

```pip install bancointer-python```

ou

```pip install .```

##  Exemplos de Uso
Exemplos de utilização da API do Banco Inter (SANDBOX) para emissão, download e baixa de títulos bancários. Veja a pasta `examples/`.

- Importe as dependências necessárias:

```
from decouple import config
from bancointer.utils.environment import Environment

# Configurações Banco Inter para operações na API (.env)
dir_base_ssl = config("SSL_DIR_BASE")
cert = (dir_base_ssl + config("PUBLIC_KEY_V2"), dir_base_ssl + config("PRIVATE_KEY_V2"))
client_id = config("CLIENT_ID")
client_secret = config("CLIENT_SECRET")
conta_corrente = config("X_INTER_CONTA_CORRENTE")

# Environment SANDBOX or PRODUCTION
app_env_name = config("APP_ENV")
env = Environment.get_environment_by_value(app_env_name.upper())
```

###  Emissão de Boleto
```
payer = Pessoa(
    "9" * 11,  # valido
    PersonType.FISICA,
    "NOME DO PAGADOR",
    "ENDERECO DO PAGADOR",
    "CIDADE DO PAGADOR",
    "PR",
    "80030000",
)  # OU FISICA
# Pagador

discount = Desconto("PERCENTUALDATAINFORMADA", 0, 1.2, 2)
multa = Multa("VALORFIXO", 0, 100)
mora = Mora("TAXAMENSAL", 0, 4.5)
message = Message("message 1", "message 2", "message 3", "", "message 5")

# Beneficiario final, mesmo que o pagador
beneficiario_final = Pessoa(
    "12345678901",
    PersonType.FISICA,
    "Nome do beneficiário",
    "Avenida Brasil, 1200",
    "Belo Horizonte",
    "MG",
    "30110000",
)

cobranca = Cobranca.criar_sobranca_simples("0001", 2.5, "2024-11-22", payer)
cobranca.multa = multa
cobranca.desconto = discount
cobranca.beneficiarioFinal = beneficiario_final

sol_new_cobranca = SolicitacaoEmitirCobranca(cobranca)

emite_cobranca = EmiteCobranca(env, client_id, client_secret, cert, conta_corrente)
resposta = emite_cobranca.emitir(sol_new_cobranca)

print(resposta)
```
### Consultar dados do Boleto
```
request_code = "1783d19f-ab81-4a54-92a3-a0064f9b26ee"

recupera_cobranca = RecuperaCobranca(env, client_id, client_secret, cert, conta_corrente)

response = recupera_cobranca.recuperar(request_code)
```
### Download de Boleto
```
request_code = "1783d19f-ab81-4a54-92a3-a0064f9b26ee"

recupera_cobranca = RecuperaCobrancaPDF(env, client_id, client_secret, cert, conta_corrente)

response = recupera_cobranca.recuperar_pdf(request_code, config("DOWNLOAD_PATH"))
```
### Baixa de Boleto
```
request_code = "1783d19f-ab81-4a54-92a3-a0064f9b26ee"

cancela_cobranca = CancelaCobranca(env, client_id, client_secret, cert, conta_corrente)

response = cancela_cobranca.cancelar(request_code, Baixa.ACERTOS.value)
```
## Contribua com este projeto

Clone o repositório do projeto

> $ git clone https://github.com/renatojdev/bancointer-python.git

Se não tiver o pipenv instalado, para instalar:
> ```$ pip install -U pipenv```

Instale as dependências
> ```$ make install```


## Dependências

- [Python 3.7+](https://www.python.org/downloads/release/python-374/)
- [Pipenv](https://github.com/kennethreitz/pipenv)

## Licença

[MIT](http://en.wikipedia.org/wiki/MIT_License)