Der schnellste Weg zur digitalen Vernetzung!

Schnittstellen zu FinanzPlaner Online erstellen

Sie möchten den FinanzPlaner Online schnell, leicht & einfach mit einer Schnittstelle in Ihre Beratungsprozesse integrieren?

Dies funktioniert wie folgt:

Schnelle Einbindung anhand eines Beispielcodes

				
					using FPOnlineApiDemo.FipoBackend;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.ServiceModel;

namespace FPOnlineApiDemo
{
    class Program
    {
        /* Hier trägt man das Herstellertoken ein, es wird auf Anfrage vergeben.
         * Dies hier sind nur Beispielwerte, die nicht funktionieren. */
        static readonly Guid _herstellertoken = new Guid("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa");

        static readonly string _EMail = "max@example.com";
        static readonly string _EMailSecondUser = "maxime@example.com";
        static readonly string _password = "geheim";
        static readonly string _tempPath = @"C:\FP24Test";

        static FipoBackendServiceClient _client;

        static void Main(string[] args)
        {
            // Client erstellen (WSDL: https://backend.finanzportal24.de/FipoBackendService.svc?singleWsdl)
            CreateHttpsClient();

            // Neuen Fall erstellen und Id merken
            int fallId = CreateNewCase();

            // Fall editieren
            ModifyCase(fallId);

            // SSO Token erzeugen
            Guid ssoToken = CreateSSOToken();

            // Link für Absprung generieren und Finanzplaner Online im Browser öffnen
            string link = $"https://cloud.finanzportal24.de/Login?SSOToken={ssoToken}&FallID={fallId}";
            Process.Start(link);

            // Betrachtungsfälle suchen
            SearchCases("Max");

            // Betrachtungsfall exportieren (normal und als Datei für Finanzplaner Offline)
            ExportCase(fallId);

            // Dateien suchen
            List<int> fileIds = SearchFiles(fallId);

            // Datei herunterladen
            if (fileIds.Count > 0)
            {
                DownloadFile(fileIds[0]);
            }

            // Betrachtungsfall an andere Person übertragen
            TransferCase(_EMailSecondUser);
        }

        static int CreateNewCase()
        {
            var request = new AddUpdateFall3Party_V3Request
            {
                EMail = _EMail,
                Password = _password,
                Token3Party = _herstellertoken,
                FallId = 0, // Id des Betrachtungsfalls (0 für Neuanlage)
                Fall3P = new Fall3P_V3
                {
                    Kunde = new Erwachsener3P_V3
                    {
                        Anrede = eAnrede3P_V3.Frau,
                        Vorname = "Maxime",
                        Nachname = "Muster",
                        Geburtsdatum = new DateTime(1981, 1, 19),
                        Berufsgruppe = eBerufsgruppe3P_V3.Angestellter,
                        Gehaltsangaben = new Gehaltsangaben3P_V3
                        {
                            Bruttogehalt = 4000,
                        },
                        Krankenversicherung = new KV3P_V3
                        {
                            Versicherungstyp = eKrankenversicherung3P_V3.Pflicht,
                        },
                    },
                    Personenversicherungen = new List<Personenversicherung3P_V3>
                    {
                        new Personenversicherung3P_V3
                        {
                            Versicherungssparte = ePersonenversicherung3P_V3.Berufsunfaehigkeit,
                            LeistungenEUBU = new LeistungenEUBU3P_V3
                            {
                                RenteGarantiert = 1000,
                            }
                        }
                    }
                },
            };

            var response = _client.AddUpdateFall3Party_V3(request);

            return response.FallId;
        }

        static int ModifyCase(int fallId)
        {
            var request = new AddUpdateFall3Party_V3Request
            {
                EMail = _EMail,
                Password = _password,
                Token3Party = _herstellertoken,
                FallId = fallId, // Id des Betrachtungsfalls
                Fall3P = new Fall3P_V3
                {
                    Kunde = new Erwachsener3P_V3
                    {
                        Berufsgruppe = eBerufsgruppe3P_V3.Freiberufler,
                    },
                },
            };

            var response = _client.AddUpdateFall3Party_V3(request);

            return response.FallId;
        }

        static Guid CreateSSOToken()
        {
            CreateSSOToken3PartyRequest request = new CreateSSOToken3PartyRequest
            {
                EMail = _EMail,
                Password = _password,
                Token3Party = _herstellertoken,
            };

            var response = _client.CreateSSOToken3Party(request);

            return response.SSOToken;
        }

        static void SearchCases(string pattern)
        {
            var request = new SearchFall3PartyV2Request
            {
                EMail = _EMail,
                Password = _password,
                Token3Party = _herstellertoken,
                SearchPattern = pattern,
            };

            var response = _client.SearchFall3PartyV2(request);

            foreach (var x in response.Fälle)
            {
                Console.WriteLine($"\t{x.FallId}" +
                    $"\t{x.AngelegtAm.ToShortDateString()}" +
                    $"\t{x.LetzteAenderung.ToShortDateString()}" +
                    $"\t{x.Anrede}\t{x.Vorname}\t{x.Nachname}\t" +
                    $"{x.ExternalIdFall}\t{x.ExternalIdKunde}\t{x.ExternalIdPartner}");
            }
        }

        static void ExportCase(int fallId)
        {
            var request = new ExportFall3P_V3Request
            {
                EMail = _EMail,
                Password = _password,
                Token3Party = _herstellertoken,
                FallId = fallId,
                GenerateFppx = true,
            };

            string filenameFPPX = _tempPath + "\\export.fppx";
            string filenameJSON = _tempPath + "\\export.json";

            var response = _client.ExportFall3P_V3(request);

            // Datei für Finanzplaner Offline schreiben
            System.IO.File.WriteAllBytes(filenameFPPX, response.FppxFile);

            // Fall3P Objekt als JSON in Datei schreiben
            string json = JsonConvert.SerializeObject(response.Fall3P, Formatting.Indented);
            System.IO.File.WriteAllText(filenameJSON, json);
        }

        static List<int> SearchFiles(int fallId)
        {
            var request = new SearchFiles3PartyRequest
            {
                EMail = _EMail,
                Password = _password,
                Token3Party = _herstellertoken,
                FallId = fallId, // "null" statt FallId liefert alle Dateien des Kunden
            };

            var response = _client.SearchFiles3Party(request);

            var fileIds = new List<int>();

            foreach (var x in response.FileInformations)
            {
                Console.WriteLine($"\t{x.FileId}" +
                    $"\t{x.FallId}" +
                    $"\t{x.DateCreated.ToShortDateString()}" +
                    $"\t{x.Filename}" +
                    $"{x.Size}");

                fileIds.Add(x.FileId);
            }

            return fileIds;
        }

        static void DownloadFile(int fileId)
        {
            var request = new DownloadFile3PartyRequest
            {
                EMail = _EMail,
                Password = _password,
                Token3Party = _herstellertoken,
                FileId = fileId, // "null" statt FallId liefert alle Dateien des Kunden
            };

            var response = _client.DownloadFall3Party(request);

            // Datei wegschreiben
            string filename = _tempPath + "\\downloadedFile.bin";
            System.IO.File.WriteAllBytes(filename, response.FileContent);
        }

        static void TransferCase(string EMailTargetPerson)
        {
            var request = new TransferCase3PartyRequest
            {
                EMail = _EMail,
                Password = _password,
                Token3Party = _herstellertoken,
                EMailZielperson = EMailTargetPerson,
            };

            var response = _client.TransferCase3Party(request);
        }

        static void CreateHttpsClient()
        {
            BasicHttpBinding binding = new BasicHttpBinding();
            // I think most (or all) of these are defaults--I just copied them from app.config:
            binding.SendTimeout = TimeSpan.FromMinutes(1);
            binding.OpenTimeout = TimeSpan.FromMinutes(1);
            binding.CloseTimeout = TimeSpan.FromMinutes(1);
            binding.ReceiveTimeout = TimeSpan.FromMinutes(1);
            binding.AllowCookies = false;
            binding.BypassProxyOnLocal = false;
            binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
            binding.MessageEncoding = WSMessageEncoding.Text;
            binding.TextEncoding = System.Text.Encoding.UTF8;
            binding.TransferMode = TransferMode.Buffered;
            binding.UseDefaultWebProxy = true;

            binding.MaxReceivedMessageSize = 2147483647;
            binding.ReaderQuotas.MaxDepth = 2147483647;
            binding.ReaderQuotas.MaxStringContentLength = 2147483647;
            binding.ReaderQuotas.MaxArrayLength = 2147483647;
            binding.ReaderQuotas.MaxBytesPerRead = 2147483647;
            binding.ReaderQuotas.MaxNameTableCharCount = 2147483647;

            binding.Security.Mode = BasicHttpSecurityMode.Transport;

            //Achtung, das Zertifikat des Servers wird so nicht geprüft
            System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };

            _client = new FipoBackendServiceClient(
                binding,
                new EndpointAddress("https://backend.finanzportal24.de/FipoBackendService.svc"));
        }
    }
}