Chilkat DTE Chile

645 views
Skip to first unread message

Wehs Vulcano

unread,
Jul 18, 2022, 2:49:27 PM7/18/22
to VFP Groups
Hola estimados,

Estaba viendo Chilkat que tiene hasta ejemplos de la facturación Chile ,
además que sirve para implementar muchas cosas mas.

las preguntas son:

¿Han utilizado Chilkat para implementar facturación electrónica?

¿Chilkat traer una utilidad para crear un archivo XML a la medida (con
etiquetas personalizadas), o eso lo han hecho por cuenta propia?

¿Si es por cuenta propia lo hacen con comandos de bajo nivel para ir
creado linea por linea?

TEXT / ENDTEXT lo veo útil para formar un XML , pero no veo la manera de
como incrustar un detalle de productos.

Quiero abordar esos temas antes de descargar la versión DEMO de Chilkat
y aprovechar bien esos 30 días.

En este ejemplo colocan comentado un XML del SII , por eso tengo la duda
si ya viene alguna utilidad para hacerlo o chilkat espera que uno se la
de ya formada

https://www.example-code.com/foxpro/sii_cl_factura_electr%C3%B3nica_2.asp


saludos










gcard...@gmail.com

unread,
Jul 19, 2022, 10:18:12 AM7/19/22
to Comunidad de Visual Foxpro en Español
Saludos, 
Si hemos utilizado chilkat para manipular archivos XML
Esta libreria tiene todas las herramientas para cargar un xml desde archivo
o desde una strign lugo ubicar,
actualizar, insertar, borrar nodos a tu antojo
lugo puedes generar el xml final y guardarlo como un archivo o usarlo como cadena
para posterior envio via el objeto http
PArtes de una pantilla basica y le haces los cambiso que requieras

ahi va un ejemplo:

**ENVIAR PETICION HKA FACT FE VIA WS
**USANDO CHILKAT
**EJECUTA METODO DESCARGARREPGRAFICA en pdf
**GFC:2022-07-15

LOCAL loHttp
LOCAL lnSuccess
LOCAL loXml
LOCAL lcStrXml
LOCAL lnResponseStatusCode
LOCAL lcEndPoint
LOCAL loResp
LOCAL loXmlResp

SET SAFETY OFF
SET TALK OFF

s_LicenciaChilkat="xxxxxxxxxxxxxxxxxxxxxxxx"

CLEAR

**ACTIVA CHILKAT
Ck_Glob = CreateObject('Chilkat_9_5_0.Global')  &&LIBRERIAS DE GESTION XML, HTTP, DIGSIGNATURES..
lnSuccess = Ck_Glob.UnlockBundle(s_licenciachilkat)  &&VERSION 9.5.77 ABRIL 2019.04.22
IF (lnSuccess <> 1) THEN
    WAIT WINDOW "LA LIBRERIA CHILKAT FE NO HA SIDO INSTALADA !!"
    RELEASE Ck_Glob
    RETURN
ENDIF

loHttp = CreateObject('Chilkat_9_5_0.Http')

**GENERAR XML O CARGAR DESDE ARCHIVO

loXml = CreateObject('Chilkat_9_5_0.Xml')

XFILEXML="E:\PLANTILLAS_XML\DESCARGARREPGRA.XML"

lnSuccess = loXml.LoadXmlFile(XFILEXML)

IF lnsuccess=1

    C_IDEMISOR="3793242"
    C_DOCUMENTO="HEFE648"
    C_TOKENEMPRESA="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    C_TOKENPWD="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    C_TIPOIDEMISOR="31"

    loXml.UpdateChildContent("soapenv:Header","")
    loXml.UpdateChildContent("soapenv:Body|tem:DescargarRepGrafica|tem:request|wcf:identificadorEmisor",C_IDEMISOR)
    loXml.UpdateChildContent("soapenv:Body|tem:DescargarRepGrafica|tem:request|wcf:numeroDocumento",C_DOCUMENTO)
    loXml.UpdateChildContent("soapenv:Body|tem:DescargarRepGrafica|tem:request|wcf:tipoIdentificacionemisor",C_TIPOIDEMISOR)
    loXml.UpdateChildContent("soapenv:Body|tem:DescargarRepGrafica|tem:request|wcf:tokenEmpresa",C_TOKENEMPRESA)
    loXml.UpdateChildContent("soapenv:Body|tem:DescargarRepGrafica|tem:request|wcf:tokenPassword",C_TOKENPWD)

**ARMA XML DE PETICION CUANDO ES EN MEMORIA...
*lcStrXml = ARMAXML() && ver abajo funcion

    lcStrXml=loXml.getXML()

    * We'll need to add this in the HTTP header:
    loHttp.SetRequestHeader("SOAPAction","http://tempuri.org/IReceptorWS/DescargarRepGrafica")

    loHttp.SetRequestHeader("Content-Type","text/xml; charset=UTF-8")

    * The endpoint for this soap service is:
    lcEndPoint = "https://recepcion21.thefactoryhka.com.co/ReceptorWS.svc"

    loResp = loHttp.PostXml(lcEndPoint,lcStrXml,"utf-8")

    IF ISNULL(LORESP)  && ERROR EN LA PETICION
      ?"ERROR EN PETICION REVISE ERROR"
    ENDIF  

    IF (loHttp.LastMethodSuccess <> 1) THEN
        *? loHttp.LastErrorText
        *? "LastHeader:"
       
        XERROR=STREXTRACT(loHttp.LastErrorXML,"<SocketError>","</SocketError>")
        WAIT WINDOW "ERROR: "+XERROR
        *? loHttp.LastHeader
        RELEASE loHttp
        RELEASE loXml
        CANCEL
    ENDIF

    lnResponseStatusCode = loResp.StatusCode

    * You may wish to verify that the responseStatusCode equals 200...
    ? "Response Status Code: " + STR(lnResponseStatusCode)

    * You may examine the exact HTTP header sent with the POST like this:
    ? "LastHeader:"
    ? loHttp.LastHeader

    * Examine the XML returned by the web service:
    ? "XML Response:"
   
    loXmlResp = CreateObject('Chilkat_9_5_0.Xml')
    loXmlResp.LoadXml(loResp.BodyStr)
    C_XML=loXmlResp.GetXml()
    XX_XML=STREXTRACT(C_XML,"<a:archivo>","</a:archivo>")

    *DECODIFICA DE BASE64 EL XML
    loBd2 = CreateObject('Chilkat_9_5_0.BinData')
    loBd2.AppendEncoded(XX_XML,"base64")
    lcDecoded = loBd2.GetString("utf-8")
    loBd2.WRITEFILE("REPGRA.PDF")
         
    **EXTRAE LA PORCION INVOICE DEL XML
    *cinvoice=STREXTRACT(lcdecoded,"<Invoice ","</Invoice>",1,4)  && EXTRAE NODO INVOICE inlcuye los tags
    *ESCRIBE A UN ARCHIVO EL XML
    *STRTOFILE(cinvoice,"invoice.xml")
ELSE
  WAIT WINDOW "ERROR AL CARGAR XML: "+XFILEXML TIMEOUT 4
ENDIF

RELEASE loResp
RELEASE loHttp
RELEASE loXml
RELEASE loXmlResp


RETURN

PROCEDURE ARMAXML
PRIVATE ls_xml
**ARMA CADENA DE LA PETICION XML


C_IDEMISOR="3793242"
C_DOCUMENTO="HEFE648"
C_TOKENEMPRESA="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
C_TOKENPWD="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
C_TIPOID="31"

TEXT TO ls_xml TEXTMERGE NOSHOW PRETEXT 0015 FLAGS 1

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:wcf="http://schemas.datacontract.org/2004/07/WcfRecepcionSOAP">
   <soapenv:Header/>
   <soapenv:Body>
      <tem:DescargarXML>
         <!--Optional:-->
         <tem:request>
           <!--Nit del emisor segun tipoIdentifcadorEmisor a consultar: -->
            <wcf:identificadorEmisor><<C_IDEMISOR>></wcf:identificadorEmisor>
            <!--Número de documento a consultar:-->
            <wcf:numeroDocumento><<C_DOCUMENTO>></wcf:numeroDocumento>
            <!--Tipo de documento segun tabla de codigo de tipo identidad
            tipoIdentificador Emisor:-->
            <wcf:tipoIdentificacionemisor><<C_TIPOID>></wcf:tipoIdentificacionemisor>
            <!--Token receptor:-->
            <wcf:tokenEmpresa><<C_TOKENEMPRESA>></wcf:tokenEmpresa>
            <!--Token receptor:-->
            <wcf:tokenPassword><<C_TOKENPWD>></wcf:tokenPassword>
         </tem:request>
      </tem:DescargarXML>
   </soapenv:Body>
</soapenv:Envelope>

ENDTEXT

RETURN ls_xml


Alfonso Ramirez Diaz

unread,
Jul 19, 2022, 4:14:38 PM7/19/22
to Comunidad de Visual Foxpro en Español
Buenas Tardes

Aunque tenemos Chilkat no lo utilizamos para generar el XML, esto lo hacemos directamente con una string memoria y anda super bien y rápido y al terminar simplemente grabamos el string con STRTOFILE()

Acá un poco de código de ejemplo:

*****
** Generar XML Factura Electronica Nacional
*****
LOCAL lcRut

lcRut = IIF(LEN(ALLTRIM(u_rut))=10,SUBSTR(u_rut,1,8),SUBSTR(u_rut,1,7))

** Recuperar Registros
IF This.Recuperar()=.F.
    RETURN
ENDIF

** Texto del Archivo XML
This.texto = ""
This.texto = This.texto + [<?xml version="1.0" encoding="iso-8859-1" ?>] + This.enter
This.texto = This.texto + [<DTE version="1.0">] + This.enter
This.texto = This.texto + [<Documento ID="R] + This.rut_emp + "T" + MISTR(tab_docu.cod_sii) + "_F" + MISTR(MIVAL(vent0000.numero)) + "_R" + lcRut + [">] + This.enter

** Inicio Encabezado del Documento
This.texto = This.texto + "<Encabezado>" + This.enter

** Identificación del Documento Emitido
This.texto = This.texto + "<IdDoc>" + This.enter
This.texto = This.texto + "<TipoDTE>" + MISTR(tab_docu.cod_sii) + "</TipoDTE>" + This.enter
This.texto = This.texto + "<Folio>" + MISTR(MIVAL(vent0000.numero)) + "</Folio>" + This.enter
This.texto = This.texto + "<FchEmis>" + FECHASII(vent0000.fecha) + "</FchEmis>" + This.enter
IF This.tipo_doc="GL"
    This.texto = This.texto + "<TipoDespacho>1</TipoDespacho>" + This.enter
    This.texto = This.texto + "<IndTraslado>" + IIF(vent0000.traslado="S","6","1") + "</IndTraslado>" + This.enter
ENDIF
This.texto = This.texto + "<FmaPago>" + This.fma_pago + "</FmaPago>" + This.enter
This.texto = This.texto + "<MntPagos>" + This.enter
This.texto = This.texto + "<FchPago>" + FECHASII(vent0000.fecha_pago) + "</FchPago>" + This.enter
This.texto = This.texto + "<MntPago>" + MISTR(vent0000.total) + "</MntPago>" + This.enter
This.texto = This.texto + "<GlosaPagos>" + vent0000.cod_pago + " " + ALLTRIM(tab_pago.descrip) + "</GlosaPagos>" + This.enter
This.texto = This.texto + "</MntPagos>" + This.enter
This.texto = This.texto + "<FchVenc>" + FECHASII(vent0000.fecha_pago) + "</FchVenc>" + This.enter
This.texto = This.texto + "</IdDoc>" + This.enter

** Area : Emisor del Documento
This.texto = This.texto + "<Emisor>" + This.enter
This.texto = This.texto + "<RUTEmisor>" + ALLTRIM(u_rut) + "</RUTEmisor>" + This.enter
This.texto = This.texto + "<RznSoc>" + TEXT2UTF(u_empresa) + "</RznSoc>" + This.enter
This.texto = This.texto + "<GiroEmis>" + ALLTRIM(LEFT(TEXT2UTF(u_giro),40)) + "</GiroEmis>" + This.enter
This.texto = This.texto + "<Acteco>" + ALLTRIM(u_actividad) + "</Acteco>" + This.enter
This.texto = This.texto + "<DirOrigen>" + TEXT2UTF(u_direccion) + '</DirOrigen>' + This.enter
This.texto = This.texto + "<CmnaOrigen>" + ALLTRIM(LEFT(u_comuna,20)) + "</CmnaOrigen>" + This.enter
This.texto = This.texto + "<CiudadOrigen>" + ALLTRIM(LEFT(u_ciudad,20)) + "</CiudadOrigen>" + This.enter
IF !EMPTY(vent0000.cod_vend)
    This.texto = This.texto + "<CdgVendedor>" + ALLTRIM(vent0000.cod_vend) + " " + ALLTRIM(This.nom_vend) + "</CdgVendedor>" + This.enter
ENDIF
This.texto = This.texto + "</Emisor>" + This.enter

** Area : Receptor del Documento
This.texto = This.texto + "<Receptor>" + This.enter
This.texto = This.texto + "<RUTRecep>" + This.rut_clie + "</RUTRecep>" + This.enter
This.texto = This.texto + "<RznSocRecep>" + TEXT2UTF(tab_clie.nom_clie) + "</RznSocRecep>" + This.enter
This.texto = This.texto + "<GiroRecep>" + ALLTRIM(LEFT(TEXT2UTF(tab_clie.giro),40)) + "</GiroRecep>" + This.enter
IF !EMPTY(vent0000.nom_comp)
    This.texto = This.texto + "<Contacto>" + TEXT2UTF(vent0000.nom_comp) + "</Contacto>" + This.enter
ENDIF
This.ciudad = ALLTRIM(LEFT(tab_clie.ciudad,20))
This.comuna = ALLTRIM(LEFT(tab_clie.comuna,20))
This.direccion = TEXT2UTF(tab_clie.direccion)

** Cliente con Centro de Costo
IF !EMPTY(vent0000.cargo) AND USED("tab_carg")
    This.ciudad = ALLTRIM(LEFT(SEEKVAL(tab_carg.cod_city,"tab_city","cod_city","descrip"),20))
    This.comuna = ALLTRIM(LEFT(SEEKVAL(tab_carg.cod_comuna,"tab_comu","cod_comuna","descrip"),20))
    This.direccion = TEXT2UTF(tab_carg.direccion)
ENDIF
This.texto = This.texto + "<DirRecep>" + This.direccion + "</DirRecep>" + This.enter
This.texto = This.texto + "<CmnaRecep>" + This.comuna + "</CmnaRecep>" + This.enter
This.texto = This.texto + "<CiudadRecep>" + This.ciudad + "</CiudadRecep>" + This.enter
This.texto = This.texto + "</Receptor>" + This.enter

Francisco

unread,
Jul 20, 2022, 6:05:29 AM7/20/22
to Comunidad de Visual Foxpro en Español
Yo he utilizado la clase XMLPARSER del compañero Victor Espina, la veo fácil de utilizar y genera xml de forma cómoda en forma de objetos.

oParser = CREATEOBJECT("XmlParser")
WITH oParser
    .addNode("ejemplo ","texto")    && <ejemplo>texto</ejemplo>
    .addNode("otro")                    
        WITH ._otro && <otro>
            .addNode("ejemplo1","texto")    && 
        ENDWITH        && </otro>
etc....

William Hernandez

unread,
Jul 20, 2022, 12:35:26 PM7/20/22
to VFP Groups
Al final me he descargado la prueba de 30 días de Chilkat
Y basandome el ejempĺo de VB de como obtener la semilla lo he he hecho en VFP
que a penas empiezo el recorrido.
Descato que ya habia hecho lo de la obtención de semilla con "VFPRestClient" de 

aca el código con Chilkat basado en el de VB.

&&CLEAR
LOCAL Succes AS integer
oHttp = CREATEOBJECT('Chilkat_9_5_0.http')
oXMLResponse = CREATEOBJECT('Chilkat_9_5_0.xml')
oSbResponseBody = CREATEOBJECT('Chilkat_9_5_0.StringBuilder')
oHttp.SetRequestHeader('accept','application/xml')
success = oHttp.QuickGetSb('https://apicert.sii.cl/recursos/v1/boleta.electronica.semilla',oSbResponseBody)
?
?' Obtencion Semilla del SII'
?
?
If NOT (success=1)
    ohttp.LastErrorText
ELSE
oXMLResponse.LoadSb(oSbResponseBody,.T.)
?oXMLResponse.GetXML()
ENDIF
?
?'SII',oXmlResponse.GetAttrValue("xmlns:SII")
?'Semilla',oXmlResponse.GetChildContent("SII:RESP_BODY|SEMILLA")
?'Estado',oxmlResponse.GetChildIntValue("SII:RESP_HDR|ESTADO")
?'--------------------'

--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/d23fc7ab-ea4c-4118-8d64-460f12c0e8f0n%40googlegroups.com.

William Hernandez

unread,
Jul 20, 2022, 4:54:11 PM7/20/22
to VFP Groups
Otro avanzce con las pruebas de chilkat

basándome en ese código no tuve problemas en firmar con un archivo PFX 

saludos

William Hernandez

unread,
Jul 20, 2022, 5:00:18 PM7/20/22
to VFP Groups
Gracias estimado por compartir tu código, yo también ya logre firmar un documento con archivo PFX, creo que vale la pena además tiene muchos usos para otras implementaciones. Creo que vale la pena y no es tan caro si lo vemos que puedes distribuir libremente su DLL solo con tu licencia de desarrollo. 

gracias,



--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.

William Hernandez

unread,
Jul 20, 2022, 5:01:52 PM7/20/22
to VFP Groups
Gracias estimado, muy amable.

saludos

--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.

William Hernandez

unread,
Jul 23, 2022, 11:55:45 AM7/23/22
to Comunidad de Visual Foxpro en Español
Gracias estimado.

William Hernandez

unread,
Jul 28, 2022, 11:40:02 AM7/28/22
to VFP Groups
Estimados

Logre hacer avances con la obtención de semilla y obtención de token al sii chile utilizando chilkat,
aca lo hecho al momento 

CLEAR

?'Token = ' + GetToken(GetSemilla())

FUNCTION GetSemilla
LOCAL Succes AS INTEGER

oHttp = CREATEOBJECT('Chilkat_9_5_0.http')
oXMLResponse = CREATEOBJECT('Chilkat_9_5_0.xml')
oSbResponseBody = CREATEOBJECT('Chilkat_9_5_0.StringBuilder')
&&


oHttp.SetRequestHeader('accept','application/xml')
success = oHttp.QuickGetSb('https://apicert.sii.cl/recursos/v1/boleta.electronica.semilla',oSbResponseBody)
*!* ?
*!* ?' Obtencion Semilla del SII'
*!* ?
*!* ?
IF NOT (success=1)
oHttp.LastErrorText
ELSE
oXMLResponse.LoadSb(oSbResponseBody,.T.)
&&?oXMLResponse.GetXML()
ENDIF
?
?'SII',oXMLResponse.GetAttrValue("xmlns:SII")
?'SEMILLA',oXMLResponse.GetChildContent("SII:RESP_BODY|SEMILLA")
?'Estado',oXMLResponse.GetChildIntValue("SII:RESP_HDR|ESTADO")
&&
RETURN oXMLResponse.GetChildContent("SII:RESP_BODY|SEMILLA")
ENDFUNC


FUNCTION GetToken
PARAMETERS lstrSemilla
&& Ejemplo Original Chilkat
LOCAL loXmlToSign
LOCAL loGen
LOCAL loCert
LOCAL lnSuccess
LOCAL loSbXml
LOCAL loHttp
LOCAL lcUrl
LOCAL loResp
LOCAL loXml
LOCAL lnESTADO
LOCAL lcGLOSA
LOCAL lcTOKEN

* This example assumes the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.

* Create the XML to be signed...
* The following XML is created:
*
*   <?xml version="1.0" encoding="UTF-8"?>
*   <getToken><item><Semilla>030530912644</Semilla></item></getToken>
*
loXmlToSign = CREATEOBJECT('Chilkat_9_5_0.Xml')
loXmlToSign.TAG = "getToken"
loXmlToSign.UpdateChildContent("item|Semilla",lstrSemilla)

&& Aca iba el ejemplo del XML

loGen = CREATEOBJECT('Chilkat_9_5_0.XmlDSigGen')

loGen.SigLocation = "getToken"
loGen.SigLocationMod = 0
loGen.SigNamespacePrefix = ""
loGen.SigNamespaceUri = "http://www.w3.org/2000/09/xmldsig#"
loGen.SignedInfoCanonAlg = "C14N"
loGen.SignedInfoDigestMethod = "sha1"

* -------- Reference 1 --------
loGen.AddSameDocRef("","sha1","","","")

* Provide a certificate + private key. (PFX password is test123)
loCert = CREATEOBJECT('Chilkat_9_5_0.Cert')
lnSuccess = loCert.LoadPfxFile("Ruta + nombre de su certificado.pfx","clave certificado")
IF (lnSuccess <> 1) THEN
? loCert.LastErrorText
RELEASE loXmlToSign
RELEASE loGen
RELEASE loCert
CANCEL
ENDIF

loGen.SetX509Cert(loCert,1)

loGen.KeyInfoType = "X509Data+KeyValue"
loGen.X509Type = "Certificate"

* Load XML to be signed...
loSbXml = CREATEOBJECT('Chilkat_9_5_0.StringBuilder')
loXmlToSign.GetXmlSb(loSbXml)

loGen.Behaviors = "IndentedSignature"

* Sign the XML...
lnSuccess = loGen.CreateXmlDSigSb(loSbXml)
IF (lnSuccess <> 1) THEN
? loGen.LastErrorText
RELEASE loXmlToSign
RELEASE loGen
RELEASE loCert
RELEASE loSbXml
CANCEL
ENDIF

&&? loSbXml.GetAsString()

* Send the POST with signed XML in the request body
loHttp = CREATEOBJECT('Chilkat_9_5_0.Http')

loHttp.SetRequestHeader("accept","application/xml")

* Use one of the following domains, depending on the environment:
* apicert.sii.cl  - Certification Environment
* api.sii.cl      - Production Environment
lcUrl = "https://apicert.sii.cl/recursos/v1/boleta.electronica.token"
loResp = loHttp.PostXml(lcUrl,loSbXml.GetAsString(),"utf-8")
IF (loHttp.LastMethodSuccess <> 1) THEN
? loHttp.LastErrorText
RELEASE loXmlToSign
RELEASE loGen
RELEASE loCert
RELEASE loSbXml
RELEASE loHttp
CANCEL
ENDIF

* Examine the response status code:
?"*********************"
?"response status code = " + STR(loResp.StatusCode)
?"*********************"
?


* Examine the response body:
?"*********************"
?"response body: " + (loResp.BodyStr)
?"*********************"
?
* We expect a response like this:
*   <?xml version="1.0" encoding="UTF-8"?>
*   <SII:RESPUESTA xmlns:SII="http://www.sii.cl/XMLSchema">
*   <SII:RESP_HDR>
*   <ESTADO>00</ESTADO>
*   <GLOSA>Token Creado</GLOSA>
*   </SII:RESP_HDR>
*   <SII:RESP_BODY>
*   <TOKEN>XAuSbYXiNh9Ik</TOKEN>
*   </SII:RESP_BODY>
*   </SII:RESPUESTA>

* Parse the XML response.
loXml = CREATEOBJECT('Chilkat_9_5_0.Xml')
loXml.LOADXML(loResp.BodyStr)
lnESTADO = loXml.GetChildIntValue("SII:RESP_HDR|ESTADO")
lcGLOSA = loXml.GetChildContent("SII:RESP_HDR|GLOSA")
lcTOKEN = loXml.GetChildContent("SII:RESP_BODY|TOKEN")
&&
gnErrFile = FCREATE('xml\respuesta_getTToken.xml')
=FWRITE(gnErrFile,loSbXml.GetAsString())
=FCLOSE(gnErrFile )
&&

RELEASE loResp

RELEASE loXmlToSign
RELEASE loGen
RELEASE loCert
RELEASE loSbXml
RELEASE loHttp
RELEASE loXml
RETURN lcToken
ENDFUNC


--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages