" Compilar el cgi-bin vuelta. Para ello habrá que editar previamente el fichero fuente
vuelta.c, y modificar la línea 4 indicando en el define PATH_RESULTADO el directorio
donde se encuentra el fichero comercio.log.AAMMDD, que será el directorio en donde se
ejecute el demonio TPV_Virtual . Comprobar además que el cgi-bin vuelta tiene permiso
de lectura para dicho fichero y acceso a todos los subdirectorios del path donde se
encuentra dicho fichero. De no hacer esta modificación y estas comprobaciones se
producirá un error V0 al ejecutarse el cgi-bin vuelta. Para compilarlo escribir: make -f
makevuelta."
Archivo vuelta.c
Código:
No tngo ni idea de como se compila esto, dicen las instrucciones "Para compilarlo escribir: make -f makevuelta..." pero ni idea de donde se escribe eso ni porqué...#include <stdio.h> #include <string.h> #define PATH_RESULTADO "../demonio" char *path_resultado = PATH_RESULTADO; main() { int valor; char texto[1000]; char *comercio; char *referencia; char *fecha; char *resultado; char *codigo; char *importe; char *moneda; char *error; char *resto; /********************************************************/ /* Invocamos a la funcion leer_resultado() para obtener */ /* el resultado de la transaccion. Devuelve 1 si no se */ /* produjo ningun error, y -1 en caso contrario. */ /********************************************************/ valor = leer_resultado(&comercio, &referencia, &fecha, &resultado, &codigo, &importe, &moneda, &error, &resto); /****************************************************************/ /* Una vez leido del fichero comercio.log.AAMMDD el resultado */ /* de la transaccion, se muestra una pagina con dicho resultado */ /* */ /* El codigo que aparece a continuacion puede ser sustituido */ /* por otro para mostrar las paginas con el resultado segun el */ /* disenyo deseado. Tener en cuenta que: */ /* */ /* - resultado puede valer 'OK' o 'KO' segun la transaccion */ /* haya sido o no autorizada. */ /* */ /* - si resultado vale 'OK', codigo contendra el codigo de */ /* autorizacion que el centro autorizador asigno a la tran- */ /* saccion. */ /* */ /* - importe contiene el importe por el que se autorizo la */ /* transaccion. */ /* */ /* - si se produjo algun error en la ejecucion del cgi-bin */ /* vuelta, contiene el codigo de error en caso contrario */ /* su contenido es indeterminado. */ /* */ /* - Si al invocar al cgi-bin 'totalizacion' se paso el para- */ /* metro 'resto', el cgi-bin 'vuelta' sera invocado desde */ /* el servidor del banco pasandole un parametro 'resto' con */ /* el mismo valor con el que se invoco al cgi-bin 'totaliza- */ /* cion'. El valor de este parametro es devuelto por la fun- */ /* cion 'leer_resultado' en la variable 'resto'. Si no se */ /* especifico el parametro 'resto' al invocar a 'totaliza- */ /* cion', la variable 'resto' valdra NULL tras la invocacion */ /* a la funcion 'leer_resultado' */ /* */ /****************************************************************/ if (valor != 1 ) { sprintf(texto, "Se ha producido un error. Codigo de error: %s", error); Sacar_mensaje(texto); } else { if (!strcmp(resultado, "KO")) sprintf(texto,"Transaccion no autorizada.<br> Razon:%s", codigo); else { sprintf(texto,"Transaccion autorizada"); strcat(texto, "<br>Codigo de autorizacion: "); strcat(texto, codigo); } strcat(texto, "<br>Comercio: "); strcat(texto, comercio); strcat(texto, "<br>Referencia: "); strcat(texto, referencia); strcat(texto, "<br>Importe de la transaccion: "); strcat(texto, importe); strcat(texto, "<br>Moneda: "); strcat(texto, moneda); Sacar_mensaje(texto); } /*****************************************************************************/ /* Incluir aqui el codigo necesario para actualizar bases de datos locales, */ /* borrar ficheros temporales, o cualquier accion que se considere necesaria */ /* tras conocer la denegacion o autorizacion de la transaccion en curso */ /*****************************************************************************/ exit(0); }
Gracias por adelantado.