Hola a tod@s...
Primero daros las gracias por compartir todos los conocimientos y dudas que os habéis ido encontrando con el TBAI (ese gran desconocido con el que acabas soñando...)
He conseguido, gracias a vosotros generar el xml, firmarlo (con el AutoFirmaCommandLine), generar el QR, enviarlo y casi lo más difícil, que lo acepten en Guipuzcoa...
Lo he hecho todo con Tokyo (10.2.3), si alguien tiene alguna duda... aquí estoy a vuestra disposición...
Sólo tengo un problemilla con la respuesta, por ahora leo la respuesta directamente a pelo en puro xml. (FindNode('Salida'), etc...) y funciona, pero no la puedo parsear al tipo IXMLTicketBaiResponse (generado automáticamente a partir del xsd)... que sería más elegante, legible y correcto.
intento esto:
Código Delphi
[-]
var
idHttp: TIdHttp;
xmlResp: IXMLDocument;
xmlTBResp: IXMLTicketBaiResponse;
begin
...
idhttp.Request.ContentType := 'application/xml; charset=utf-8'; strResponse := idHttp.Post(tblTBAI_Admin.FieldByName('URL_Envia').AsString.Trim + '\alta', RequestBody);
if not strResponse.isEmpty then
begin
xmlResp := TXMLDocument.create(nil);
strResponse := strResponse.Replace('ns2:TicketBaiResponse','TicketBaiResponse',[rfReplaceAll]); CoInitialize(nil);
xmlResp.LoadFromXML(strResponse);
xmlResp.Active := true;
responseFileName := strFileName + '_Respuesta_' + formatDateTime(TBAI_DATE_FORMAT_FILE, now()) + FILE_EXT_XML;
xmlResp.SaveToFile(responseFileName);
if fileExists(responseFileName) then
begin
xmlTBResp := NewTicketBaiResponse();
CoInitialize(nil);
xmlTBResp := LoadTicketBaiResponse(responseFileName);
xmlTBResp.Active := true;
if (xmlTBResp <> nil) and (xmlTBResp.Salida <> nil) then
....
Tambien he probado con
Código Delphi
[-]
...
xmlTBResp := NewTicketBaiResponse();
CoInitialize(nil);
xmlTBResp := GetTicketBaiResponse(xmlResp); xmlTBResp.Active := true;
if (xmlTBResp <> nil) and (xmlTBResp.Salida <> nil) then
...
y tampoco...
Si a alguien se le ocurre algo... si no lo dejaré moviéndome por los nodos a pelo...
Muchas gracias de nuevo...