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
(PowerShell) 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
Add-Type -Path "C:\chilkat\ChilkatDotNet47-9.5.0-x64\ChilkatDotNet47.dll" # 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.) $cert = New-Object Chilkat.Cert $success = $cert.LoadPfxFile("qa_data/pfx/my_ibanity_certificate.pfx","my_pfx_password") if ($success -eq $false) { $($cert.LastErrorText) exit } # 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. $dtNow = New-Object Chilkat.CkDateTime $dtNow.SetFromCurrentSystemTime() $created = $dtNow.GetAsUnixTimeStr($false) $crypt2 = New-Object Chilkat.Crypt2 $crypt2.HashAlgorithm = "sha512" $crypt2.EncodingMode = "base64" $sbDigestHdrValue = New-Object Chilkat.StringBuilder $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. $sbDigestHdrValue.Append($crypt2.HashStringENC("")) $("Generated Digest") $($sbDigestHdrValue.GetAsString()) $request_target = "get /xs2a/financial-institutions" $sbSigningString = New-Object Chilkat.StringBuilder $sbSigningString.Append("(request-target): ") $sbSigningString.AppendLine($request_target,$false) $sbSigningString.Append("host: ") $sbSigningString.AppendLine("api.ibanity.com",$false) $sbSigningString.Append("digest: ") $sbSigningString.AppendLine($sbDigestHdrValue.GetAsString(),$false) $sbSigningString.Append("(created): ") $sbSigningString.Append($created) # ibanity-idempotency-key is not used with GET requests. $("Signing String:") $($sbSigningString.GetAsString()) $signed_headers_list = "(request-target) host digest (created)" $privKey = New-Object Chilkat.PrivateKey $success = $privKey.LoadEncryptedPemFile("my_ibanity_signature_private_key.pem","pem_password") if ($success -eq $false) { $($privKey.LastErrorText) exit } $rsa = New-Object Chilkat.Rsa $rsa.PssSaltLen = 32 $rsa.EncodingMode = "base64" # Use the RSASSA-PSS signature algorithm $rsa.OaepPadding = $true $success = $rsa.ImportPrivateKeyObj($privKey) if ($success -eq $false) { $($rsa.LastErrorText) exit } # Sign the signing string. $sigBase64 = $rsa.SignStringENC($sbSigningString.GetAsString(),"sha-256") if ($rsa.LastMethodSuccess -eq $false) { $($rsa.LastErrorText) exit } $("Signature:") $($sigBase64) # Build the signature header value. $sbSigHeaderValue = New-Object Chilkat.StringBuilder $sbSigHeaderValue.Append("keyId=`"") # Use your identifier for the application's signature certificate, obtained from the Developer Portal $sbSigHeaderValue.Append("a0ce296d-84c8-4bd5-8eb4-de0339950cfa") $sbSigHeaderValue.Append("`",created=") $sbSigHeaderValue.Append($created) $sbSigHeaderValue.Append(",algorithm=`"hs2019`",headers=`"") $sbSigHeaderValue.Append($signed_headers_list) $sbSigHeaderValue.Append("`",signature=`"") $sbSigHeaderValue.Append($sigBase64) $sbSigHeaderValue.Append("`"") # Send the GET request.. $http = New-Object Chilkat.Http $success = $http.SetSslClientCert($cert) if ($success -eq $false) { $($http.LastErrorText) exit } $http.SetRequestHeader("Signature",$sbSigHeaderValue.GetAsString()) $http.SetRequestHeader("Digest",$sbDigestHdrValue.GetAsString()) $sbResponseBody = New-Object Chilkat.StringBuilder $success = $http.QuickGetSb("https://api.ibanity.com/xs2a/financial-institutions",$sbResponseBody) if ($success -eq $false) { $($http.LastErrorText) exit } $jResp = New-Object Chilkat.JsonObject $jResp.LoadSb($sbResponseBody) $jResp.EmitCompact = $false $("Response Body:") $($jResp.Emit()) $respStatusCode = $http.LastStatus $("Response Status Code = " + $respStatusCode) if ($respStatusCode -ge 400) { $("Response Header:") $($http.LastHeader) $("Failed.") exit } # 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") while ($i -lt $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") while ($j -lt $count_j) { $jResp.J = $j $strVal = $jResp.StringOf("data[i].attributes.authorizationModels[j]") $j = $j + 1 } $j = 0 $count_j = $jResp.SizeOfArray("data[i].attributes.bulkPaymentsProductTypes") while ($j -lt $count_j) { $jResp.J = $j $strVal = $jResp.StringOf("data[i].attributes.bulkPaymentsProductTypes[j]") $j = $j + 1 } $j = 0 $count_j = $jResp.SizeOfArray("data[i].attributes.paymentsProductTypes") while ($j -lt $count_j) { $jResp.J = $j $strVal = $jResp.StringOf("data[i].attributes.paymentsProductTypes[j]") $j = $j + 1 } $j = 0 $count_j = $jResp.SizeOfArray("data[i].attributes.periodicPaymentsProductTypes") while ($j -lt $count_j) { $jResp.J = $j $strVal = $jResp.StringOf("data[i].attributes.periodicPaymentsProductTypes[j]") $j = $j + 1 } $i = $i + 1 } |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.