Xbase++
Xbase++
ABN AMRO OAuth2 Client Credentials Authentication
See more ABN AMRO Examples
Demonstrates how to obtain an access token for an ABN AMRO online API using OAuth2 with the Client Credentials flow.Chilkat Xbase++ Downloads
LOCAL nSuccess
LOCAL oCert
LOCAL oBdKey
LOCAL oPrivKey
LOCAL oHttp
LOCAL oReq
LOCAL oResp
LOCAL oJson
nSuccess := 0
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// This example sends the following CURL request:
// curl -X POST -k https://auth-sandbox.connect.abnamro.com:8443/as/token.oauth2 \
// -v \
// --cert TPPCertificate.crt \
// --key TPPprivateKey.key \
// -H 'Cache-Control: no-cache' \
// -H 'Content-Type: application/x-www-form-urlencoded' \
// -d 'grant_type=client_credentials&client_id=TPP_test&scope=psd2:payment:sepa:write psd2:payment:sepa:read'
oCert := CreateObject("Chilkat.Cert")
nSuccess := oCert:LoadFromFile("qa_data/certs/TPPCertificate.cer")
IF (nSuccess == 0)
? oCert:LastErrorText
oCert:destroy()
RETURN
ENDIF
oBdKey := CreateObject("Chilkat.BinData")
nSuccess := oBdKey:LoadFile("qa_data/certs/TPPprivateKey.key")
oPrivKey := CreateObject("Chilkat.PrivateKey")
nSuccess := oPrivKey:LoadAnyFormat(oBdKey, "passwordIfNeeded")
IF (nSuccess == 0)
? oPrivKey:LastErrorText
oCert:destroy()
oBdKey:destroy()
oPrivKey:destroy()
RETURN
ENDIF
nSuccess := oCert:SetPrivateKey(oPrivKey)
IF (nSuccess == 0)
? oCert:LastErrorText
oCert:destroy()
oBdKey:destroy()
oPrivKey:destroy()
RETURN
ENDIF
oHttp := CreateObject("Chilkat.Http")
nSuccess := oHttp:SetSslClientCert(oCert)
IF (nSuccess == 0)
? oHttp:LastErrorText
oCert:destroy()
oBdKey:destroy()
oPrivKey:destroy()
oHttp:destroy()
RETURN
ENDIF
oReq := CreateObject("Chilkat.HttpRequest")
oReq:AddParam("grant_type", "client_credentials")
oReq:AddParam("client_id", "TPP_test")
oReq:AddParam("scope", "psd2:payment:sepa:write psd2:payment:sepa:read")
oReq:HttpVerb := "POST"
oReq:ContentType := "application/x-www-form-urlencoded"
oResp := CreateObject("Chilkat.HttpResponse")
nSuccess := oHttp:HttpReq("https://auth-sandbox.connect.abnamro.com:8443/as/token.oauth2", oReq, oResp)
IF (nSuccess == 0)
? oHttp:LastErrorText
oCert:destroy()
oBdKey:destroy()
oPrivKey:destroy()
oHttp:destroy()
oReq:destroy()
oResp:destroy()
RETURN
ENDIF
IF (oResp:StatusCode != 200)
? oResp:BodyStr
oCert:destroy()
oBdKey:destroy()
oPrivKey:destroy()
oHttp:destroy()
oReq:destroy()
oResp:destroy()
RETURN
ENDIF
// Get the JSON result:
// {"access_token":"TIhycwl8rfrZPkXGw15mwldASAAK","token_type":"Bearer","expires_in":7200}
oJson := CreateObject("Chilkat.JsonObject")
oJson:Load(oResp:BodyStr)
? "access_token: " + oJson:StringOf("access_token")
? "token_type: " + oJson:StringOf("token_type")
? "expires_in: " + oJson:StringOf("expires_in")
oCert:destroy()
oBdKey:destroy()
oPrivKey:destroy()
oHttp:destroy()
oReq:destroy()
oResp:destroy()
oJson:destroy()