Tudo joia, galera?
Alguém aqui trabalha na área contábil e usa python no dia a dia? Tem varias coisas pra se falar, mas a mais complicada na minha opinião é a integração do python com os web service da Receita. Alguém aqui já conseguiu fazer essa integração?
Tem um video no YT de um cara que mostra fazendo com a biblioteca pynfe mas carece de mais informações.
Tem também a integração pra monitorar a NF3-e.
import base64
import json
from requests_pkcs12 import post
from dotenv import load_dotenv
import os
load_dotenv()
def serpro_componentes_autenticacaoLoja():
url = "https://autenticacao.sapi.serpro.gov.br/authenticate"
caminho_arquivo = os.getenv('CAMINHO_CERTIFICADO_DIGITAL_AC')
certificado = caminho_arquivo
senha = os.getenv('SENHA_CERTIFICADO_AC')
consumer_key = os.getenv('CONSUMER_KEY')
consumer_secret = os.getenv('CONSUMER_SECRET')
def converter_base64(credenciais):
return base64.b64encode(credenciais.encode("utf8")).decode("utf8")
def autenticar(ck, cs, certificado, senha):
headers = {
"Authorization": "Basic " + converter_base64(ck + ":" + cs),
"role-type": "TERCEIROS",
"content-type": "application/x-www-form-urlencoded"
}
body = {'grant_type': 'client_credentials'}
response = post(url,
data=body,
headers=headers,
verify=True,
pkcs12_filename=certificado,
pkcs12_password=senha)
# Extrair as chaves de acesso
data = json.loads(response.content.decode('utf8'))
acess_token = data['access_token']
jwt_token = data['jwt_token']
return acess_token, jwt_token
return autenticar(consumer_key, consumer_secret, certificado, senha)
if __name__ == '__main__':
i, j = serpro_componentes_autenticacaoLoja()
print(f'{i}\n{j}')
1 curtida
Devid
Setembro 26, 2024, 11:31pm
2
Consegue descrever com mais detalhes quais exatamente são as complicações? O que exatamente você não está conseguindo fazer?
from autenticar import serpro_componentes_autenticacaoLoja
import requests
import json
url = "https://gateway.apiserpro.serpro.gov.br/integra-contador/v1/Consultar"
acess_token, jwt_token = serpro_componentes_autenticacaoLoja()
headers = {
"Authorization": f"Bearer {acess_token}",
"Content-Type": "application/json",
"jwt_token": jwt_token
}
payload = {
"contratante": {
"numero": "23931886000192",
"tipo": 2
},
"autorPedidoDados": {
"numero": "23931886000192",
"tipo": 2
},
"contribuinte": {
"numero": "28946456604",
"tipo": 1
},
"pedidoDados": {
"idSistema": "PAGTOWEB",
"idServico": "CONTACONSDOCARRPG73",
"dados": "{ \"intervaloDataArrecadacao\": {\"dataInicial\": \"2024-01-01\", \"dataFinal\": \"2024-10-22\"}}"
}
}
try:
response = requests.post(url, headers=headers, data=json.dumps(payload))
response.raise_for_status() # Levanta um erro se o status não for 200
print("Status Code:", response.status_code)
print("Response JSON:", response.json())
except requests.exceptions.HTTPError as http_err:
print(f"HTTP error occurred: {http_err}")
print("Response:", response.content) # Exibe o conteúdo da resposta em caso de erro
except Exception as err:
print(f"An error occurred: {err}")
numeros_documentos = [item['numeroDocumento'] for item in response]
print(numeros_documentos)
Opa, amigo! Eu trabalho. Trabalho com contabilidade há 8 anos, e crio automações em Python e programas em Flask para as demandas do meu escritório. Também enfrentei esse problema que você está relatando ao usar a API do Integra Contador da SERPRO.
Até hoje também tenho um pouco de dificuldades para fazer as requisições. Minha maior dificuldade é para solicitar as requisições com o certificado digital do cliente. Vou buscar alguns projetos anteriores para ver se consigo compartilhar aqui, quem sabe te ajuda.