Überblick
Verlinken
Direkter Einstieg mit vorausgewählter Sparte per GET-Parameter.
Einbetten
IFrame-Layout ohne Kopf/Fuß, mit Farbschema und automatischer Höhe.
Daten übergeben
Kunden-, Vertrags- und Maklerdaten per JSON oder XML vorbefüllen.
Link & GET-Parameter
Alle Parameter werden an die URL des Assistenten angehängt und lassen sich kombinieren:
https://www.kuendigungshilfe.info/Assistent/?sp=rs| Parameter | Beschreibung | |
|---|---|---|
sp=rs |
Sparte vorauswählen (Kürzel siehe Tabelle unten). | ausprobieren |
iframe |
Alternatives Layout ohne Kopf- und Fußbereich für die Einbindung per IFrame. Optional mit Partnernamen als Wert (lädt partnerspezifische Einstellungen und Stylesheets). | ausprobieren |
theme=flatly |
Farbschema im IFrame-Layout (nur zusammen mit iframe). |
ausprobieren |
partner=name |
Blendet partnerspezifische Vertragsarten ein. | |
UID={…} |
Lädt einen über die Import-Schnittstelle angelegten Vorgang (wird im Response als „Link“ geliefert). | |
sharePDF=9F3C2A7E51D04B8C6A2E7F1093B5D4C8 |
Öffnet einen geteilten Vorgang zur Unterschrift durch einen Dritten. | |
ENVIROMENT=name |
Wie iframe-Partnername, jedoch ohne IFrame-Layout. |
IFrame-Einbindung
Mit dem Parameter iframe wird ein Layout ohne Kopf- und Fußbereich ausgeliefert – als zusätzlicher oder alleiniger Parameter:
https://www.kuendigungshilfe.info/Assistent/?sp=phv&iframe ausprobierenhttps://www.kuendigungshilfe.info/Assistent/?iframe ausprobierenDer Assistent meldet seine Höhe alle 400 ms per postMessage an die einbettende Seite – als Zahl und zusätzlich als JSON {"bodyHeight": …}. So passen Sie die Höhe des IFrames automatisch an:
<iframe id="kuendigungshilfe" src="https://www.kuendigungshilfe.info/Assistent/?iframe&theme=flatly"
style="width:100%;border:0;min-height:600px" title="Kündigungshilfe"></iframe>
<script>
// Der Assistent meldet seine Höhe regelmäßig per postMessage –
// einmal als Zahl und einmal als JSON {"bodyHeight": …}.
window.addEventListener('message', function (event) {
var height = typeof event.data === 'number' ? event.data : null;
if (height === null) {
try { height = JSON.parse(event.data).bodyHeight; } catch (e) { return; }
}
if (height) document.getElementById('kuendigungshilfe').style.height = height + 'px';
});
</script>Sie benötigen ein spezielles Design oder partnerspezifische Einstellungen? Sprechen Sie uns an.
Themes
Im IFrame-Layout kann über den Parameter theme ein Farbschema gewählt werden:
-
Cerulean
theme=cerulean -
Cosmo
theme=cosmo -
Cyborg
theme=cyborg -
Darkly
theme=darkly -
Default
theme=default -
Flatly
theme=flatly -
Journal
theme=journal -
Lumen
theme=lumen -
Paper
theme=paper -
Readable
theme=readable -
Sandstone
theme=sandstone -
Simplex
theme=simplex -
Slate
theme=slate -
Spacelab
theme=spacelab -
Superhero
theme=superhero -
United
theme=united -
Yeti
theme=yeti
Import-Schnittstelle
Über die Import-Schnittstelle übergeben Sie Kunden-, Vertragspartner- und Vertragsdaten. Im Body des POST-Requests wird ein JSON-Objekt (UTF-8) oder XML-Dokument mitgesendet. Die Antwort enthält die UID und den Link zum Aufruf des vorbefüllten Assistenten – hängen Sie gerne &iframe an.
https://www.kuendigungshilfe.info/ImportWichtig: Vor der Benutzung muss Ihre IP-Adresse von uns freigegeben werden. Freigabe anfragen
Request (JSON)
{
"returnPathPDF": null,
"Anschrift_Kunde": {
"Vorname": "Testi",
"Name": "Test",
"Zusatz": "c/o Test Max",
"Strasse": "Teststrasse 11",
"PLZ": "01234",
"Ort": "Musterhausen",
"email": null
},
"Anschrift_Kunde_neu": {
"Vorname": "Testa",
"Name": "Test",
"Strasse": "Testgasse 23",
"PLZ": "12340",
"Ort": "Musterstadt"
},
"Anschrift_Gesellschaft": {
"Firma": "Debeka",
"Strasse": "Test",
"PLZ": "01234",
"Ort": "Muster",
"fax": "4567890",
"email": "vertraege@pfefferminzia.de"
},
"Anschrift_Makler": {
"Vorname": "Makler",
"Name": "Bieber",
"Strasse": "Holzgasse 11",
"PLZ": "01234",
"Ort": "Baumhausen",
"email": "makler@baum.de"
},
"partner": "",
"Sparte": "HR",
"Sparte_ID": null,
"Vertragsnummer": "Test 08/15",
"Ablaufdatum": "22.03.2017",
"mitteilen": "Kündigung",
"AenderungAdresse": false
}Sparte– Kürzel der Sparte (siehe Tabelle), alternativSparte_ID. Unbekannte Sparten werden als „allgemeiner Vertrag“ behandelt.Ablaufdatum– wählt automatisch „Kündigung zum Ablauf“ mit diesem Datum.mitteilen– Kündigung, Vertragsänderung oder Widerruf vorauswählen.AenderungAdresse– wählt die Adressänderung vor (Anschrift_Kunde_neuerforderlich).Anschrift_Makler– optional; ermöglicht das Schreiben im Auftrag des Kunden.partner– optional für partnerspezifische Einstellungen.
Response (JSON)
Der Parameter success zeigt, ob der Request verarbeitet wurde. Autofill gibt an, ob die Anschrift des Vertragspartners anhand des Namens automatisch ermittelt wurde. Die importierten Daten finden Sie zur Kontrolle unter import.
{
"success": true,
"data": {
"UID": "{AEA8A0B5-24AB-00DA-3FFE-A3E551EFC2A3}",
"Link": "https://www.kuendigungshilfe.info/Assistent/?UID={AEA8A0B5-24AB-00DA-3FFE-A3E551EFC2A3}",
"Autofill": true,
"import": {
"Anschrift_Kunde": { "Vorname": "Testi", "Name": "Test", "...": "..." },
"Anschrift_Gesellschaft": {
"id": "80",
"Firma": "Debeka Allgemeine Versicherung Aktiengesellschaft",
"Strasse": "Ferdinand-Sauerbruch-Str. 18",
"PLZ": "56058",
"Ort": "Koblenz",
"fax": null,
"email": "..."
},
"Sparte": "HR",
"Sparte_ID": "8",
"Vertragsnummer": "Test 08/15",
"Ablaufdatum": "22.03.2017"
}
}
}Request & Response (XML)
Die Schnittstelle versteht dieselben Felder auch als XML mit dem Wurzelelement <import>. Die Antwort erfolgt dann ebenfalls als XML.
<?xml version="1.0" encoding="utf-8"?>
<import>
<!--optionale URL welche bei Erstellung des PDF aufgerufen wird-->
<returnPathPDF/>
<!--Anschrift des Kunden-->
<Anschrift_Kunde>
<Vorname>Testi</Vorname>
<Name>Test</Name>
<Zusatz>c/o Test Max</Zusatz>
<Strasse>Teststrasse 11</Strasse>
<PLZ>01234</PLZ>
<Ort>Musterhausen</Ort>
<email/>
</Anschrift_Kunde>
<!--bei AenderungAdresse=true erforderlich-->
<Anschrift_Kunde_neu>
<Vorname>Testa</Vorname>
<Name>Test</Name>
<Strasse>Testgasse 23</Strasse>
<PLZ>12340</PLZ>
<Ort>Musterstadt</Ort>
</Anschrift_Kunde_neu>
<!--Anschrift des Vertragspartners-->
<Anschrift_Gesellschaft>
<Firma>Debeka</Firma>
<Strasse>Test</Strasse>
<PLZ>01234</PLZ>
<Ort>Muster</Ort>
<fax>4567890</fax>
<email>vertraege@pfefferminzia.de</email>
</Anschrift_Gesellschaft>
<!--Sparte-->
<Sparte>HR</Sparte>
<!--Alternativ Sparten ID-->
<Sparte_ID/>
<Vertragsnummer>Test 08/15</Vertragsnummer>
<!--Wenn Ablaufdatum gesetzt wird, wird automatisch die Kündigung zum Ablauf gewählt-->
<Ablaufdatum>22.03.2017</Ablaufdatum>
<!--Kündigung|Vertragsänderung|Widerruf-->
<mitteilen>Widerruf</mitteilen>
<!--Wenn eine Adressänderung vorausgewählt werden soll-->
<AenderungAdresse>1</AenderungAdresse>
</import><?xml version="1.0" encoding="utf-8"?>
<import>
<success>1</success>
<data>
<UID>{138A90E1-B6EE-CCE7-B68A-7848C74B3FD1}</UID>
<Link>https://www.kuendigungshilfe.info/Assistent/?UID={138A90E1-B6EE-CCE7-B68A-7848C74B3FD1}</Link>
<Autofill>1</Autofill>
<import>
<returnPathPDF/>
<Anschrift_Kunde>…</Anschrift_Kunde>
<Anschrift_Gesellschaft>
<id>80</id>
<Firma>Debeka Allgemeine Versicherung Aktiengesellschaft</Firma>
<Strasse>Ferdinand-Sauerbruch-Str. 18</Strasse>
<PLZ>56058</PLZ>
<Ort>Koblenz</Ort>
<fax/>
</Anschrift_Gesellschaft>
<Sparte>HR</Sparte>
<Sparte_ID>8</Sparte_ID>
<Vertragsnummer>Test 08/15</Vertragsnummer>
<Ablaufdatum>22.03.2017</Ablaufdatum>
<mitteilen>Widerruf</mitteilen>
<AenderungAdresse>1</AenderungAdresse>
</import>
</data>
</import>Erzeugtes Dokument zurückliefern – returnPathPDF
Wenn Sie im Import eine URL unter returnPathPDF angeben, wird jedes erzeugte Dokument als JSON-POST mit folgender Struktur an diese URL geschickt:
{
"success": true,
"response": {
"filename": "dateiname.pdf",
"filesize": 123456,
"file": "BASE64…",
"data": {
… Daten des Vorgangs …
}
}
}Sparten-Kürzel
Für den GET-Parameter sp und das Import-Feld Sparte (Groß-/Kleinschreibung egal):
| Kürzel | Vertragsart | |
|---|---|---|
BU |
Berufsunfähigkeitsversicherung | öffnen |
GLS |
Glas | öffnen |
HR |
Hausrat | öffnen |
KFZ |
KFZ | öffnen |
LV |
Lebensversicherung | öffnen |
PKV |
Private Krankenversicherung | öffnen |
PHV |
Privathaftpflicht | öffnen |
RS |
Rechtsschutz | öffnen |
RV |
Rentenversicherung | öffnen |
RLV |
Risiko-Lebensversicherung | öffnen |
SON |
Sonstige Versicherung | öffnen |
TIE |
Tierhalter (Hund/Pferd) | öffnen |
UNF |
Unfall | öffnen |
WG |
Wohngebäude | öffnen |
BAU |
Bausparvertrag | öffnen |
FITVertr |
Fitnessvertrag | öffnen |
GAS |
Gasvertrag | öffnen |
MV |
Maklervertrag | öffnen |
MIETVertr |
Mietvertrag | öffnen |
MOBVetr |
Mobilfunkvertrag | öffnen |
STROM |
Stromvertrag | öffnen |
ZTGAbo |
Zeitungsabo | öffnen |
ALLGVertr |
allgemeiner Vertrag | öffnen |
PHP-Beispiele
Komplette, lauffähige Beispielskripte für die Import-Schnittstelle:
<?php
class Test {
/**
*
*/
public function start()
{
$json = array(
'returnPathPDF' => null, //optionale URL welche bei erstellung des PDF aufgerufen wird
'Anschrift_Kunde' => array( //Anschrift des Kunden
'Vorname' => 'Testi',
'Name' => 'Test',
'Zusatz' => 'c/o Test Max',
'Strasse' => 'Teststrasse 11',
'PLZ' => '01234',
'Ort' => 'Musterhausen',
'email' => null,
),
/*bei AenderungAdresse=true erforderlich*/
'Anschrift_Kunde_neu' => array( //Neue Anschrift des Kunden
'Vorname' => 'Testa',
'Name' => 'Test',
'Strasse' => 'Testgasse 23',
'PLZ' => '12340',
'Ort' => 'Musterstadt',
),
'Anschrift_Gesellschaft' => array( //Anschrift des Vertragspartners
'Firma' => 'Debeka',
'Strasse' => 'Test',
'PLZ' => '01234',
'Ort' => 'Muster',
'fax' => '4567890',
'email' => 'vertraege@pfefferminzia.de',
),
'Sparte' => 'HR', //Sparte:
'Sparte_ID' => null, //Alternativ Sparten ID
'Vertragsnummer' => 'Test 08/15',
'Ablaufdatum' => '22.03.2017', //Wenn Ablaufdatum gesetzt wird, wird automatisch die Kündigung zum nächst mgl. Zeitpunkt gewählt
//'mitteilen' => 'Widerruf', //Kündigung|Vertragsänderung|Widerruf
//'AenderungAdresse' => true,
);
echo '<pre>';
print_r(json_decode($this->execCurl(json_encode($json), 'https://www.kuendigungshilfe.info/Import')));
echo '</pre>';
exit;
}
/**
* @param string $content
* @param string $url
* @return mixed
*/
private function execCurl($content, $url)
{
$headers = array(
"POST " . basename($url) . " HTTP/1.0",
"Content-type: application/json;charset=\"utf-8\"",
"Accept: application/json",
"Content-length: " . strlen($content)
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$data = curl_exec($ch);
if (curl_errno($ch)) {
return curl_error($ch);
} else {
curl_close($ch);
return $data;
}
}
}
$Test = new Test();
$Test->start();
<?php
class Test {
/**
*
*/
public function start()
{
$doc = new \DOMDocument('1.0', 'utf-8');
$doc->formatOutput = true;
$doc->preserveWhiteSpace = true;
$import = $doc->createElement('import');
$import->appendChild($doc->createComment('optionale URL welche bei Erstellung des PDF aufgerufen wird'));
$import->appendChild($doc->createElement('returnPathPDF'));
$import->appendChild($doc->createComment('Anschrift des Kunden'));
$Anschrift_Kunde = $doc->createElement('Anschrift_Kunde');
$Anschrift_Kunde->appendChild($doc->createElement('Vorname', 'Testi'));
$Anschrift_Kunde->appendChild($doc->createElement('Name', 'Test'));
$Anschrift_Kunde->appendChild($doc->createElement('Zusatz', 'c/o Test Max'));
$Anschrift_Kunde->appendChild($doc->createElement('Strasse', 'Teststrasse 11'));
$Anschrift_Kunde->appendChild($doc->createElement('PLZ', '01234'));
$Anschrift_Kunde->appendChild($doc->createElement('Ort', 'Musterhausen'));
$Anschrift_Kunde->appendChild($doc->createElement('email'));
$import->appendChild($Anschrift_Kunde);
$import->appendChild($doc->createComment('bei AenderungAdresse=true erforderlich'));
$Anschrift_Kunde_neu = $doc->createElement('Anschrift_Kunde_neu');
$Anschrift_Kunde_neu->appendChild($doc->createElement('Vorname', 'Testa'));
$Anschrift_Kunde_neu->appendChild($doc->createElement('Name', 'Test'));
$Anschrift_Kunde_neu->appendChild($doc->createElement('Strasse', 'Testgasse 23'));
$Anschrift_Kunde_neu->appendChild($doc->createElement('PLZ', '12340'));
$Anschrift_Kunde_neu->appendChild($doc->createElement('Ort', 'Musterstadt'));
$import->appendChild($Anschrift_Kunde_neu);
$import->appendChild($doc->createComment('Anschrift des Vertragspartners'));
$Anschrift_Gesellschaft = $doc->createElement('Anschrift_Gesellschaft');
$Anschrift_Gesellschaft->appendChild($doc->createElement('Firma', 'Debeka'));
$Anschrift_Gesellschaft->appendChild($doc->createElement('Strasse', 'Test'));
$Anschrift_Gesellschaft->appendChild($doc->createElement('PLZ', '01234'));
$Anschrift_Gesellschaft->appendChild($doc->createElement('Ort', 'Muster'));
$Anschrift_Gesellschaft->appendChild($doc->createElement('fax', '4567890'));
$Anschrift_Gesellschaft->appendChild($doc->createElement('email', 'vertraege@pfefferminzia.de'));
$import->appendChild($Anschrift_Gesellschaft);
$import->appendChild($doc->createComment('Sparte'));
$import->appendChild($doc->createElement('Sparte', 'HR'));
$import->appendChild($doc->createComment('Alternativ Sparten ID'));
$import->appendChild($doc->createElement('Sparte_ID'));
$import->appendChild($doc->createElement('Vertragsnummer', 'Test 08/15'));
$import->appendChild($doc->createComment('Wenn Ablaufdatum gesetzt wird, wird automatisch die Kündigung zum nächst mgl. Zeitpunkt gewählt'));
$import->appendChild($doc->createElement('Ablaufdatum', '22.03.2017'));
$import->appendChild($doc->createComment('Kündigung|Vertragsänderung|Widerruf'));
$import->appendChild($doc->createElement('mitteilen', 'Widerruf'));
$import->appendChild($doc->createComment('Wenn eine Adressänderung vorausgewählt werden soll'));
$import->appendChild($doc->createElement('AenderungAdresse', true));
$doc->appendChild($import);
$xml = $doc->saveXML();
echo '<pre>';
echo "Request:\n" . htmlspecialchars($xml) . "\n\nResponse:\n";
$xml = $this->execCurl($xml, 'https://www.kuendigungshilfe.info/Import');
echo htmlspecialchars($xml) . '</pre>';
exit;
}
/**
* @param string $content
* @param string $url
* @return mixed
*/
private function execCurl($content, $url)
{
$headers = array(
"POST " . basename($url) . " HTTP/1.0",
"Content-type: text/xml;charset=\"utf-8\"",
"Accept: text/xml",
"Content-length: " . strlen($content)
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $content);
$data = curl_exec($ch);
if (curl_errno($ch)) {
return curl_error($ch);
} else {
curl_close($ch);
return $data;
}
}
}
$Test = new Test();
$Test->start();