Sample code for 30+ languages & platforms
Xbase++ Requires Chilkat v11.0.0+

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 Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oJson
LOCAL oCert
LOCAL oCrypt
LOCAL cSigBase64
LOCAL cUrl
LOCAL oReq
LOCAL oHttp
LOCAL oResp

nSuccess := 0

//  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",
//  }
//  

oJson := CreateObject("Chilkat.JsonObject")
oJson:UpdateString("nuCPFCNPJ", "12668")
oJson:UpdateString("filialCPFCNPJ", "1")
oJson:UpdateString("ctrlCPFCNPJ", "59")
oJson:UpdateString("cdTipoAcesso", "2")
oJson:UpdateString("idProduto", "9")
oJson:UpdateString("nuNegociacao", "262200000000005577")
oJson:UpdateString("nuCliente", "SEU_NUM_CLIENTE")
oJson:UpdateString("dtEmissaoTitulo", "21.09.2016")
oJson:UpdateString("dtVencimentoTitulo", "21.09.2016")
oJson:UpdateString("vlNominalTitulo", "888888")
oJson:UpdateString("cdEspecieTitulo", "2")
oJson:UpdateString("nomePagador", "NOME DO PAGADOR")
oJson:UpdateString("logradouroPagador", "ENDERECO DO PAGADOR")
oJson:UpdateString("nuLogradouroPagador", "1145")
oJson:UpdateString("complementoLogradouroPagador", "APTO 34")
oJson:UpdateString("cepPagador", "5588")
oJson:UpdateString("complementoCepPagador", "1")
oJson:UpdateString("bairroPagador", "BAIRRO PAGADOR")
oJson:UpdateString("municipioPagador", "MUNICIPIO PAGADOR")
oJson:UpdateString("ufPagador", "SP")
oJson:UpdateString("cdIndCpfcnpjPagador", "2")
oJson:UpdateString("nuCpfcnpjPagador", "12668000159")
oJson:UpdateString("endEletronicoPagador", "PAGADOR@BRADESCO.COM.BR")
oJson:UpdateString("nomeSacadorAvalista", "NOME SACADOR AVALISTA")
oJson:UpdateString("logradouroSacadorAvalista", "ENDERECO SACADOR AVALISTA")
oJson:UpdateString("nuLogradouroSacadorAvalista", "5555")
oJson:UpdateString("complementoLogradouroSacadorAvalista", "BLOCO 23")
oJson:UpdateString("cepSacadorAvalista", "6182")
oJson:UpdateString("complementoCepSacadorAvalista", "160")
oJson:UpdateString("bairroSacadorAvalista", "BAIRRO SACADOR AVALISTA")
oJson:UpdateString("municipioSacadorAvalista", "MUNICIPIO SACADOR AVALISTA")
oJson:UpdateString("ufSacadorAvalista", "SP")
oJson:UpdateString("cdIndCpfcnpjSacadorAvalista", "2")
oJson:UpdateString("nuCpfcnpjSacadorAvalista", "12668000159")
oJson:UpdateString("endEletronicoSacadorAvalista", "SACADOR@BRADESCO.COM.BR")

//  Load out PFX file 
oCert := CreateObject("Chilkat.Cert")
nSuccess := oCert:LoadPfxFile("qa_data/pfx/cert_test123.pfx", "test123")
IF (nSuccess == 0)
    ? oCert:LastErrorText
    oJson:destroy()
    oCert:destroy()
    RETURN
ENDIF

oCrypt := CreateObject("Chilkat.Crypt2")
nSuccess := oCrypt:SetSigningCert(oCert)
IF (nSuccess == 0)
    ? oCrypt:LastErrorText
    oJson:destroy()
    oCert:destroy()
    oCrypt:destroy()
    RETURN
ENDIF

//  Use SHA-256 within the signing..
oCrypt:HashAlgorithm := "sha256"

//  Use no authenticated attributes
oCrypt:SigningAttributes := "{}"

oJson:EmitCompact := 1
cSigBase64 := oCrypt:OpaqueSignStringENC(oJson:Emit())
IF (oCrypt:LastMethodSuccess == 0)
    ? oCrypt:LastErrorText
    oJson:destroy()
    oCert:destroy()
    oCrypt:destroy()
    RETURN
ENDIF

//  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).
cUrl := "https://cobranca.bradesconetempresa.b.br/ibpjregistrotitulows/registrotitulohomologacao"

oReq := CreateObject("Chilkat.HttpRequest")
oReq: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.
oReq:ContentType := "text/xml"
oReq:LoadBodyFromString(cSigBase64, "utf-8")

//  We don't actually pass the URL, we set the path here, and the domain is passed below..
oReq:Path := "/ibpjregistrotitulows/registrotitulohomologacao"

oHttp := CreateObject("Chilkat.Http")
oResp := CreateObject("Chilkat.HttpResponse")
nSuccess := oHttp:HttpSReq("cobranca.bradesconetempresa.b.br", 443, 1, oReq, oResp)
IF (nSuccess == 0)
    ? oHttp:LastErrorText
    oJson:destroy()
    oCert:destroy()
    oCrypt:destroy()
    oReq:destroy()
    oHttp:destroy()
    oResp:destroy()
    RETURN
ENDIF

? "Response status code: " + Str(oResp:StatusCode)
? "Response body:"
? oResp:BodyStr

oJson:destroy()
oCert:destroy()
oCrypt:destroy()
oReq:destroy()
oHttp:destroy()
oResp:destroy()