Tcl
Tcl
SOAP e-factura.sunat.gob.pe getStatusCdr
See more HTTP Misc Examples
Make a SOAP call to https://e-factura.sunat.gob.pe/ol-it-wsconscpegem/billConsultServiceChilkat Tcl Downloads
load ./chilkat.dll
set success 0
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
# --------------------------------------------------------------------------------
# Also see Chilkat's Online WSDL Code Generator
# to generate code and SOAP Request and Response XML for each operation in a WSDL.
# --------------------------------------------------------------------------------
set http [new_CkHttp]
# <soapenv:Envelope xmlns:ser="http://service.sunat.gob.pe"
# xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
# xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
# <soapenv:Header>
# <wsse:Security>
# <wsse:UsernameToken>
# <wsse:Username>MY_USERNAME</wsse:Username>
# <wsse:Password>MY_PASSWORD</wsse:Password>
# </wsse:UsernameToken>
# </wsse:Security>
# </soapenv:Header>
# <soapenv:Body>
# <ser:getStatus>
# <rucComprobante>99999999999</rucComprobante>
# <tipoComprobante>01</tipoComprobante>
# <serieComprobante>F001</serieComprobante>
# <numeroComprobante>55555</numeroComprobante>
# </ser:getStatus>
# </soapenv:Body>
# </soapenv:Envelope>
#
set xml [new_CkXml]
CkXml_put_Tag $xml "soapenv:Envelope"
CkXml_AddAttribute $xml "xmlns:ser" "http://service.sunat.gob.pe"
CkXml_AddAttribute $xml "xmlns:soapenv" "http://schemas.xmlsoap.org/soap/envelope/"
CkXml_AddAttribute $xml "xmlns:wsse" "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
CkXml_UpdateChildContent $xml "soapenv:Header|wsse:Security|wsse:UsernameToken|wsse:Username" "MY_USERNAME"
CkXml_UpdateChildContent $xml "soapenv:Header|wsse:Security|wsse:UsernameToken|wsse:Password" "MY_PASSWORD"
CkXml_UpdateChildContent $xml "soapenv:Body|ser:getStatus|rucComprobante" "99999999999"
CkXml_UpdateChildContent $xml "soapenv:Body|ser:getStatus|tipoComprobante" "01"
CkXml_UpdateChildContent $xml "soapenv:Body|ser:getStatus|serieComprobante" "F001"
CkXml_UpdateChildContent $xml "soapenv:Body|ser:getStatus|numeroComprobante" "55555"
set strXml [CkXml_getXml $xml]
CkHttp_SetRequestHeader $http "SOAPAction" "urn:getStatusCdr"
set endPoint "https://e-factura.sunat.gob.pe/ol-it-wsconscpegem/billConsultService"
set resp [new_CkHttpResponse]
set success [CkHttp_HttpStr $http "POST" $endPoint $strXml "utf-8" "text/xml" $resp]
if {$success == 0} then {
puts [CkHttp_lastErrorText $http]
delete_CkHttp $http
delete_CkXml $xml
delete_CkHttpResponse $resp
exit
}
set statusCode [CkHttpResponse_get_StatusCode $resp]
if {$statusCode != 200} then {
puts "Non-success status code: $statusCode"
puts "Response header: [CkHttpResponse_header $resp]"
puts "Response body: [CkHttpResponse_bodyStr $resp]"
puts "Unsuccessful."
delete_CkHttp $http
delete_CkXml $xml
delete_CkHttpResponse $resp
exit
}
set xmlResp [new_CkXml]
CkXml_LoadXml $xmlResp [CkHttpResponse_bodyStr $resp]
puts [CkXml_getXml $xmlResp]
# A sample response:
# <?xml version="1.0" encoding="UTF-8"?>
# <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
# <S:Body>
# <ns0:getStatusResponse xmlns:ns0="http://service.sunat.gob.pe">
# <status>
# <statusCode>0001</statusCode>
# <statusMessage>El comprobante existe y est� aceptado.</statusMessage>
# </status>
# </ns0:getStatusResponse>
# </S:Body>
# </S:Envelope>
#
# Parse the response...
set S_Envelope_xmlns_S [CkXml_getAttrValue $xml "xmlns:S"]
set ns0_getStatusResponse_xmlns_ns0 [CkXml_chilkatPath $xml "S:Body|ns0:getStatusResponse|(xmlns:ns0)"]
set statusCode [CkXml_GetChildIntValue $xml "S:Body|ns0:getStatusResponse|status|statusCode"]
set statusMessage [CkXml_getChildContent $xml "S:Body|ns0:getStatusResponse|status|statusMessage"]
delete_CkHttp $http
delete_CkXml $xml
delete_CkHttpResponse $resp
delete_CkXml $xmlResp