Sample code for 30+ languages & platforms
Go

Banco Inter OAuth2 Client Credentials

Generate an OAuth2 access token needed to consume the Inter APIs.

Chilkat Go Downloads

Go
    success := false

    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    http := chilkat.NewHttp()

    // First load the certificate and private key, and set as the HTTP object's client certificate.
    cert := chilkat.NewCert()
    success = cert.LoadFromFile("<nome arquivo certificado>.crt")
    if success == false {
        fmt.Println(cert.LastErrorText())
        http.DisposeHttp()
        cert.DisposeCert()
        return
    }

    bdPrivKey := chilkat.NewBinData()
    success = bdPrivKey.LoadFile("<nome arquivo chave privada>.key")
    if success == false {
        fmt.Println("Failed to load <nome")
        http.DisposeHttp()
        cert.DisposeCert()
        bdPrivKey.DisposeBinData()
        return
    }

    privKey := chilkat.NewPrivateKey()
    success = privKey.LoadAnyFormat(bdPrivKey,"")
    if success == false {
        fmt.Println(privKey.LastErrorText())
        http.DisposeHttp()
        cert.DisposeCert()
        bdPrivKey.DisposeBinData()
        privKey.DisposePrivateKey()
        return
    }

    success = cert.SetPrivateKey(privKey)
    if success == false {
        fmt.Println(cert.LastErrorText())
        http.DisposeHttp()
        cert.DisposeCert()
        bdPrivKey.DisposeBinData()
        privKey.DisposePrivateKey()
        return
    }

    success = http.SetSslClientCert(cert)
    if success == false {
        fmt.Println(http.LastErrorText())
        http.DisposeHttp()
        cert.DisposeCert()
        bdPrivKey.DisposeBinData()
        privKey.DisposePrivateKey()
        return
    }

    req := chilkat.NewHttpRequest()
    req.SetHttpVerb("POST")
    req.SetPath("/oauth/v2/token")
    req.SetContentType("application/x-www-form-urlencoded")
    req.AddParam("grant_type","client_credentials")
    // Requested scopes in OAuth2 are typically SPACE separated.
    req.AddParam("scope","boleto-cobranca.read boleto-cobranca.write")
    req.AddHeader("accept","application/json")

    resp := chilkat.NewHttpResponse()
    success = http.HttpReq("https://cdpj.partners.bancointer.com.br/oauth/v2/token",req,resp)
    if success == false {
        fmt.Println(http.LastErrorText())
        http.DisposeHttp()
        cert.DisposeCert()
        bdPrivKey.DisposeBinData()
        privKey.DisposePrivateKey()
        req.DisposeHttpRequest()
        resp.DisposeHttpResponse()
        return
    }

    jResp := chilkat.NewJsonObject()
    resp.GetBodyJson(jResp)
    jResp.SetEmitCompact(false)

    fmt.Println("Response Body:")
    fmt.Println(*jResp.Emit())

    respStatusCode := resp.StatusCode()
    fmt.Println("Response Status Code = ", respStatusCode)
    if respStatusCode >= 400 {
        fmt.Println("Response Header:")
        fmt.Println(resp.Header())
        fmt.Println("Failed.")
        http.DisposeHttp()
        cert.DisposeCert()
        bdPrivKey.DisposeBinData()
        privKey.DisposePrivateKey()
        req.DisposeHttpRequest()
        resp.DisposeHttpResponse()
        jResp.DisposeJsonObject()
        return
    }

    success = jResp.WriteFile("qa_data/tokens/banco_inter_client_credentials.json")
    if success == false {
        fmt.Println("Failed to save JSON access token file.")
        http.DisposeHttp()
        cert.DisposeCert()
        bdPrivKey.DisposeBinData()
        privKey.DisposePrivateKey()
        req.DisposeHttpRequest()
        resp.DisposeHttpResponse()
        jResp.DisposeJsonObject()
        return
    }

    fmt.Println("Success.")

    http.DisposeHttp()
    cert.DisposeCert()
    bdPrivKey.DisposeBinData()
    privKey.DisposePrivateKey()
    req.DisposeHttpRequest()
    resp.DisposeHttpResponse()
    jResp.DisposeJsonObject()