Xbase++ Requires Chilkat v11.0.0+
Xbase++
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
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()