fints-test/FinTSTest/Program.cs
2025-10-24 14:33:20 +02:00

40 lines
1.6 KiB
C#

// See https://aka.ms/new-console-template for more information
using libfintx.FinTS;
using libfintx.FinTS.Data;
using libfintx.Swift;
FinTsClient client = new FinTsClient(
new ConnectionDetails()
{
Url = Environment.GetEnvironmentVariable("FINTS_URL"),
UserId = Environment.GetEnvironmentVariable("FINTS_USER"),
Pin = Environment.GetEnvironmentVariable("FINTS_PASS"),
Blz = int.Parse(Environment.GetEnvironmentVariable("FINTS_BLZ") ?? "0"),
CustomerSystemId = Environment.GetEnvironmentVariable("FINTS_CUSTOMER_ID"),
Bic = Environment.GetEnvironmentVariable("FINTS_BIC")
}
);
// The initial syncronization is important, otherwise you don't get any data, when using the "CustomerSystemId".
await client.Synchronization();
// Only supports PushTAN
TANDialog dialog = new TANDialog(tanDialog => Task.FromResult(""));
HBCIDialogResult<List<AccountInformation>>? data = await client.Accounts(dialog);
if (!data.IsSuccess)
{
Console.WriteLine("Failed to get the account information!");
Environment.Exit(1);
}
foreach (AccountInformation accountInformation in data.Data)
{
client.activeAccount = accountInformation;
HBCIDialogResult<AccountBalance> balance = await client.Balance(dialog);
// This takes a while... so use some worker or other asynchronous system to gather transactions
HBCIDialogResult<List<SwiftStatement>> transactions = await client.Transactions(dialog, DateTime.Today.Subtract(new TimeSpan(1)), DateTime.Now);
Console.WriteLine($"{accountInformation.AccountType} - {balance.Data.Balance}");
}