Leer captcha web sunat validez factura electronica (sunat)

983 views
Skip to first unread message

Leonardo N.

unread,
Dec 19, 2016, 1:07:12 PM12/19/16
to Comunidad de Visual Foxpro en Español
Que tal;

Estoy intentando validar los documentos electronicos directamente desde desde el portal: http://www.sunat.gob.pe/ol-ti-itconsvalicpe/ConsValiCpe.htm

Logro cargar los datos, y el codigo captcha lo obtengo desde esta ruta "http://www.sunat.gob.pe/ol-ti-itconsvalicpe/captcha?accion=image". El problema esta en que el captcha obtenido no es el mismo que el que esta pegado en el portal, por lo tanto al darle el SUBMIT pues arroja que el codigo no es valido. La unica solución que lo veo es descargar la imagen misma que esta pegada en el portal y ahi es donde solicito apoyo, por mas que le doy vueltas no logro ubicar la ruta para descargalo.

NOTA: Para leer el texto de la imagen estoy utilizando el TESSERACT.

Saludos


Procedure ValidezCPE()
    Local loIE ,lcURL,loDoc,loForm,loLista
   
    lcCaptcha = GetCodigoCaptcha()

TRY   
    lcURL = "http://www.sunat.gob.pe/ol-ti-itconsvalicpe/ConsValiCpe.htm"
   * *lcURL = "http://www.sunat.gob.pe/ol-ti-itreciboelectronico/cpelec003Alias?accion=LlamaValidez1"
   
    loIE = Createobject("InternetExplorer.Application")
    loIE.Navigate2(lcURL)
    Do While Not loIE.Busy
       Doevents
    Enddo
    Pause(0.5)
   
    loIE.Visible = .t.
    loDoc = loIE.Document
    loForm = loDoc.forms(0)
    loForm.item(1).Value = "20103134065"
    loForm.item(2).Value = "03"
    loForm.item(3).Value = "6"
    loForm.item(3).Value = "-"
    loForm.item(4).Value = ""
    loForm.item(5).Value = "F011"
    loForm.item(6).Value = "194"
    loForm.item(7).Value = "29/11/2016"
    loForm.item(8).Value = "26815.76"
    loForm.item(9).Value = lcCaptcha
   
    loLista = loIE.Document.Lista
    loLista.accion.value = "CapturaCriterioValidez"
   
    loForm.accion.value = "CapturaCriterioValidez"
    *loForm.WAcepta.Disabled = .f.
   
       
    *loForm.item(9).Value = "JPCY"
    *loForm.submit()
    *loDoc.Submit()

Catch To loError
    MensajeError(loError)
Endtry    
   
Return
&&
Function GetCodigoCaptcha()
    ** Obtiene el codigo captcha
    Local lcURL,loCaptcha,lnIntento,lcCaptcha
    lcURL = "http://www.sunat.gob.pe/ol-ti-itconsvalicpe/captcha?accion=image"
    loCaptcha = NewObject("rucsunat","libsunat.vcx")

    ** 5 Intentos para leer correctamente captcha
    lnIntento = 0
    Do  While lnIntento<=5
        lnIntento = lnIntento + 1
   
        If Not loCaptcha.Getimagen(lcURL) Then
           Pause(0.01)
           Loop
        Endif
   
        If Not loCaptcha.Gettexto() Then
           Pause(0.01)
           Loop
        Endif
    Enddo    
   
    lcCaptcha = loCaptcha.lcTextoCaptcha
   
Return lcCaptcha

Jean Pierre Adonis De La Cruz Garcia

unread,
Dec 19, 2016, 4:06:22 PM12/19/16
to Comunidad de Visual Foxpro en Español
NO te hagas muchas bolas amigo, y usa mi modulo la cual puedes extraer los datos con Json o el metodo que mas se te adapte a tu necesidad, simplemente cambias el ruc al final y extraes los datos, pronto le agregare mas cosas, como son, Si son buenos contribuyentes, si es agente de percepcion o retencion, tambien, si es Emisor de Factura Electronica


Estoy terminando de implementar tambien para lo de la Reniec, SBS, para planillas, y tambien directamente sin librerias jalar desde mi web, codigos de barras, PDF417 o QR.

Jean Pierre Adonis De La Cruz Garcia

unread,
Dec 19, 2016, 4:18:43 PM12/19/16
to Comunidad de Visual Foxpro en Español
Ups. me emocione mucho y recine me doy cuenta que era otra cosa que consultabas.
esta es la ruta de la imagen de Validez de comprobante, hare tambien un proceso en PHP para que lo hagan mas rapido sin digitar la imagen captcha, fin de semana lo subire a mi web para que lo consuman tambien.


El lunes, 19 de diciembre de 2016, 13:07:12 (UTC-5), Leonardo N. escribió:

Leonardo N.

unread,
Dec 19, 2016, 4:22:44 PM12/19/16
to Comunidad de Visual Foxpro en Español
Jean;

Gracias por la respuesta. Pero, no estoy intentando extraer datos del RUC (eso ya lo tengo). Lo que intento hacer es validar un documento electronico (FAC; BOL, N/C y N/D). A los que tienen una solución de facturación electronica (SUNAT - PERU), no se si les habra pasado el siguiente incidente
1. Envias un resumen de boletas
2. Luego de unos minutos consultas y obtienes el CDR de aceptado. Hasta ahi aparentemente tus boletas ya estan informadas en la SUNAT y aceptado. Pero, he notado que no es asi. Ya en 3 oportunidades ha sucedido que por mas que tengo el CDR de aceptado, cuando lo consulto por la URL "http://www.sunat.gob.pe/ol-ti-itconsvalicpe/ConsValiCpe.htm" me retorna un mensaje indicando que la boleta de venta no ha sido informado. Asumiendo que el servidor tarde en refrescarse, por mas que lo consulto pasado unas horas igual ofrece el mismo resultado. Me he comunicado con SUNAT, he enviado todos los archivos de prueba que me han solicitado y ahun estoy en espera de respuesta.

Es por ello que intento generar una rutina para validar el documento informado posterior al envio y recepcion del CDR

Saludos

Jean Pierre Adonis De La Cruz Garcia

unread,
Dec 19, 2016, 4:35:13 PM12/19/16
to Comunidad de Visual Foxpro en Español
Ok, te comprendo, al momento no he tenido ningun problema al respecto, pero de todos modos lo tomare en cuenta.

William Jara

unread,
May 21, 2018, 2:23:05 PM5/21/18
to Comunidad de Visual Foxpro en Español
Hola, sé que este post es de hace mucho tiempo, yo estoy en el mismo dilema de hacer la validez de CPE, me darías una orientación de cómo lograr hacerlo?

Jean Pierre Adonis De La Cruz Garcia

unread,
May 21, 2018, 5:35:46 PM5/21/18
to Comunidad de Visual Foxpro en Español
ya tengo desrrollado un modulo en VFP para ese caso, pero es solo de pago para el que lo solicite, en cao contrario la pista que les daria, es con F12 hacer el seguiemitno mientras se llena los datos y se ejecuta el proceso.
Reply all
Reply to author
Forward
0 new messages