Objective-C
Objective-C
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 Objective-C Downloads
#import <CkoHttp.h>
#import <CkoXml.h>
#import <NSString.h>
#import <CkoHttpResponse.h>
BOOL success = NO;
// 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.
// --------------------------------------------------------------------------------
CkoHttp *http = [[CkoHttp alloc] init];
// <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>
//
CkoXml *xml = [[CkoXml alloc] init];
xml.Tag = @"soapenv:Envelope";
[xml AddAttribute: @"xmlns:ser" value: @"http://service.sunat.gob.pe"];
[xml AddAttribute: @"xmlns:soapenv" value: @"http://schemas.xmlsoap.org/soap/envelope/"];
[xml AddAttribute: @"xmlns:wsse" value: @"http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"];
[xml UpdateChildContent: @"soapenv:Header|wsse:Security|wsse:UsernameToken|wsse:Username" value: @"MY_USERNAME"];
[xml UpdateChildContent: @"soapenv:Header|wsse:Security|wsse:UsernameToken|wsse:Password" value: @"MY_PASSWORD"];
[xml UpdateChildContent: @"soapenv:Body|ser:getStatus|rucComprobante" value: @"99999999999"];
[xml UpdateChildContent: @"soapenv:Body|ser:getStatus|tipoComprobante" value: @"01"];
[xml UpdateChildContent: @"soapenv:Body|ser:getStatus|serieComprobante" value: @"F001"];
[xml UpdateChildContent: @"soapenv:Body|ser:getStatus|numeroComprobante" value: @"55555"];
NSString *strXml = [xml GetXml];
[http SetRequestHeader: @"SOAPAction" value: @"urn:getStatusCdr"];
NSString *endPoint = @"https://e-factura.sunat.gob.pe/ol-it-wsconscpegem/billConsultService";
CkoHttpResponse *resp = [[CkoHttpResponse alloc] init];
success = [http HttpStr: @"POST" url: endPoint bodyStr: strXml charset: @"utf-8" contentType: @"text/xml" response: resp];
if (success == NO) {
NSLog(@"%@",http.LastErrorText);
return;
}
int statusCode = [resp.StatusCode intValue];
if (statusCode != 200) {
NSLog(@"%@%d",@"Non-success status code: ",statusCode);
NSLog(@"%@%@",@"Response header: ",resp.Header);
NSLog(@"%@%@",@"Response body: ",resp.BodyStr);
NSLog(@"%@",@"Unsuccessful.");
return;
}
CkoXml *xmlResp = [[CkoXml alloc] init];
[xmlResp LoadXml: resp.BodyStr];
NSLog(@"%@",[xmlResp GetXml]);
// 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...
NSString *S_Envelope_xmlns_S = [xml GetAttrValue: @"xmlns:S"];
NSString *ns0_getStatusResponse_xmlns_ns0 = [xml ChilkatPath: @"S:Body|ns0:getStatusResponse|(xmlns:ns0)"];
statusCode = [[xml GetChildIntValue: @"S:Body|ns0:getStatusResponse|status|statusCode"] intValue];
NSString *statusMessage = [xml GetChildContent: @"S:Body|ns0:getStatusResponse|status|statusMessage"];