Preguntas sobre instalación.

Preguntas variadas…

  1. El svn export https://colab.siu.edu.ar/svn/guarani3/contrib/3.15.x/boleto_estudiantil/
    ¿tiene que ser en
    a) el directorio de 3w,
    b) el directorio de gestión
    c) en cualquier lugar ?

Lo hice en “a” ; moví el contenido de 3W al directorio de personalización.
BD solo tenía un script para correr pero me parece que en 3.20 esas tablas ya existen
WS lo mapeo en ws.conf ¿Pero cómo llega a saber donde está ese ws.conf?

  1. En la configuración del /lib/toba/instalacion/i_desarrollo/p_guarani/rest/sube/cliente.ini
to = ""
¿vendría a ser la misma URL que WS_BASE_URL en src/pers/boleto_estudiantil/modelo/transacciones/boleto_estudiantil.php ?
  1. En el mismo archivo anterior
auth_ua =
¿vendría a ser WS_INSTITUCION_BOLETO ?

Paso al WS

  1. En basesDeDatos.inc.php
bdGuarani[''] = array(
¿ "codigo_de_unidad_academica" tiene que ser un número "01" como el ejemplo o tiene que ser el o el WS_INSTITUCION_BOLETO de la pregunta 3 ?
  1. En institucionBoleto.inc.php
    En el comentario veo
$mapeo_ua[''] = '';
En el ejemplo de G3 veo
$mapeo_ua['01'] = '01';

¿Tendría que ser como en el comentario ? Algo así como $mapeo_ua[‘’] = ‘01’ (si usé codigo numerico en pregunta 4) / ‘’ (si la respuesta de la pregunta 4 era la 2da parte)’ ?

  1. en usuarios.inc.php
    ¿Qué son los usuarios? ¿Los tengo que inventar/crear o sacar existentes de algún lado?

  2. en ws.conf

"/path/to/boleto_ws/web"
supongo que es el /boleto_estudiantil/WS/web del SVN export ... La respuesta a la pregunta 1, me dirá el lugar correcto para guardarlo... Y si puede ser cualquiera, lo que importa es que coincida con ese valor..

Con esto tengo para avanzar un poco más. ¡¡¡Gracias !!!

Hola Fernando,

a) el directorio de 3w,
Seria [b]svn export https://colab.siu.edu.ar/svn/guarani3/contrib/3.15.x/boleto_estudiantil/3W/boleto_estudiantil/ src/pers/boleto_estudiantil/[/b]
b) el directorio de gestión
Si tenes Guaraní mayor a la versión 3.12.x ya vas a tener los comandos [b]bin/guarani pro_solicitudes_sube[/b] y [b]bin/guarani notif_solicitudes_sube[/b], pero vas a tener que configurar el archivo [b]instalacion/i__desarrollo/p__guarani/rest/sube/cliente.ini [/b]. Ver: https://colab.siu.edu.ar/trac/guarani3/wiki/contrib/boleto_estudiantil/comandos
BD solo tenía un script para correr pero me parece que en 3.20 esas tablas ya existen
Si, desde la versión 3.13.0 ya existen las tablas [b]mbe_intentos[/b] y [b]mbe_solicitudes[/b].

Después tenes que instalar y configurar el Web Service:
https://colab.siu.edu.ar/trac/guarani3/wiki/contrib/boleto_estudiantil/ws

saludos.
2

2) En la configuración del /lib/toba/instalacion/i_desarrollo/p_guarani/rest/sube/cliente.ini Cita to = "" ¿vendría a ser la misma URL que WS_BASE_URL en src/pers/boleto_estudiantil/modelo/transacciones/boleto_estudiantil.php ?

Seria en instalacion/i__desarrollo/p__guarani/rest/sube/cliente.ini.
Claro, es la misma URL: https://boletoeducativo.gba.gob.ar/ws/

3) En el mismo archivo anterior
 
Cita
auth_ua = <ua> 
¿vendría a ser   WS_INSTITUCION_BOLETO  ?

Claro, ese valor te lo dan junto con las credenciales.

4) En basesDeDatos.inc.php Cita bdGuarani[''] = array( ¿ "codigo_de_unidad_academica" tiene que ser un número "01" como el ejemplo o tiene que ser el o el WS_INSTITUCION_BOLETO de la pregunta 3 ?

Es el que te da la subsecretaria de transporte.

Vamos a mejorar la documentación para que quede mas claro.

saludos.
2

Repasando esta documentación: https://colab.siu.edu.ar/trac/guarani3/wiki/contrib/boleto_estudiantil/ws

<unidad_academica> es un valor que viaja en la URL para identificar el punto de acceso, puede ser cualquier valor que quieran. Ej: UPE
<student_department>: valor que provee el ministerio de transporte junto con las credenciales. Ej: UPE_SUBE

config/basesDeDatos.inc.php:


<?php

//Ejemplo de Conexion para G3

$bdGuarani['<unidad_academica>'] = array( 
	'tipo_conexion' => 'pgsql', 	
	'host' => 'host',
	'service' => '5432', 	
	'bd' => 'guarani',
	'schema' => 'negocio',
	'usuario' => 'usuario', 
	'clave' => 'clave123456');


<?php

//Ejemplo de Conexion para G3

$bdGuarani['UPE'] = array( 
	'tipo_conexion' => 'pgsql', 	
	'host' => 'host',
	'service' => '5432', 	
	'bd' => 'guarani',
	'schema' => 'negocio',
	'usuario' => 'usuario', 
	'clave' => 'clave123456');

config/institucionBoleto.inc.php:


<?php
/*
 * En en el array siguiente se mapea la unidad academica con la institucion 
 * boleto.
 * Institución boleto es asignado por la subsecretaría de transporte
 * 
 * $mapeo_ua['<student_department>'] = '<unidad_academica>';
 */

//Para G3
$mapeo_ua['<student_department>'] = '<unidad_academica>';


<?php
/*
 * En en el array siguiente se mapea la unidad academica con la institucion 
 * boleto.
 * Institución boleto es asignado por la subsecretaría de transporte
 * 
 * $mapeo_ua['<student_department>'] = '<unidad_academica>';
 */

//Para G3
$mapeo_ua['UPE_SUBE'] = 'UPE';

config/usuarios.inc.php:
Acá creas los usuarios para los Web Services, los tenes que “inventar” (NO es el usuarios que te provee el ministerio de transporte) .


<?php

// USUARIOS: 
/*
 * En este archivo se definen los usuarios con sus respectivas claves de la 
 * siguiente forma:
 * 
 * $usuarios['<NOMBRE_DE_USUARIO>'] = '<CLAVE>'
 * 
 * Renombrar este archivo a "usuarios.inc.php"
 * 
 */ 

$usuarios['fvelarde'] = '123456789*-a';
$usuarios['lleonardis'] = '123456789*-a';

config/permisos.inc.php:


<?php

// Le doy permisos a los usuarios 'fvelarde' y 'lleonardis' al servicio 'sube_actualizar_solicitud'
$permisos['ConsultaSubeActualizaSolicitud'] = array('fvelarde');
// Le doy permisos al usuario 'fvelarde' al servicio 'sube_cantidad_solicitudes_aceptadas'
$permisos['ConsultaBoletoCantSolicitudesAceptadas'] = array('fvelarde');

// Le doy permisos al usuario 'fvelarde' a la DB configurada para 'UPE'
$usuarios_ua['fvelarde'] = array('UPE');

Luego de configurar proba donde dice Ejemplo de prueba del servicio.

saludos.
2

Gracias Leonardo, la configuración va quedando…

Ahora el /boletows me devuelve un 404.

sobre el ws.conf dice

Este archivo contiene el alias que luego debe ser agregado al apache para que el mismo pueda reconocer el web service.

Me parece que me falta esa parte de que “deba ser agregado al apache” … Tengo el ws.conf configurado … ahí dice el path real de /boletows pero no sé como hace el apache para saber que el path está ahí adentro del ws.conf … Por sí solo no va a leer el ws.conf. En algún lado el apache debería enterarse que existe…

Gracias…

Hola Fernando,

Yo lo configure de la siguiente manera:


#Proyecto: boletows
Alias /boletows "/usr/local/app/boleto_estudiantil/WS/web/"

<Directory "/usr/local/app/boleto_estudiantil/WS/web/">
    Options Indexes FollowSymLinks MultiViews
    DirectoryIndex index.php
    <IfModule mod_authz_core.c>
        Require all granted
    </IfModule>
    RewriteEngine On
    RewriteBase /boletows/
    RewriteRule ^(.*)$ index.php?params=$1 [QSA,NC] 
    #LogLevel warn rewrite:trace3
    AllowOverride All
</Directory>

El Alias y RewriteBase deben coincidir.

Luego podes probar haciendo un curl, ej:

curl -u <USER>:<PASS> --data "respuesta=ACEPTADA&respuesta_descripcion=OK" http://<URL_SERVER>/boletows/sube_actualizar_solicitud/<institucionBoleto>/T350668111489414368

Donde:
y : lo que configuraste en WS/config/usuarios.inc.php.
: lo que configuraste en WS/config/institucionBoleto.inc.php.
<URL_SERVER>: URL base del server donde instalaste el WS.

Respuesta:

{"codigo":-1,"mensaje":"No existe una solicitud con el tid informado","datos":{"tipo_error":"aplicacion"}}

Si podes pasame un ejemplo de tu configuración.

saludos.
2

Hola Leonardo,

El ws.conf lo tengo exactamente igual … y me bajé un cliente rest …


Alias /boletows "/usr/local/proyectos/g3w3_320/boleto_estudiantil/WS/web"

<Directory "/usr/local/proyectos/g3w3_320/boleto_estudiantil/WS/web">
    Options Indexes FollowSymLinks MultiViews
    DirectoryIndex index.php
    <IfModule mod_authz_core.c>
        Require all granted
    </IfModule>
    RewriteEngine On
    RewriteBase /boletows/
    RewriteRule ^(.*)$ index.php?params=$1 [QSA,NC]
    #LogLevel warn rewrite:trace3
    AllowOverride All
</Directory>

La duda que me queda es como el apache llega a leer este ws.conf . Adónde se le indica que lo lea para buscarlo … ¿En alguna parte la configuración del apache, en algún path ?
Porque el error 404 que me da, me hace pensar que el Alias /boletows no lo está interpretando … y sin algo que le indique que lo lea , no va a entrar al ws.conf …
Si el boletows lo reconociera y estuviera mal el o el HASH esperaría un error diferente…

Hola Fernando,

La duda que me queda es como el apache llega a leer este ws.conf . Adónde se le indica que lo lea para buscarlo .. ¿En alguna parte la configuración del apache, en algún path ?

Tenes que hacer así:

sudo ln -s /usr/local/proyectos/g3w3_320/boleto_estudiantil/WS/config/ws.conf /etc/apache2/sites-enabled/boletows.conf

Luego reinicias Apache y debería tomarla.

saludos.
2

Gracias Leonardo !!! Voy avanzando de a pasitos…

Ahora estoy con 2 problemas . El 1 ya lo solucioné recompilando los recursos… lo dejo en el mensaje solo por si a alguien más le sirve.

  1. En 3w , me aparece Boleto Estudiantil en el menú de trámites, pero al hacerle click solo me muestra el título " Beneficio de Boleto Estudiantil " pero el resto de la pantalla está en blanco.
    En logs de Apache / 3w no hay ningún error…
    ¿Que debería aparecer abajo de ese título ? ¿Algún php de mi servidor? ¿O la página de boleto estudiantil del servidor de ellos?

En el código fuente en el navegador veo

<!-- https://gist.github.com/tentacode/3892186 -->

        <div id="loading" style="display: none;" class=""></div>
		<div id="loading_top" style="top: 0px; left: 917.5px; display: none;" class="">Cargando...</div>
		<div id="_msg_placeholder" style="display:none;" class="msg_placeholder alert-success"></div>
		<div id="kernel_contenido" class="container">		<div class="titulo_operacion row-fluid">
		<div class="span12">
		    <h2>Beneficio de Boleto Estudiantil</h2>
    		</div>
	</div>

	<div id="layout_una_columna" class="row-fluid">
		<div id="columna_1" class="span12">
		    <div id="inicial" class="pagelet" style="display: none;"><div class="alert alert-info"><strong>¡Atención!</strong> Antes de realizar el trámite, verificá que tus datos sean correctos. En caso de no serlos, dirigite al Departamento de Alumnos de tu Facultad para actualizarlos.</div><table class="table table-bordered table-hover"><tbody><tr><td><strong>Apellido y nombre</strong></td><td>SUAREZ, YAEL</td></tr><tr><td><strong>Tipo de documento</strong></td><td>Documento Nacional de Identidad (DNI)</td></tr><tr><td><strong>Número de documento</strong></td><td>22990614</td></tr><tr><td><strong>Correo electrónico</strong></td><td><span class="pull-left">
                                    sistemas@upe.edu.ar
                            </span><a class="pull-right" href="http://34.232.173.37/upe/configuracion">Editar</a></td></tr></tbody></table><div class="well"><h3>Iniciá tu Trámite</h3><p>Para iniciar el trámite de este beneficio, se verificará tu actividad académica en el ciclo lectivo anterior y actual. Tené en cuenta los siguientes puntos:</p><ol id="puntos_tramite"><li>Poseer una tarjeta SUBE registrada a tu DNI. En el <a href="https://www.sube.gob.ar/" target="_blank" class="no-ajax">portal SUBE</a> podés hacer este trámite.</li></ol><div class="well"><div class="row-fluid"><form id="js_form_tramite" method="post" action="http://34.232.173.37/upe/boleto_estudiantil/nueva_solicitud"><label id="acepta_condiciones" class="checkbox"><input type="checkbox" id="acepto" value="">
                            Acepto que mi nombre y apellido, tipo y número de documento, Facultad y correo electrónico se envíe a la Subsecretaria de Transporte de la Provincia de Buenos Aires donde se continuará el trámite.
                        </label><div class="form-container"><button type="submit" class="btn btn-info btn-block js-btn-solicitar btn-large" name="" id="btn_solicitar_boleto" disabled="disabled">Iniciar Trámite de Boleto Estudiantil</button></div><input type="hidden" name="__csrf" value="csrf0e060a0943aa0eb0e8ee47fb9fc64923b676af3b" class="btn btn-primary"></form></div></div></div></div>
		</div>
	</div>
<script type="text/javascript">kernel.renderer.on_arrival({"css":["\/upe\/_comp\/boleto_estudiantil\/operaciones\/boleto_estudiantil\/inicial\/default.css"],"js":["\/upe\/_comp\/boleto_estudiantil\/operaciones\/boleto_estudiantil\/inicial\/pagelet_inicial.js"],"op":"boleto_estudiantil","info":{"id":"inicial","visible":"1","estado":"inicial","mensajes":[]},"content":"<div class=\"alert alert-info\"><strong>\u00a1Atenci\u00f3n!<\/strong> Antes de realizar el tr\u00e1mite, verific\u00e1 que tus datos sean correctos. En caso de no serlos, dirigite al Departamento de Alumnos de tu Facultad para actualizarlos.<\/div><table class=\"table table-bordered table-hover\"><tbody><tr><td><strong>Apellido y nombre<\/strong><\/td><td>SUAREZ, YAEL<\/td><\/tr><tr><td><strong>Tipo de documento<\/strong><\/td><td>Documento Nacional de Identidad (DNI)<\/td><\/tr><tr><td><strong>N\u00famero de documento<\/strong><\/td><td>22990614<\/td><\/tr><tr><td><strong>Correo electr\u00f3nico<\/strong><\/td><td><span class=\"pull-left\">\n                                    sistemas@upe.edu.ar\n                            <\/span><a class=\"pull-right\" href=\"http:\/\/34.232.173.37\/upe\/configuracion\">Editar<\/a><\/td><\/tr><\/tbody><\/table><div class=\"well\"><h3>Inici\u00e1 tu Tr\u00e1mite<\/h3><p>Para iniciar el tr\u00e1mite de este beneficio, se verificar\u00e1 tu actividad acad\u00e9mica en el ciclo lectivo anterior y actual. Ten\u00e9 en cuenta los siguientes puntos:<\/p><ol id=\"puntos_tramite\"><li>Poseer una tarjeta SUBE registrada a tu DNI. En el <a href=\"https:\/\/www.sube.gob.ar\/\" target=\"_blank\" class=\"no-ajax\">portal SUBE<\/a> pod\u00e9s hacer este tr\u00e1mite.<\/li><\/ol><div class=\"well\"><div class=\"row-fluid\"><form id=\"js_form_tramite\" method=\"post\" action=\"http:\/\/34.232.173.37\/upe\/boleto_estudiantil\/nueva_solicitud\"><label id=\"acepta_condiciones\" class=\"checkbox\"><input type=\"checkbox\" id=\"acepto\" value=\"\" >\n                            Acepto que mi nombre y apellido, tipo y n\u00famero de documento, Facultad y correo electr\u00f3nico se env\u00ede a la Subsecretaria de Transporte de la Provincia de Buenos Aires donde se continuar\u00e1 el tr\u00e1mite.\n                        <\/label><div class=\"form-container\"><button type=\"submit\" class=\"btn btn-info btn-block js-btn-solicitar btn-large\" name=\"\" id=\"btn_solicitar_boleto\" disabled=\"disabled\">Iniciar Tr\u00e1mite de Boleto Estudiantil<\/button><\/div><input type=\"hidden\" name=\"__csrf\" value=\"csrf0e060a0943aa0eb0e8ee47fb9fc64923b676af3b\" class=\"btn btn-primary\"  \/><\/form><\/div><\/div><\/div>","clase_js":"inicial","tiene_archivo_js":"1"});</script><script type="text/javascript">kernel_config.pagelet_count = 1</script></div>
        

El error lo veo en la consola de javascript

Falló la carga de <script> con fuente “http://34.232.173.37/upe/_comp/boleto_estudiantil/operaciones/boleto_estudiantil/inicial/pagelet_inicial.js”.

error cargando el pagelet "inicial". Probablemente no se definió el archivo js o el nombre de la clase js no es correcto

Uncaught TypeError: pagelet_init_fns[op] is undefined
    get_pagelet_init_fn http://34.232.173.37/upe/_comp/siu/js/guarani_mash.js:3
    set_state http://34.232.173.37/upe/_comp/siu/js/guarani_mash.js:3
    load_js http://34.232.173.37/upe/_comp/siu/js/guarani_mash.js:3
    i http://34.232.173.37/upe/_comp/siu/js/guarani_mash.js:3
    u http://34.232.173.37/upe/_comp/siu/js/guarani_mash.js:3

El archivo pagelet_inicial.js existe dentro del directorio de la personalización. Pero parecería haber alguna configuración mal en algún lado que hace que lo busque en otro lado…

  1. En el servicio rest, en el curl, o en lo que use …
    http://34.232.173.37/boletows/sube_actualizar_solicitud/UPE_test/565656656565656 (el hash es cualquiera, tengo las tablas mbe_xxxxxxxx vacías, pero supongo que el error por hash erróneo sería un error de hash, no de unidad académica)
    curl -u usuariot:clave --data “respuesta=ACEPTADA&respuesta_descripcion=OK” http://34.232.173.37/boletows/sube_actualizar_solicitud/UPE_test/T350668111489414368
codigo	-1
mensaje	"unidad_academica: El valor recibido no es válido."
datos	
tipo_error	"aplicacion"

Me hace pensar en algún error de mapeo … En el mapeo le puse el mismo nombre a mi ua “UPE_test” que el que proporcionaron ellos …
Así que en todas partes se llama “UPE_test” tanto la unidad_académica como el institución_boleto o como lo llamen.

Hola Fernando,

1) En 3w , me aparece Boleto Estudiantil en el menú de trámites, pero al hacerle click solo me muestra el título " Beneficio de Boleto Estudiantil " pero el resto de la pantalla está en blanco.

Claro, si esta en modo producción (‘produccion’ => true, en instalacion/config.php) tenes que ejecutar el comando bin/guarani compilar_recursos para que compile los recursos de la personalización de Boleto Estudiantil.

2) En el servicio rest, en el curl, o en lo que use ...

Las URLs parecen estar bien, recorda que son peticiones que se hacen por POST. Te recomiendo usar Postman para probarlas.

Para mi tenes un problema de configuración, revisa lo siguiente:

config/basesDeDatos.inc.php:


$bdGuarani['db_upe'] = array( 
	'tipo_conexion' => 'pgsql', 	
	'host' => 'localhost',
	'service' => '5432', 	
	'bd' => 'db_guarani',
	'schema' => 'negocio',
	'usuario' => 'postgres', 
	'clave' => 'xxxx'
);

Yo le puse ‘db_upe’, pero puede ser cualquier valor.

config/institucionBoleto.inc.php:


$mapeo_ua['UPE_test'] = 'db_upe';

En este caso en lugar de ‘UPE_test’ tenes que poner el valor que te proporcionó el Ministerio de Infraestructura y Servicios Públicos de la Provincia de Buenos Aires, ‘db_upe’ porque debe coincidir con lo que configuraste en config/basesDeDatos.inc.php.

config/usuarios.inc.php:
Acá creas usuarios y passwords para el acceso a la API:

$usuarios['user_upe'] = '123456789*-a';

config/permisos.inc.php:
Acá le das permisos a los usuarios:


$permisos['ConsultaSubeActualizaSolicitud'] = array('user_upe');
$permisos['ConsultaBoletoCantSolicitudesAceptadas'] = array('user_upe');

$usuarios_ua['user_upe'] = array('db_upe');

Con eso debería funcionar.

Podes utilizar esta URL de prueba que proporciona el Ministerio de Infraestructura y Servicios Públicos de la Provincia de Buenos Aires: http://test.boletoestudiantil.gba.gob.ar/ws/

URL prueba (sandbox): http://test.boletoestudiantil.gba.gob.ar/ws/
URL verdadera/producción: https://boletoeducativo.gba.gob.ar/ws/

Referencia: https://colab.siu.edu.ar/trac/guarani3/wiki/contrib/boleto_estudiantil/ws

saludos.
2

config/basesDeDatos.inc.php:

$bdGuarani['db_upe'] = array(
        'tipo_conexion' => 'pgsql',
        'host' => '34.232.173.37',
        'service' => '5432',
        'bd' => 'toba_3_0',
        'schema' => 'negocio',
        'usuario' => 'postgres',
        'clave' => 'xxxx_pero_mi_xxxx'
);


Esta está bien. Estamos recibiendo entradas en la tabla mbe_solicitudes y mbe_intentos.

config/institucionBoleto.inc.php:

$mapeo_ua['UPE_test'] = 'db_upe';

UPE_test no es invento nuestro. Es el usuario que nos asignó el Ministerio.

config/permisos.inc.php:

$permisos['ConsultaSubeActualizaSolicitud'] = array('uperest');
$permisos['ConsultaBoletoCantSolicitudesAceptadas'] = array('uperest');

$usuarios_ua['uperest'] = array('db_upe');

El usuario funciona… si pongo una clave distinta de la definida me devuelve error 401 Unauthorized… Con la definida en config/usuarios.inc.php no tengo ese problema.

Servicios del Ministerio
Los dos servicios que el Ministerio provee funcionan bien en el Advanced REST Client

URL: http://test.boletoestudiantil.gba.gob.ar/ws/benefit-request
URL: http://test.boletoestudiantil.gba.gob.ar/ws/benefit-update

Además de hacer la petición por POST, los parámetros hay que pasarlos por JSON, no por URL.

Nuestro servicio - sube_actualizar_solicitud

http://34.232.173.37/boletows/sube_actualizar_solicitud/UPE_test/T229906141651685249

 curl -u uperest:miclave --data "respuesta=RECHAZADA&respuesta_descripcion=TRAMITE_EXPIRADO" http://34.232.173.37/boletows/sube_actualizar_solicitud/UPE_test/T229906141651673805

No puedo salir de este error. Me da por URL, me da por CURL, me da por POST en el Rest Client

{
  "codigo": -1,
  "mensaje": "unidad_academica: El valor recibido no es válido.",
  "datos": {
    "tipo_error": "aplicacion"
  }
}

¿Qué código debería mirar para ver que es lo que está recibiendo en vez de la unidad_academica correcta?

Lo que veo fuera de documentación…
entorno.inc.php

define('ES_PRODUCCION', false);

Nosotros estamos en producción, usando el test del Ministerio.
Deberíamos poner ya ES_PRODUCCION en true ? En qué afecta ese true/false ?

Y lo último que se me ocurre es que en el Ministerio guarden alguna información nuestra…(nosotros tenemos dos sistemas…en el viejo (que no es Guaraní) está funcionando…y al tener el WS en distinta URL en cada sistema, ellos apunten o guarden algo del web service del otro sistema…) o algo por el estilo …

Hola Fernando,

config/basesDeDatos.inc.php la clave que se usa NO debe ser mayor a 5 caracteres, hay una validación en la función evaluaUnidadAcademica de clases/Consulta.class.php. La verdad no se porque de esto, viene de una personalización. Si usas una clave mayor a 5 caracteres da el siguiente error:

config/basesDeDatos.inc.php:


$bdGuarani['des01_saraza'] = array( 
	'tipo_conexion' => 'pgsql', 	
	'host' => 'guarani_dev_pg_trunk',
	'service' => '5432', 	
	'bd' => 'db_guarani',
	'schema' => 'negocio',
	'usuario' => 'postgres', 
	'clave' => 'postgres'
);


{
    "codigo": -1,
    "mensaje": "unidad_academica: El valor recibido no es válido.",
    "datos": {
        "tipo_error": "aplicacion"
    }
}

En config/entorno.inc.php las constantes ES_PRODUCCION y USA_CACHE se están usando en el archivo web/index.php:

ES_PRODUCCION: Lo único que veo que hace es loguear los error de Postgres.
USA_CACHE: Cachea las respuestas de los Web Services.

Cabe aclarar que esto es una personalización que compartieron en el COLAB, con lo cual el funcionamiento de código fuente depende de la universidad que lo compartió.

saludos.
2

Gracias Leonardo,

Si usas una clave mayor a 5 caracteres da el siguiente error
Cambiando la unidad académica a 5 letras funcionó.

Luego tuvimos el problema de certificado, que se solucionó con el verify => false del Error al solicitar boleto estudiantil - nº 5 por lleonardis - Boleto Estudiantil - Foro Comunidad SIU

Ahora desde SUBE se contactaron para decirnos que ellos están recibiendo el siguiente error

REQUEST: http://34.232.173.37/boletows/sube_actualizar_solicitud/UPE01/T287190561651847406 RESPONSE: Curl failed with error #1: Protocol "http" not supported or disabled in libcurl

En el foro no encontré algo parecido

Hola Fernando,

Cambiando la unidad académica a 5 letras funcionó.
Dale, lo voy a agregar a la documentación para que no vuelva pasar.
Luego tuvimos el problema de certificado, que se solucionó con el verify => false del https://foro.comunidad.siu.edu.ar/index.php?topic=18573.msg97084

Si, esa es una solución, pero es extraño porque https://boletoeducativo.gba.gob.ar/ws/ tiene bien los certificados.
¿estas usando la de test/sandbox http://test.boletoestudiantil.gba.gob.ar/ws/? A esta ultima si le tenes que poner verify => false.

Ahora desde SUBE se contactaron para decirnos que ellos están recibiendo el siguiente error
¿a vos te accede bien?
curl -u user:password --data "respuesta=ACEPTADA&respuesta_descripcion=OK" http://34.232.173.37/boletows/sube_actualizar_solicitud/UPE01/T287190561651847406

Para mi están haciendo mal el curl, fíjate estos posts:

https://discuss.newrelic.com/t/curl-https-not-supported-or-disabled-in-libcurl/43204

saludos.
2

¿a vos te accede bien?
Por curl a mí me sale perfecto
{"codigo":1,"mensaje":null,"datos":{"resultado":true}}

Lo que ellos me mandaron fue parte del log de ellos cuando llaman a nuestro servicio, de la interacción automática de ambos sistemas …
No están haciendo un curl directo como para probar, sino que alguna parte de su código que llama a nuestro servicio lo estaría haciendo… o alguna parte del código de nuestro servicio …que les termina devolviendo ese error a ellos …

Les pedí los paramétros para intentar replicar … (estoy esperando respuesta del Ministerio)
Pero si es un tema de la configuración de su Curl le debería pasar lo mismo con todas las Universidades que son http y no https …

A mi me funciona bien:


curl -u admin:123456789*-a --data "respuesta=ACEPTADA&respuesta_descripcion=OK" http://localhost:7271/boletows/sube_actualizar_solicitud/SIUG3/T367894621651257260

{"codigo":1,"mensaje":null,"datos":{"resultado":true}}

Ojo, si en config/entorno.inc.php le pongo:


define('ES_PRODUCCION', true);
define('USA_CACHE', true);


curl -u admin:123456789*-a --data "respuesta=ACEPTADA&respuesta_descripcion=OK" http://localhost:7271/boletows/sube_actualizar_solicitud/SIUG3/T367894621651257260




<b>Fatal error</b>:  Uncaught Error: Call to undefined function apc_delete() in /usr/local/app/boleto_estudiantil/WS/lib/Cache.class.php:27
Stack trace:
#0 /usr/local/app/boleto_estudiantil/WS/web/index.php(28): Cache::cachear()
#1 {main}
  thrown in <b>/usr/local/app/boleto_estudiantil/WS/lib/Cache.class.php</b> on line <b>27</b>


Hay que tener instalada la extensión PHP APC, o sino en el archivo lib/Cache.class.php reemplazar las funciones apc_xxx() por apcu_xxx(), por ejemplo apcu_store en lugar de apc_store.

saludos.
2

Ellos, enel Ministerio, están recibiendo

RESPONSE: Curl failed with error #1: Protocol "http" not supported or disabled in libcurl

a) Si yo pongo directo en el navegador (no estoy especificando POST porque es la barra de URL …)
http://34.232.173.37/boletows/sube_actualizar_solicitud/UPE01/T229906141651845643

Recibo {“codigo”:-1,“mensaje”:“El metodo HTTP utilizado es incorrecto”,“datos”:{“tipo_error”:“aplicacion”}} (Lo más parecido al error de ellos)

b) Haciendo por CURL
curl -u uperest:miclave --data “respuesta=RECHAZADA&respuesta_descripcion=TRAMITE_EXPIRADO” http://34.232.173.37/boletows/sube_actualizar_solicitud/UPE01/T229906141651845643

Recibo {“codigo”:1,“mensaje”:null,“datos”:{“resultado”:true}} (Lo correcto, que está funcionando)

c) Haciendo cualquiera de estas dos por el REST Client con POST
http://34.232.173.37/boletows/sube_actualizar_solicitud/UPE01/T229906141651845643?respuesta=ACEPTADA&respuesta_descripcion=OK

o
http://34.232.173.37/boletows/sube_actualizar_solicitud/UPE01/T229906141651845643
y este JSON
{
“respuesta”: “ACEPTADA”,
“respuesta_descripcion”: “OK”
}

Recibo { “codigo”: -1, “mensaje”: “La cantidad de parametros no es correcta.”, “datos”: { “tipo_error”: “aplicacion” }}

Algo me está faltando en esta prueba pero no me puedo dar cuenta qué…

Las preguntas que me hago ahora …

Los trámites en el Ministerio se están evaluando, ya que en listado que ellos mandan, hay algunos con estado “HABILITADO”
Supongo que la falla en el Curl, afecta a la actualización de los estados de trámite en nuestra base de datos porque creo que eso es lo que hace el sube_actualizar_solicitud …

  1. Hay un Curl que está generando error… ¿Ese Curl sería del código del Ministerio, y es la forma que utilizan ellos para llamar a nuestro WS sube_actualizar_solicitud ? ¿Podría existir la chance que ellos lo tengan habilitado solo para https y no http ?

  2. ¿ El código de sube_actualizar_solicitud donde me devuelve los mensajes de error , estaría en WS/clases ?

  3. ¿ Qué me estaría olvidando para porbarlo en el REST CLIENT ? y ver si consigo el OK o la réplica del error…

Gracias !!

Te respondo:

a) Si yo pongo directo en el navegador (no estoy especificando POST porque es la barra de URL ...) http://34.232.173.37/boletows/sube_actualizar_solicitud/UPE01/T229906141651845643

Recibo {“codigo”:-1,“mensaje”:“El metodo HTTP utilizado es incorrecto”,“datos”:{“tipo_error”:“aplicacion”}} (Lo más parecido al error de ellos).

Claro, porque en el navegador es como hacer un GET y el método debe ser POST.

b) Haciendo por CURL curl -u uperest:miclave --data "respuesta=RECHAZADA&respuesta_descripcion=TRAMITE_EXPIRADO" http://34.232.173.37/boletows/sube_actualizar_solicitud/UPE01/T229906141651845643

Recibo {“codigo”:1,“mensaje”:null,“datos”:{“resultado”:true}} (Lo correcto, que está funcionando)

c) Haciendo cualquiera de estas dos por el REST Client con POST
http://34.232.173.37/boletows/sube_actualizar_solicitud/UPE01/T229906141651845643?respuesta=ACEPTADA&respuesta_descripcion=OK

Claro, porque estas haciendo por POST.

http://34.232.173.37/boletows/sube_actualizar_solicitud/UPE01/T229906141651845643 y este JSON { "respuesta": "ACEPTADA", "respuesta_descripcion": "OK" }

Recibo { “codigo”: -1, “mensaje”: “La cantidad de parametros no es correcta.”, “datos”: { “tipo_error”: “aplicacion” }}

No va por JSON, se manda por “form-data”.

1) Hay un Curl que está generando error... ¿Ese Curl sería del código del Ministerio, y es la forma que utilizan ellos para llamar a nuestro WS sube_actualizar_solicitud ? ¿Podría existir la chance que ellos lo tengan habilitado solo para https y no http ?
Claro, el [b]Ministerio de Infraestructura y Servicios Públicos de la Provincia de Buenos Aires[/b] llama a esos servicios cuando el formulario a completar por el alumno expira "respuesta=RECHAZADA&respuesta_descripcion=TRAMITE_EXPIRADO", o cuando el beneficio es aceptado "respuesta=ACEPTADA&respuesta_descripcion=OK".

Nosotros en su momento hicimos pruebas y no usábamos https, pero igualmente le podes consultar a ellos en el email ​contactouniversidades.minfra@gmail.com

2) ¿ El código de sube_actualizar_solicitud donde me devuelve los mensajes de error , estaría en WS/clases ?
Claro, seria [b]WS/clases/ConsultaSubeActualizaSolicitud.class.php[/b].
3) ¿ Qué me estaría olvidando para porbarlo en el REST CLIENT ? y ver si consigo el OK o la réplica del error...

En el curl del punto b) te esta respondiendo bien, podes ver en la tabla mbe_solicitudes y revisar si cambiaron las columnas respuesta, respuesta_fecha, respuesta_desc y procesado.

RESPONSE: Curl failed with error #1: Protocol "http" not supported or disabled in libcurl
Es una mala instalación de curl, que ejecuten [b]curl --version | grep Protocols[/b] y vean si soporta el protocolo http. Referencias: https://bbs.archlinux.org/viewtopic.php?id=228681 https://forum.openmediavault.org/index.php?thread/19842-protocol-http-not-supported-or-disabled-in-libcurl/

saludos.
4

Gracias Leonardo por toda la ayuda…

Es una mala instalación de curl, que ejecuten curl --version | grep Protocols y vean si soporta el protocolo http.

Algo de eso hubo… pero el Ministerio no lo reconoció… tampoco me importa que no lo haya reconocido sino que funcione…
Luego que les contamos a ellos casi todo en forma parecida a como lo contamos en este Post, de un día para otro empezó a funcionar bien, pero dicen no haber tocado nada.

Así que Guaraní ya está terminado.

El punto que nos queda es que tenemos dos sistemas distintos. El viejo de alumnos de 2019 para atrás (donde antes funcionaba el ws) y el Guaraní. Le pedimos al Ministerio dos usuarios distintos para que cada usuario apunte a un ws diferente y listo, pero nos negó esa posibilidad. Así que el único ws que quedó relacionado con ellos es el de Guaraní.

Lo que se me ocurre es tocar la clase para que elija en que sistema escribir… Si el trámite está en la tabla de Guaraní, ok… y si no está en la tabla de Guaraní que vaya a escribir la tabla del sistema viejo (en MySQL)

Hola Fernando,

Lo que se me ocurre es tocar la clase para que elija en que sistema escribir.... Si el trámite está en la tabla de Guaraní, ok... y si no está en la tabla de Guaraní que vaya a escribir la tabla del sistema viejo (en MySQL)

Vas a tener que personalizar el Web Service de Sube:

  1. En config/basesDeDatos.inc.php vas a tener que agregar una conexión a mysql.

  2. En clases/ConsultaSubeActualizaSolicitud.class.php funciones:
    2.1) getParametrosQuery: Acá obtenes los parámetros de conexión a la DB.
    2.2) existeSolicitud: Valida si existe la solicitud en la DB.
    2.3) setConsulta: Arma la query para actualizar la solicitud en la DB.

saludos.
2