roshkadev / rshk-jsifenlib

Librería de código abierto para interactuar con SIFEN de la SET.
100 stars 42 forks source link

Error XML Mal Formado en Eventos #57

Closed wnegro closed 8 months ago

wnegro commented 8 months ago

Estoy siguiendo los ejemplos de eventos pero no logro hacer que funcionen los eventos.

public static void EnviaEvento() throws SifenException {
    LocalDateTime currentDate = LocalDateTime.now();

    TrGeVeCan trGeVeCan = new TrGeVeCan();
    trGeVeCan.setId("01800349091001001000001922024010314429356330");
    trGeVeCan.setmOtEve("Error de carga de datos");

    TgGroupTiEvt tgGroupTiEvt = new TgGroupTiEvt();
    tgGroupTiEvt.setrGeVeCan(trGeVeCan);

    TrGesEve rGesEve1 = new TrGesEve();
    rGesEve1.setdFecFirma(currentDate);
    rGesEve1.setId("123");
    rGesEve1.setgGroupTiEvt(tgGroupTiEvt);

    EventosDE eventosDE = new EventosDE();
    eventosDE.setrGesEveList(Collections.singletonList(rGesEve1));

    RespuestaRecepcionEvento ret = Sifen.recepcionEvento(eventosDE);
}

Me genera este xml (aquí formateado y sin la firma digital y certificado), alguien sabe que me falta o está mal? Gracias <?xml version="1.0" encoding="UTF-8" standalone="no"?>

1 2024-01-05T19:09:21 150 01800349091001001000001922024010314429356330 Error de carga de datos ... ... ... En este evento, y también con Inutilización, siempre me retorna XML Mal Formado 2024-01-05T19:26:47-03:00Rechazado0160XML Mal Formado.
wnegro commented 8 months ago

Finalmente Sifen me respondió la causa del error. En el manual original muestra que los atributos xmlns y schemaLocation van en el tag "rGesEve" y en la nota técnica 10 indica que van a "gGroupGesEve", pero en los ejemplos que me mandó Sifen estos atributos están en los 2 tags. Y así fue como agregando los atributos en los 2 tags me funcionó y dejó de darme el error de XML Mal Formado.

En: src/main/java/com/roshka/sifen/core/fields/request/event/TrGesEve.java

debajo de esta línea SOAPElement rGesEve = gGroupGesEve.addChildElement("rGesEve");

habría que agregar estas 2 rGesEve.addNamespaceDeclaration("xsi", "http://www.w3.org/2001/XMLSchema-instance"); rGesEve.setAttributeNS("http://www.w3.org/2001/XMLSchema-instance", "xsi:schemaLocation", Constants.SIFEN_NS_URI_RECEP_EVENTO);