Sample code for 30+ languages & platforms
AutoIt

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/billConsultService

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

;  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.
;  --------------------------------------------------------------------------------

$oHttp = ObjCreate("Chilkat.Http")

;  <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> 
;  

$oXml = ObjCreate("Chilkat.Xml")
$oXml.Tag = "soapenv:Envelope"
$oXml.AddAttribute("xmlns:ser","http://service.sunat.gob.pe")
$oXml.AddAttribute("xmlns:soapenv","http://schemas.xmlsoap.org/soap/envelope/")
$oXml.AddAttribute("xmlns:wsse","http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd")
$oXml.UpdateChildContent "soapenv:Header|wsse:Security|wsse:UsernameToken|wsse:Username","MY_USERNAME"
$oXml.UpdateChildContent "soapenv:Header|wsse:Security|wsse:UsernameToken|wsse:Password","MY_PASSWORD"
$oXml.UpdateChildContent "soapenv:Body|ser:getStatus|rucComprobante","99999999999"
$oXml.UpdateChildContent "soapenv:Body|ser:getStatus|tipoComprobante","01"
$oXml.UpdateChildContent "soapenv:Body|ser:getStatus|serieComprobante","F001"
$oXml.UpdateChildContent "soapenv:Body|ser:getStatus|numeroComprobante","55555"

Local $strXml = $oXml.GetXml()

$oHttp.SetRequestHeader "SOAPAction","urn:getStatusCdr"

Local $sEndPoint = "https://e-factura.sunat.gob.pe/ol-it-wsconscpegem/billConsultService"

$oResp = ObjCreate("Chilkat.HttpResponse")
$bSuccess = $oHttp.HttpStr("POST",$sEndPoint,$strXml,"utf-8","text/xml",$oResp)
If ($bSuccess = False) Then
    ConsoleWrite($oHttp.LastErrorText & @CRLF)
    Exit
EndIf

Local $iStatusCode = $oResp.StatusCode
If ($iStatusCode <> 200) Then
    ConsoleWrite("Non-success status code: " & $iStatusCode & @CRLF)
    ConsoleWrite("Response header: " & $oResp.Header & @CRLF)
    ConsoleWrite("Response body: " & $oResp.BodyStr & @CRLF)
    ConsoleWrite("Unsuccessful." & @CRLF)
    Exit
EndIf

$oXmlResp = ObjCreate("Chilkat.Xml")
$oXmlResp.LoadXml($oResp.BodyStr)

ConsoleWrite($oXmlResp.GetXml() & @CRLF)

;  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...
Local $sS_Envelope_xmlns_S = $oXml.GetAttrValue("xmlns:S")
Local $sNs0_getStatusResponse_xmlns_ns0 = $oXml.ChilkatPath("S:Body|ns0:getStatusResponse|(xmlns:ns0)")
$iStatusCode = $oXml.GetChildIntValue("S:Body|ns0:getStatusResponse|status|statusCode")
Local $statusMessage = $oXml.GetChildContent("S:Body|ns0:getStatusResponse|status|statusMessage")