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")