Package: pyfva
pyfvaCliente para conectar instituciones conBCCRFVA.Abstrae la comunicación entre los servicios SOAP delBCCRy python creando clientes de fácil uso, por ejemplo si se desea autenticar a una persona se realizaría comofrompyfva.clientes.autenticadorimportClienteAutenticadorauthclient=ClienteAutenticador(1,1)# negocio, entidadifauthclient.validar_servicio():data=authclient.solicitar_autenticacion('08-0888-0888')else:# warnings.warn("Auth BCCR No disponible", RuntimeWarning)data=authclient.DEFAULT_ERRORInstalaciónNoteSolo ha sido probado en python 3.Instale mediante pypipipinstallpyfvao usando el repositoriopipinstallgit+https://github.com/solvo/pyfva.gitDocumentaciónPor supuesto la documentoación estáaquíParámetros de ambienteLos siguientes parámetros pueden ser modificados usando variables de entorno o variables en django settings.Los valores por defecto son:FVA_HOST = “http://bccr.fva.cr/”RECEPTOR_HOST = ‘http://bccr.fva.cr/’Ambos son direcciones del esquema, deben ser iguales al esquema del servicio WSDL.STUB_SCHEME = ‘http’STUB_HOST = “localhost:8001”Dirección y protocolo donde se ubica el servicio FVA.DEFAULT_BUSSINESS = 1DEFAULT_ENTITY = 1NoteEn la mayoría de los casos el DEFAULT_ENTITY será 1 y el DEFAULT_BUSSINESS corresponde alNúmeros de identificación en el servicio FVA. (en el simulador no son usados).RECEPTOR_CLIENT = ‘pyfva.receptor.client’Cliente para recibir las respuestas del FVA.Configurando entorno del BCCR externoLas siguientes configuraciones son requeridas, los archivos deben estar en formato PEMREQUESTS_CA_BUNDLE=/<ruta de archivo>/ca_nacional_de_CR.pemREQUESTS_CA_PATH=/<ruta de archivo>/ca_nacional_de_CR.pemREQUESTS_CERT_PATH=/<ruta de archivo>/bccr_agent.pemREQUESTS_KEY_PATH=/<ruta de archivo>/bccr_agent_key.pemSTUB_SCHEME = ‘https’STUB_HOST = “firmadorexterno.bccr.fi.cr”Para realizar pruebas de conexión es importante configurar una comunicación por ssl, los siguientes comándos pueden ser de ayudaUnifica la cadena de certificados de confianzacatCARAIZNACIONAL-COSTARICAv2.pemCAPOLITICAPERSONAJURIDICA-COSTARICAv2.pemCASINPE-PERSONAJURIDICAv2.pem>/ca_nacional_de_CR.pemVerifique que su certificado está validado por la CA que acaba de crearopensslverify-verbose-CAfileca_nacional_de_CR.pembccr_agent.pemVerifica que puede realizar una conexión con el BCCR autenticándose con el certificadocurl--http1.1--certbccr_agent.pem--keybccr_agent_key.pem--cacertca_nacional_de_CR.pemhttps://firmadorexterno.bccr.fi.cr:443/WebServices/Bccr.Fva.Entidades.AmbDePruebas.Sello.Ws.SI/SelladorElectronicoConControlDeLlave.asmx?wsdlLas siguientes funciones pueden ser de ayuda para deteminar los cálculosdefget_digest(digest_name):if'sha256'==digest_name:returnhashlib.sha256()elif'sha384'==digest_name:returnhashlib.sha384()elif'sha512'==digest_name:returnhashlib.sha512()defget_hash_sum(data,algorithm,b64=False):iftype(data)==str:data=data.encode()digest=get_digest(algorithm)digest.update(data)ifb64:returnbase64.b64encode(digest.digest()).decode()hashsum=digest.hexdigest()returnhashsumPara leer un archivo se puede utilizar algo como estowithopen('/<ruta al archivo>/test.docx','rb')asarch:FI=arch.read()ARCH=base64.b64encode(FI).decode()HASH=get_hash_sum(FI,'sha512',b64=True)data=stampclient.firme(ARCH,'msoffice',hash_doc=HASH)Generar documentaciónInstale Sphinx mediante pypipipinstall-USphinxsphinx_rtd_themeCambiese de directorio y ejecute la creación de códigoscddocsbashbuild_doc.shPara regenerar la documentación, si no se tienen cambios en los códigos de errormakehtmlCorrer las pruebasCree una carpeta llamadacertsen la base del proyecto y ponga ahí los certificados y llaves privadasca_nacional_de_CR.pembccr_agent.pembccr_agent_key.pemSe necesita correr la aplicación que recibirá las peticiones desde el BCCRcddemo./run_receptor.shEn caso de correrse de forma local no olvidarpythonmanage.pycreatecachetableLuego sobre pyfva se ejecutapython-munittestpyfva.testsCrear y correr con Docker las pruebasnote:: El archivo run_test.sh debe modificar el negocio y la entidad antes de generar la imagenEl receptor escucha el puerto 0.0.0.0:8443/notifica, esto debería estar registrado en central directo con el nombre de dominio
adecuado.Para construir la imagen.dockerbuild-tpyfva.Para correr una instancia de pruebas.dockerrun--namepyfvatest-v`pwd`/certs:/app/certs-p8443:8443pyfvaPara correr las pruebas.dockerexec-tipyfvatestbashcd/appbashrun_test.sh