en delphi 7 yo tomo el archivo xml formado y lo convierto asi:
Código Delphi
[-]
function TProveedorFinkOk.FileToByteArray( const FileName : string ) : TByteDynArray;
const BLOCK_SIZE=1024;
var BytesRead, BytesToWrite, Count : integer;
F : FIle of Byte;
pTemp : Pointer;
begin
AssignFile( F, FileName );
Reset(F);
try
Count := FileSize( F );
SetLength(Result, Count );
pTemp := @Result[0];
BytesRead := BLOCK_SIZE;
while (BytesRead = BLOCK_SIZE ) do
begin
BytesToWrite := Min(Count, BLOCK_SIZE);
BlockRead(F, pTemp^, BytesToWrite , BytesRead );
pTemp := Pointer(LongInt(pTemp) + BLOCK_SIZE);
Count := Count-BytesRead;
end;
finally
CloseFile( F );
end;
end;
hago esto porque la rutina original no me tomaba la Ñ , ñ, y otros campos mas
esta rutina es la original
Código Delphi
[-]
function TProveedorFinkOk.UTF8Bytes(const s: UTF8String): TBytedynArray; begin
{$IF Compilerversion >= 20}Assert(StringElementSize(s)=1){$IFEND};
SetLength(Result, Length(s));
if Length(Result)>0 then
Move(s[1], Result[0], Length(s));
end;
y esta es la rutina que timbra en finkok
Código Delphi
[-]
function TProveedorFinkOk.TimbrarDocumento2(const aComprobante:
string; const aTransaccion: Int64): TCadenaUTF8;
var
respuestaTimbrado: TFinkOkRespuestaTimbrado;
sXML:TByteDynArray;
begin
sXML := FIleToByteArray(aComprobante);
respuestaTimbrado := fwsTimbradoFinkOk.stamp(sXML,fCredencialesPAC.RFC,fCredencialesPAC.Clave);
if Trim(respuestaTimbrado.CodEstatus) <> '' then
Result := ExtraerNodoTimbre(respuestaTimbrado.xml);
if Trim(respuestaTimbrado.CodEstatus) = '' then
begin
{$IFDEF CODESITE}
CodeSite.Send('Falla Validacion Error No.', respuestaTimbrado.Incidencias[0].CodigoError+'/Detalle :'+respuestaTimbrado.Incidencias[0].MensajeIncidencia);
{$ELSE}
raise exception.Create('Falla Validacion Error No.'+ respuestaTimbrado.Incidencias[0].CodigoError+'/Detalle :'+respuestaTimbrado.Incidencias[0].MensajeIncidencia);
{$ENDIF}
end;
end;
lo hice asi porque en delphi 7 tengo problemas con las conversiones de tipos que en versiones mas recientes no hay problema
espero empezar a migrar de delphi 7 a lo mas reciente pronto
estas rutinas las cambie del original que se encuentra en el proyecto bambucode para construir el cfdi 3.3 y timbrar en finkok