Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(VBScript) Ibanity XS2A List Financial InstitutionsSee more Ibanity ExamplesDemonstrates how to send a request to get a list of financial institutions. For more information, see https://documentation.ibanity.com/xs2a/api/curl#authentication
Dim fso, outFile Set fso = CreateObject("Scripting.FileSystemObject") 'Create a Unicode (utf-16) output text file. Set outFile = fso.CreateTextFile("output.txt", True, True) ' This example requires the Chilkat API to have been previously unlocked. ' See Global Unlock Sample for sample code. ' Send the following request: ' $ curl -X GET https://api.ibanity.com/xs2a/financial-institutions \ ' --cert certificate.pem \ ' --key private_key.pem \ ' -H 'Signature: keyId="75b5d796-de5c-400a-81ce-e72371b01cbc",created=1599659223,algorithm="hs2019",headers="(request-target) digest (created) host",signature="BASE64(RSA-SHA256(SIGNING_STRING))"' \ ' -H 'Digest: SHA-512=beDaRguyEb8fhh5wnl37bOTDtvhuYZyZNkTZ9LiC9Wc=' ' Ibanity provides the certificate + private key in PFX format. This example will use the .pfx instead of the pair of PEM files. ' (It is also possible to implement using Chilkat with the PEM files, but PFX is easier.) ' For versions of Chilkat < 10.0.0, use CreateObject("Chilkat_9_5_0.Cert") set cert = CreateObject("Chilkat.Cert") success = cert.LoadPfxFile("qa_data/pfx/my_ibanity_certificate.pfx","my_pfx_password") If (success = 0) Then outFile.WriteLine(cert.LastErrorText) WScript.Quit End If ' We need to calculate the Digest and Signature header fields. ' For a detailed explanation, see Calculate Ibanity HTTP Signature Example ' We'll just write the code here as briefly as possible. ' For versions of Chilkat < 10.0.0, use CreateObject("Chilkat_9_5_0.CkDateTime") set dtNow = CreateObject("Chilkat.CkDateTime") success = dtNow.SetFromCurrentSystemTime() created = dtNow.GetAsUnixTimeStr(0) ' For versions of Chilkat < 10.0.0, use CreateObject("Chilkat_9_5_0.Crypt2") set crypt2 = CreateObject("Chilkat.Crypt2") crypt2.HashAlgorithm = "sha512" crypt2.EncodingMode = "base64" ' For versions of Chilkat < 10.0.0, use CreateObject("Chilkat_9_5_0.StringBuilder") set sbDigestHdrValue = CreateObject("Chilkat.StringBuilder") success = sbDigestHdrValue.Append("SHA-512=") ' GET requests have empty payloads. The SHA-512 hash of the empty string is the same for all GET requests. ' Therefore all GET requests will use "z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==" ' You can eliminate the explicit hash computation (for GET requests) and simply use the above literal string. success = sbDigestHdrValue.Append(crypt2.HashStringENC("")) outFile.WriteLine("Generated Digest") outFile.WriteLine(sbDigestHdrValue.GetAsString()) request_target = "get /xs2a/financial-institutions" ' For versions of Chilkat < 10.0.0, use CreateObject("Chilkat_9_5_0.StringBuilder") set sbSigningString = CreateObject("Chilkat.StringBuilder") success = sbSigningString.Append("(request-target): ") success = sbSigningString.AppendLine(request_target,0) success = sbSigningString.Append("host: ") success = sbSigningString.AppendLine("api.ibanity.com",0) success = sbSigningString.Append("digest: ") success = sbSigningString.AppendLine(sbDigestHdrValue.GetAsString(),0) success = sbSigningString.Append("(created): ") success = sbSigningString.Append(created) ' ibanity-idempotency-key is not used with GET requests. outFile.WriteLine("Signing String:") outFile.WriteLine(sbSigningString.GetAsString()) signed_headers_list = "(request-target) host digest (created)" ' For versions of Chilkat < 10.0.0, use CreateObject("Chilkat_9_5_0.PrivateKey") set privKey = CreateObject("Chilkat.PrivateKey") success = privKey.LoadEncryptedPemFile("my_ibanity_signature_private_key.pem","pem_password") If (success = 0) Then outFile.WriteLine(privKey.LastErrorText) WScript.Quit End If ' For versions of Chilkat < 10.0.0, use CreateObject("Chilkat_9_5_0.Rsa") set rsa = CreateObject("Chilkat.Rsa") rsa.PssSaltLen = 32 rsa.EncodingMode = "base64" ' Use the RSASSA-PSS signature algorithm rsa.OaepPadding = 1 success = rsa.ImportPrivateKeyObj(privKey) If (success = 0) Then outFile.WriteLine(rsa.LastErrorText) WScript.Quit End If ' Sign the signing string. sigBase64 = rsa.SignStringENC(sbSigningString.GetAsString(),"sha-256") If (rsa.LastMethodSuccess = 0) Then outFile.WriteLine(rsa.LastErrorText) WScript.Quit End If outFile.WriteLine("Signature:") outFile.WriteLine(sigBase64) ' Build the signature header value. ' For versions of Chilkat < 10.0.0, use CreateObject("Chilkat_9_5_0.StringBuilder") set sbSigHeaderValue = CreateObject("Chilkat.StringBuilder") success = sbSigHeaderValue.Append("keyId=""") ' Use your identifier for the application's signature certificate, obtained from the Developer Portal success = sbSigHeaderValue.Append("a0ce296d-84c8-4bd5-8eb4-de0339950cfa") success = sbSigHeaderValue.Append(""",created=") success = sbSigHeaderValue.Append(created) success = sbSigHeaderValue.Append(",algorithm=""hs2019"",headers=""") success = sbSigHeaderValue.Append(signed_headers_list) success = sbSigHeaderValue.Append(""",signature=""") success = sbSigHeaderValue.Append(sigBase64) success = sbSigHeaderValue.Append("""") ' Send the GET request.. ' For versions of Chilkat < 10.0.0, use CreateObject("Chilkat_9_5_0.Http") set http = CreateObject("Chilkat.Http") success = http.SetSslClientCert(cert) If (success = 0) Then outFile.WriteLine(http.LastErrorText) WScript.Quit End If http.SetRequestHeader "Signature",sbSigHeaderValue.GetAsString() http.SetRequestHeader "Digest",sbDigestHdrValue.GetAsString() ' For versions of Chilkat < 10.0.0, use CreateObject("Chilkat_9_5_0.StringBuilder") set sbResponseBody = CreateObject("Chilkat.StringBuilder") success = http.QuickGetSb("https://api.ibanity.com/xs2a/financial-institutions",sbResponseBody) If (success = 0) Then outFile.WriteLine(http.LastErrorText) WScript.Quit End If ' For versions of Chilkat < 10.0.0, use CreateObject("Chilkat_9_5_0.JsonObject") set jResp = CreateObject("Chilkat.JsonObject") success = jResp.LoadSb(sbResponseBody) jResp.EmitCompact = 0 outFile.WriteLine("Response Body:") outFile.WriteLine(jResp.Emit()) respStatusCode = http.LastStatus outFile.WriteLine("Response Status Code = " & respStatusCode) If (respStatusCode >= 400) Then outFile.WriteLine("Response Header:") outFile.WriteLine(http.LastHeader) outFile.WriteLine("Failed.") WScript.Quit End If ' Sample output: ' (Sample code for parsing the JSON response is shown below) ' { ' "data": [ ' { ' "attributes": { ' "authorizationModels": [ ' "detailed", ' "financialInstitutionOffered" ' ], ' "bic": "NBBEBEBB203", ' "bulkPaymentsEnabled": true, ' "bulkPaymentsProductTypes": [ ' "sepaCreditTransfer" ' ], ' "country": null, ' "financialInstitutionCustomerReferenceRequired": false, ' "futureDatedPaymentsAllowed": true, ' "logoUrl": "https://s3.eu-central-1.amazonaws.com/ibanity-production-financial-institution-assets/sandbox.png", ' "maintenanceFrom": null, ' "maintenanceTo": null, ' "maintenanceType": null, ' "maxRequestedAccountReferences": null, ' "minRequestedAccountReferences": 0, ' "name": "Bogus Financial", ' "paymentsEnabled": true, ' "paymentsProductTypes": [ ' "sepaCreditTransfer" ' ], ' "periodicPaymentsEnabled": true, ' "periodicPaymentsProductTypes": [ ' "sepaCreditTransfer" ' ], ' "primaryColor": "#7d39ff", ' "requiresCredentialStorage": false, ' "requiresCustomerIpAddress": false, ' "sandbox": true, ' "secondaryColor": "#3DF2C2", ' "sharedBrandName": null, ' "sharedBrandReference": null, ' "status": "beta" ' }, ' "id": "2d3d70a4-cb3c-477c-97e1-cbe495b82841", ' "links": { ' "self": "https://api.ibanity.com/xs2a/financial-institutions/2d3d70a4-cb3c-477c-97e1-cbe495b82841" ' }, ' "type": "financialInstitution" ' }, ' { ' "attributes": { ' "authorizationModels": [ ' "detailed", ' "financialInstitutionOffered" ' ], ' "bic": "NBBEBEBB203", ' "bulkPaymentsEnabled": true, ' "bulkPaymentsProductTypes": [ ' "sepaCreditTransfer" ' ], ' "country": null, ' "financialInstitutionCustomerReferenceRequired": false, ' "futureDatedPaymentsAllowed": true, ' "logoUrl": "https://s3.eu-central-1.amazonaws.com/ibanity-production-financial-institution-assets/sandbox.png", ' "maintenanceFrom": null, ' "maintenanceTo": null, ' "maintenanceType": null, ' "maxRequestedAccountReferences": null, ' "minRequestedAccountReferences": 0, ' "name": "XYZ Trust", ' "paymentsEnabled": true, ' "paymentsProductTypes": [ ' "sepaCreditTransfer" ' ], ' "periodicPaymentsEnabled": true, ' "periodicPaymentsProductTypes": [ ' "sepaCreditTransfer" ' ], ' "primaryColor": "#7d39ff", ' "requiresCredentialStorage": false, ' "requiresCustomerIpAddress": false, ' "sandbox": true, ' "secondaryColor": "#3DF2C2", ' "sharedBrandName": null, ' "sharedBrandReference": null, ' "status": "beta" ' }, ' "id": "d4100f28-936b-4379-a3f8-86314a2014fb", ' "links": { ' "self": "https://api.ibanity.com/xs2a/financial-institutions/d4100f28-936b-4379-a3f8-86314a2014fb" ' }, ' "type": "financialInstitution" ' } ' ], ' "links": { ' "first": "https://api.ibanity.com/xs2a/financial-institutions" ' }, ' "meta": { ' "paging": { ' "limit": 10 ' } ' } ' } ' Sample code for parsing the JSON response... ' Use the following online tool to generate parsing code from sample JSON: ' Generate Parsing Code from JSON linksFirst = jResp.StringOf("links.first") metaPagingLimit = jResp.IntOf("meta.paging.limit") i = 0 count_i = jResp.SizeOfArray("data") Do While i < count_i jResp.I = i attributesBic = jResp.StringOf("data[i].attributes.bic") attributesBulkPaymentsEnabled = jResp.BoolOf("data[i].attributes.bulkPaymentsEnabled") attributesCountry = jResp.StringOf("data[i].attributes.country") attributesFinancialInstitutionCustomerReferenceRequired = jResp.BoolOf("data[i].attributes.financialInstitutionCustomerReferenceRequired") attributesFutureDatedPaymentsAllowed = jResp.BoolOf("data[i].attributes.futureDatedPaymentsAllowed") attributesLogoUrl = jResp.StringOf("data[i].attributes.logoUrl") attributesMaintenanceFrom = jResp.StringOf("data[i].attributes.maintenanceFrom") attributesMaintenanceTo = jResp.StringOf("data[i].attributes.maintenanceTo") attributesMaintenanceType = jResp.StringOf("data[i].attributes.maintenanceType") attributesMaxRequestedAccountReferences = jResp.StringOf("data[i].attributes.maxRequestedAccountReferences") attributesMinRequestedAccountReferences = jResp.IntOf("data[i].attributes.minRequestedAccountReferences") attributesName = jResp.StringOf("data[i].attributes.name") attributesPaymentsEnabled = jResp.BoolOf("data[i].attributes.paymentsEnabled") attributesPeriodicPaymentsEnabled = jResp.BoolOf("data[i].attributes.periodicPaymentsEnabled") attributesPrimaryColor = jResp.StringOf("data[i].attributes.primaryColor") attributesRequiresCredentialStorage = jResp.BoolOf("data[i].attributes.requiresCredentialStorage") attributesRequiresCustomerIpAddress = jResp.BoolOf("data[i].attributes.requiresCustomerIpAddress") attributesSandbox = jResp.BoolOf("data[i].attributes.sandbox") attributesSecondaryColor = jResp.StringOf("data[i].attributes.secondaryColor") attributesSharedBrandName = jResp.StringOf("data[i].attributes.sharedBrandName") attributesSharedBrandReference = jResp.StringOf("data[i].attributes.sharedBrandReference") attributesStatus = jResp.StringOf("data[i].attributes.status") id = jResp.StringOf("data[i].id") linksSelf = jResp.StringOf("data[i].links.self") v_type = jResp.StringOf("data[i].type") j = 0 count_j = jResp.SizeOfArray("data[i].attributes.authorizationModels") Do While j < count_j jResp.J = j strVal = jResp.StringOf("data[i].attributes.authorizationModels[j]") j = j + 1 Loop j = 0 count_j = jResp.SizeOfArray("data[i].attributes.bulkPaymentsProductTypes") Do While j < count_j jResp.J = j strVal = jResp.StringOf("data[i].attributes.bulkPaymentsProductTypes[j]") j = j + 1 Loop j = 0 count_j = jResp.SizeOfArray("data[i].attributes.paymentsProductTypes") Do While j < count_j jResp.J = j strVal = jResp.StringOf("data[i].attributes.paymentsProductTypes[j]") j = j + 1 Loop j = 0 count_j = jResp.SizeOfArray("data[i].attributes.periodicPaymentsProductTypes") Do While j < count_j jResp.J = j strVal = jResp.StringOf("data[i].attributes.periodicPaymentsProductTypes[j]") j = j + 1 Loop i = i + 1 Loop outFile.Close |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.