Lua
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/billConsultServiceChilkat Lua Downloads
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")