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:
- Über die beiden unten stehenden Buttons können Sie sich ein Beispielprojekt oder eine ausführliche Schnittstellenbeschreibung herunterladen.
- Damit Sie die Schnittstelle zu uns nutzen können, schreiben Sie bitte eine kurze Information an info@finanzportal24.de um einen Token für die Authentifizierung anzufordern.
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 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
{
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 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();
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"));
}
}
}