Página 7 de 7
Re: (Nuevo) Web Service para Validar del SAT
Publicado: Mié Ago 12, 2015 10:19 am
por RickAlanis
Hola, buen día.
¿Ha tenido alguien problemas con el Web Service para validar del SAT?
El validador me está regresando un error que dice:
N - 601: La expresión impresa proporcionada no es válida.
La expresión que estoy enviando es:
Código: Seleccionar todo
?re=LAEH621106H3A&rr=PTM070508HH5&tt=0000004976.400000&id=B8D987B1-DC26-48C2-9EA1-DFEA8B2BBAC9
y al menos los clientes que han validado el lunes sí tenían una respuesta correcta, pero parece ser que ayer inició este problema.
¿Sabe alguien algo?
Les agradeceré los aportes
Saludos
Re: (Nuevo) Web Service para Validar del SAT
Publicado: Mié Ago 12, 2015 11:59 am
por s3cr3to
Me aparece como vigente:

- validacion1.png (36.37 KiB) Visto 17037 veces
Pero copiando todo el código que subiste me llega con espacios al inicio, quizá eso provoca el error en la consulta:
Código: Seleccionar todo
" ?re=LAEH621106H3A&rr=PTM070508HH5&tt=0000004976.400000&id=B8D987B1-DC26-48C2-9EA1-DFEA8B2BBAC9"
Re: (Nuevo) Web Service para Validar del SAT
Publicado: Mié Ago 12, 2015 1:41 pm
por RickAlanis
Gracias, s3r3to.
No, el problema no está en esos espacios.
Cuando los copiaste, tal vez se fueron de más. pero en mi comentario original va sin espacios.
La pregunta a tu respuesta sería:
¿Tomaste cada dao y lo introdujiste en tus campos y luego construyes tú la cadena para consultar en el web service del SAT?
De ser así, supongo que tú construyes esa cadena de caracteres.
¿La podrías proporcionar, para comparar?
El sobre que mando al web service contiene esto:
Código: Seleccionar todo
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Consulta xmlns="http://tempuri.org/">
<expresionImpresa>
<![CDATA[?re=LAEH621106H3A&rr=PTM070508HH5&tt=0000004976.400000&id=B8D987B1-DC26-48C2-9EA1-DFEA8B2BBAC9]]></expresionImpresa>
</Consulta>
y lo que regresa el servicio es:
Código: Seleccionar todo
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ConsultaResponse xmlns="http://tempuri.org/">
<ConsultaResult xmlns:a="http://schemas.datacontract.org/2004/07/Sat.Cfdi.Negocio.ConsultaCfdi.Servicio" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:CodigoEstatus>N - 601: La expresión impresa proporcionada no es válida.</a:CodigoEstatus>
<a:Estado>No Encontrado</a:Estado>
</ConsultaResult>
</ConsultaResponse>
Saludos
Re: (Nuevo) Web Service para Validar del SAT
Publicado: Mié Ago 12, 2015 4:44 pm
por s3cr3to
Creo que estas generando mal tu envio, revisa este link:
http://www.validacfd.com/phpbb3/viewtop ... ida#p26477
falta el "prefix" (tem:)
La aplicación la desarrolle en Delphi, y solo copié y pegué los datos que proporcionaste.
En este mimo tema mismo subí mi programa (supongo no lo han borrado) lo puedes buscar y probar, en código solo use esto:
Despues de crear la unidad del webservice, simplemente formo la cadena con la instruccion format:
Código: Seleccionar todo
iccs:= GetIConsultaCFDIService();
sData := format('re=%s&rr=%s&tt=%s&id=%s', [leEmisor.Text, leReceptor.Text, leMonto.Text, leUUID.Text]);
try
vAcuse := iccs.Consulta(sData);
if vAcuse.Estado = 'Vigente'
then ShowIn(Valido)
else ShowIn(Invalido);
...
Saludos
Re: (Nuevo) Web Service para Validar del SAT
Publicado: Mié Ago 12, 2015 5:34 pm
por RickAlanis
Gracias por contestar.
El problema es que ya funcionaba.
De hecho, fue muy fácil hacerlo con las herramientas que tengo y funcionó a la primera.
Pero desde ayer no funciona, me marca el error que ya comenté. que la expresión impresa proporcionada no es válida.
El validador tiene funcionando al menos desde Febrero. No es algo que acabe yo de hacer.
Reitero la expresión que estoy enviando:
"?re=LAEH621106H3A&rr=PTM070508HH5&tt=0000004976.400000&id=B8D987B1-DC26-48C2-9EA1-DFEA8B2BBAC9"
El XML que va en el sobre de petición del WS lo genera el sistema de forma automática.
Re: (Nuevo) Web Service para Validar del SAT
Publicado: Dom Sep 06, 2015 7:05 pm
por voldemortkein
Una pregunta, soy algo ignorante en el tema.
Es lo mismo WSDL que WSC?. Lo pregunto porque veo que muchos clientes de SOAP usan WSDL para acceder a los webservices.
O no se si estoy mal.
Estoy usando un lenguaje de programación llamado XOJO, el cual es tipo BASIC. y aquí me permite acceder a métodos SOAP, y ponen un ejemplo. pero la dirección a la que acceden en el ejemplo de mi software acaba así: .asmx?WSDL
en vez de .svc Como el enlace que publicó Maltrak para validar UUID del SAT.
Saludos
Re: (Nuevo) Web Service para Validar del SAT
Publicado: Lun Sep 07, 2015 7:35 am
por RickAlanis
voldermortkein:
Los tipos de extensión ".asmx" los explican
aquí, relacionados con Web Services.
WSC parece ser la manera corta para WSCDL, una iniciativa para descripción de coreografías de web services, que ha sido abandonada por el W3C. En
Wikipedia hablan algo al respecto.
Saludos.
Re: (Nuevo) Web Service para Validar del SAT
Publicado: Jue Sep 10, 2015 9:11 am
por voldemortkein
jhon_key escribió:Antes que nada saludos a todos, esta va a ser mi primer contribución y espero poder ayudarlos y así regresar un poco de lo que me han dado.
Dunmord, la forma de hacerlo en PHP en la siguiente:
Código: Seleccionar todo
try {
$client = new SoapClient("https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc?wsdl");
} catch (Exception $e) {
echo 'Excepción capturada: ', $e->getMessage(), "\n";
}
$cadena="re=BEN9501023I0&rr=SARM8209281F1&tt=440.000000&id=EC609EC1-5F63-4333-A2B8-2EDC10B68075";
$param = array(
'expresionImpresa'=>$cadena
);
$valores = $client->Consulta($param);
print_r($valores);
Perdon mi novatez, Este código lo copio y lo guardo en un archivo .php en mi Carpeta DocumentRoot, le pongo sus etiquetas PHP al inicio y al fin "<?php" y lo ejecuto?
Saludos
Re: (Nuevo) Web Service para Validar del SAT
Publicado: Vie Feb 12, 2016 10:28 pm
por LuNaTk
Secreto, tu codigo me sirvio, lo pude probar y funciona, sin embargo me da problemas al intentar validar varios cfdis consecutivos, uno despues de otro, no se si tu tengas ese problema, me gusto el hecho de que la consulta es rápida, pero lo tuve que cambiar mediante y consumirlo via post utilizando Indy solo que el resultado es un poco mas lento.
Re: (Nuevo) Web Service para Validar del SAT
Publicado: Sab Feb 13, 2016 1:05 pm
por s3cr3to
El servicio en ocasiones es Lento, al principio cuando inicio su operación era veloz.
En nuestra región hay cierto horario en el cual es díficil/imposible verificar algunos cientos de comprobantes.
Seguro ya somos muchos aprovechandolo y de ahi que se sature.
Nota: un factor que puede hacer lento el uso de este servicio seria que los DNS que usas esten mal. Usamos un DNS interno y rara vez sufrimos este problema.
No recuerdo si publique aquí el código pero hace poco detecte un error de mi parte donde hago la conexión al webservice durante cada verificación, y en mi aplicación que utilizo actualmente en produccción lo adapte para que lo haga al iniciar y en caso de caida del servicio que intente 3 veces a reconectarse y si falla que termine con un aviso, aquí pongo un extracto en caso de que te sirva:
Código: Seleccionar todo
procedure TForm1.doVerificacionParaTodos;
{ almacena en sVNC la verificacion del comprobante }
begin
if vData.tipoNomina then
sVNC:= doNominaVigente(vData.UUID)
else
begin
if sUUID <> kUUIDFlag then
begin
if FflagInitICS then
begin
FflagInitICS:= False;
iccs := GetIConsultaCFDIService();
end;
sVNC := doVerificacion;
end
else
sVNC:= 'N';
end;
sVNCtmp:= sVNC;
end;
function TForm1.doVerificacion : string; //char;
var
sData: WideString;
cResult: string; //char;
intentos: cardinal;
ClaseCFD : integer;
tmpEmisor, tmpReceptor : string;
begin
// codigo cortado ....
begin
intentos := 1;
while True do
begin
sData := format('re=%s&rr=%s&tt=%s&id=%s', [sEmisor, sReceptor, sMonto, sUUID]);
try
vAcuse := iccs.Consulta(sData);
if vAcuse.Estado = 'Vigente' then
cResult := 'V'
else if vAcuse.Estado = 'Cancelado' then
cResult := 'C'
else
cResult := 'N';
break; // ouch!!
except
Info(format('%d - Error de conexión: %s', [sData]));
inc(intentos);
if intentos > 3 then
begin
iccs := GetIConsultaCFDIService(); // reconectarse
cResult := 'X'; // Error
inc(nError);
Info('Hay errores en la conexión, se recomienda abortar este proceso e intentar despues.');
cbStop.Checked := True;
break; // ouch!!
end;
sleep(3000); // pausa de 3 segundos...
end;
end;
end
else
begin
// los recibos de nomina se revisan en el servidor de "..."
// PERO en 2016 se espera un CFDi único para nominas
if (sEmisor = kRFC) and (ClaseCFD = kCFDN) then
cResult := doNominaVigente(vData.uuid)
else
cResult := 'V'; // falta procesar recibos de honorarios
end;
end
else
begin
cResult := 'E';
end;
Result := cResult;
end;
Como esto fue vaporware la verdad ni comentarios completos tiene pero quizá de algo te sirva.