Sample code for 30+ languages & platforms
Lua

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 Lua Downloads

Lua
local chilkat = require("chilkat")

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

local http = chilkat.Http.new()

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

local xml = chilkat.Xml.new()
xml.tag = "soapenv:Envelope"
xml:add_attribute("xmlns:ser", "http://service.sunat.gob.pe")
xml:add_attribute("xmlns:soapenv", "http://schemas.xmlsoap.org/soap/envelope/")
xml:add_attribute("xmlns:wsse", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd")
xml:update_child_content("soapenv:Header|wsse:Security|wsse:UsernameToken|wsse:Username", "MY_USERNAME")
xml:update_child_content("soapenv:Header|wsse:Security|wsse:UsernameToken|wsse:Password", "MY_PASSWORD")
xml:update_child_content("soapenv:Body|ser:getStatus|rucComprobante", "99999999999")
xml:update_child_content("soapenv:Body|ser:getStatus|tipoComprobante", "01")
xml:update_child_content("soapenv:Body|ser:getStatus|serieComprobante", "F001")
xml:update_child_content("soapenv:Body|ser:getStatus|numeroComprobante", "55555")

local strXml = xml:get_xml()

http:set_request_header("SOAPAction", "urn:getStatusCdr")

local endPoint = "https://e-factura.sunat.gob.pe/ol-it-wsconscpegem/billConsultService"

local resp = chilkat.HttpResponse.new()
local success = http:http_str("POST", endPoint, strXml, "utf-8", "text/xml", resp)
if not success then
    print(http.last_error_text)
    return
end

local statusCode = resp.status_code
if statusCode ~= 200 then
    print("Non-success status code: " .. statusCode)
    print("Response header: " .. resp.header)
    print("Response body: " .. resp.body_str)
    print("Unsuccessful.")
    return
end

local xmlResp = chilkat.Xml.new()
xmlResp:load_xml(resp.body_str)

print(xmlResp:get_xml())

-- 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 S_Envelope_xmlns_S = xml:get_attr_value("xmlns:S")
local ns0_getStatusResponse_xmlns_ns0 = xml:chilkat_path("S:Body|ns0:getStatusResponse|(xmlns:ns0)")
statusCode = xml:get_child_int_value("S:Body|ns0:getStatusResponse|status|statusCode")
local statusMessage = xml:get_child_content("S:Body|ns0:getStatusResponse|status|statusMessage")