Objective-C
Objective-C
Send POST to Bradesco Platform with Billing Ticket for Registration
See more HTTP Misc Examples
Sends a POST request to the Bradesco platform containing the JSON data of the Billing Ticket for registration.Chilkat Objective-C Downloads
#import <CkoJsonObject.h>
#import <CkoCert.h>
#import <CkoCrypt2.h>
#import <NSString.h>
#import <CkoHttpRequest.h>
#import <CkoHttp.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.
// First build the JSON containing the data to be sent.
// {
// "nuCPFCNPJ":"12668",
// "filialCPFCNPJ":"1",
// "ctrlCPFCNPJ":"59",
// "cdTipoAcesso":"2",
// "idProduto":"9",
// "nuNegociacao":"262200000000005577",
// "nuCliente":"SEU_NUM_CLIENTE",
// "dtEmissaoTitulo":"21.09.2016",
// "dtVencimentoTitulo":"21.09.2016",
// "vlNominalTitulo":"888888",
// "cdEspecieTitulo":"2",
// "nomePagador":"NOME DO PAGADOR",
// "logradouroPagador":"ENDERECO DO PAGADOR",
// "nuLogradouroPagador":"1145",
// "complementoLogradouroPagador":"APTO 34",
// "cepPagador":"5588",
// "complementoCepPagador":"1",
// "bairroPagador":"BAIRRO PAGADOR",
// "municipioPagador":"MUNICIPIO PAGADOR",
// "ufPagador":"SP",
// "cdIndCpfcnpjPagador":"2",
// "nuCpfcnpjPagador":"12668000159",
// "endEletronicoPagador":"PAGADOR@BRADESCO.COM.BR",
// "nomeSacadorAvalista":"NOME SACADOR AVALISTA",
// "logradouroSacadorAvalista":"ENDERECO SACADOR AVALISTA",
// "nuLogradouroSacadorAvalista":"5555",
// "complementoLogradouroSacadorAvalista":"BLOCO 23",
// "cepSacadorAvalista":"6182",
// "complementoCepSacadorAvalista":"160",
// "bairroSacadorAvalista":"BAIRRO SACADOR AVALISTA",
// "municipioSacadorAvalista":"MUNICIPIO SACADOR AVALISTA",
// "ufSacadorAvalista":"SP",
// "cdIndCpfcnpjSacadorAvalista":"2",
// "nuCpfcnpjSacadorAvalista":"12668000159",
// "endEletronicoSacadorAvalista":"SACADOR@BRADESCO.COM.BR",
// }
//
CkoJsonObject *json = [[CkoJsonObject alloc] init];
[json UpdateString: @"nuCPFCNPJ" value: @"12668"];
[json UpdateString: @"filialCPFCNPJ" value: @"1"];
[json UpdateString: @"ctrlCPFCNPJ" value: @"59"];
[json UpdateString: @"cdTipoAcesso" value: @"2"];
[json UpdateString: @"idProduto" value: @"9"];
[json UpdateString: @"nuNegociacao" value: @"262200000000005577"];
[json UpdateString: @"nuCliente" value: @"SEU_NUM_CLIENTE"];
[json UpdateString: @"dtEmissaoTitulo" value: @"21.09.2016"];
[json UpdateString: @"dtVencimentoTitulo" value: @"21.09.2016"];
[json UpdateString: @"vlNominalTitulo" value: @"888888"];
[json UpdateString: @"cdEspecieTitulo" value: @"2"];
[json UpdateString: @"nomePagador" value: @"NOME DO PAGADOR"];
[json UpdateString: @"logradouroPagador" value: @"ENDERECO DO PAGADOR"];
[json UpdateString: @"nuLogradouroPagador" value: @"1145"];
[json UpdateString: @"complementoLogradouroPagador" value: @"APTO 34"];
[json UpdateString: @"cepPagador" value: @"5588"];
[json UpdateString: @"complementoCepPagador" value: @"1"];
[json UpdateString: @"bairroPagador" value: @"BAIRRO PAGADOR"];
[json UpdateString: @"municipioPagador" value: @"MUNICIPIO PAGADOR"];
[json UpdateString: @"ufPagador" value: @"SP"];
[json UpdateString: @"cdIndCpfcnpjPagador" value: @"2"];
[json UpdateString: @"nuCpfcnpjPagador" value: @"12668000159"];
[json UpdateString: @"endEletronicoPagador" value: @"PAGADOR@BRADESCO.COM.BR"];
[json UpdateString: @"nomeSacadorAvalista" value: @"NOME SACADOR AVALISTA"];
[json UpdateString: @"logradouroSacadorAvalista" value: @"ENDERECO SACADOR AVALISTA"];
[json UpdateString: @"nuLogradouroSacadorAvalista" value: @"5555"];
[json UpdateString: @"complementoLogradouroSacadorAvalista" value: @"BLOCO 23"];
[json UpdateString: @"cepSacadorAvalista" value: @"6182"];
[json UpdateString: @"complementoCepSacadorAvalista" value: @"160"];
[json UpdateString: @"bairroSacadorAvalista" value: @"BAIRRO SACADOR AVALISTA"];
[json UpdateString: @"municipioSacadorAvalista" value: @"MUNICIPIO SACADOR AVALISTA"];
[json UpdateString: @"ufSacadorAvalista" value: @"SP"];
[json UpdateString: @"cdIndCpfcnpjSacadorAvalista" value: @"2"];
[json UpdateString: @"nuCpfcnpjSacadorAvalista" value: @"12668000159"];
[json UpdateString: @"endEletronicoSacadorAvalista" value: @"SACADOR@BRADESCO.COM.BR"];
// Load out PFX file
CkoCert *cert = [[CkoCert alloc] init];
success = [cert LoadPfxFile: @"qa_data/pfx/cert_test123.pfx" password: @"test123"];
if (success == NO) {
NSLog(@"%@",cert.LastErrorText);
return;
}
CkoCrypt2 *crypt = [[CkoCrypt2 alloc] init];
success = [crypt SetSigningCert: cert];
if (success == NO) {
NSLog(@"%@",crypt.LastErrorText);
return;
}
// Use SHA-256 within the signing..
crypt.HashAlgorithm = @"sha256";
// Use no authenticated attributes
crypt.SigningAttributes = @"{}";
json.EmitCompact = YES;
NSString *sigBase64 = [crypt OpaqueSignStringENC: [json Emit]];
if (crypt.LastMethodSuccess == NO) {
NSLog(@"%@",crypt.LastErrorText);
return;
}
// Next, we need to send a POST to the following URL where the body of the POST
// contains the binary PKCS7 signature (which embeds the JSON).
NSString *url = @"https://cobranca.bradesconetempresa.b.br/ibpjregistrotitulows/registrotitulohomologacao";
CkoHttpRequest *req = [[CkoHttpRequest alloc] init];
req.HttpVerb = @"POST";
// This is strange because apparently the server wants a "text/xml" Content-Type,
// but the content in the body is not actually XML, it's binary PKCS7.
req.ContentType = @"text/xml";
[req LoadBodyFromString: sigBase64 charset: @"utf-8"];
// We don't actually pass the URL, we set the path here, and the domain is passed below..
req.Path = @"/ibpjregistrotitulows/registrotitulohomologacao";
CkoHttp *http = [[CkoHttp alloc] init];
CkoHttpResponse *resp = [[CkoHttpResponse alloc] init];
success = [http HttpSReq: @"cobranca.bradesconetempresa.b.br" port: [NSNumber numberWithInt: 443] ssl: YES request: req response: resp];
if (success == NO) {
NSLog(@"%@",http.LastErrorText);
return;
}
NSLog(@"%@%d",@"Response status code: ",[resp.StatusCode intValue]);
NSLog(@"%@",@"Response body:");
NSLog(@"%@",resp.BodyStr);