Sample code for 30+ languages & platforms
Visual FoxPro

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 Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loJson
LOCAL loCert
LOCAL loCrypt
LOCAL lcSigBase64
LOCAL lcUrl
LOCAL loReq
LOCAL loHttp
LOCAL loResp

lnSuccess = 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",
* }
* 

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

* Load out PFX file 
loCert = CreateObject('Chilkat.Cert')
lnSuccess = loCert.LoadPfxFile("qa_data/pfx/cert_test123.pfx","test123")
IF (lnSuccess = 0) THEN
    ? loCert.LastErrorText
    RELEASE loJson
    RELEASE loCert
    CANCEL
ENDIF

loCrypt = CreateObject('Chilkat.Crypt2')
lnSuccess = loCrypt.SetSigningCert(loCert)
IF (lnSuccess = 0) THEN
    ? loCrypt.LastErrorText
    RELEASE loJson
    RELEASE loCert
    RELEASE loCrypt
    CANCEL
ENDIF

* Use SHA-256 within the signing..
loCrypt.HashAlgorithm = "sha256"

* Use no authenticated attributes
loCrypt.SigningAttributes = "{}"

loJson.EmitCompact = 1
lcSigBase64 = loCrypt.OpaqueSignStringENC(loJson.Emit())
IF (loCrypt.LastMethodSuccess = 0) THEN
    ? loCrypt.LastErrorText
    RELEASE loJson
    RELEASE loCert
    RELEASE loCrypt
    CANCEL
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).
lcUrl = "https://cobranca.bradesconetempresa.b.br/ibpjregistrotitulows/registrotitulohomologacao"

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

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

loHttp = CreateObject('Chilkat.Http')
loResp = CreateObject('Chilkat.HttpResponse')
lnSuccess = loHttp.HttpSReq("cobranca.bradesconetempresa.b.br",443,1,loReq,loResp)
IF (lnSuccess = 0) THEN
    ? loHttp.LastErrorText
    RELEASE loJson
    RELEASE loCert
    RELEASE loCrypt
    RELEASE loReq
    RELEASE loHttp
    RELEASE loResp
    CANCEL
ENDIF

? "Response status code: " + STR(loResp.StatusCode)
? "Response body:"
? loResp.BodyStr

RELEASE loJson
RELEASE loCert
RELEASE loCrypt
RELEASE loReq
RELEASE loHttp
RELEASE loResp