Checkout Form Prefill

Checkout Form Prefill

Form-Prefill ermöglicht die Übermittlung von Daten einer Fremdseite an das Checkout Form 2 - 3. Wenn Sie beispielsweise von Ihrer Landingpage per Verkaufslink auf das Checkout form umleiten und zusätzlich Daten wie Kundenname und Adresse mitgeben möchten, kann dies verschlüsselt über den URL-Parameter "prefill" erfolgen.


Die Daten müssen aus datenschutzrechtlichen Gründen verschlüsselt werden! Für die Verschlüsselung wird "blowfish" genutzt. Näheres dazu mit einem Codebeispiel finden Sie hier.



1. Voraussetzungen

Definition eines Secret Keys in den Account-Einstellungen im MY-Bereich

Für die Verschlüsselung der Formdaten muss ein Secret-Key genutzt werden. Diesen generieren Sie in Ihrem MY-Bereich per Klick auf Ihren Vendor-Namen Account-Einstellungen → API → Secret-Key → Generieren.


       


2. Formdaten

Die Formdaten werden als JSON-String verschlüsselt an den Parameter "prefill" gehangen. Zur Verfügung stehen folgende Felder für die Übermittlung:

Basis-DatenRechnungsadresseLieferadresseBenutzerdefinierte Daten (Parameter "custom")
  • basic_addr_company
  • basic_addr_firstname
  • basic_addr_lastname
  • basic_addr_street
  • basic_addr_street2
  • basic_addr_city
  • basic_addr_zip
  • basic_addr_country
  • basic_addr_email
  • billing_addr_company
  • billing_addr_firstname
  • billing_addr_lastname
  • billing_addr_street
  • billing_addr_street2
  • billing_addr_city
  • billing_addr_zip
  • billing_addr_country
  • billing_addr_email


  • shipping_addr_company
  • shipping_addr_firstname
  • shipping_addr_lastname
  • shipping_addr_street
  • shipping_addr_street2
  • shipping_addr_city
  • shipping_addr_zip
  • shipping_addr_country

Benuterdefinierte Werte / Informationen können über den Parameter "custom" mitgegeben werden. Entweder in einem normalen String oder JSON-String. Die maximale Zeichenlänge beträgt 265 Zeichen.

Die mitgegebenen Daten im Custom-Parameter werden bei jedem ITNS-Callback mitgeliefert.

(info) Zudem ist es möglich über den Custom-Parameter eine ITNS-Anbindung zu registrieren. Lesen Sie dazu den Artikel ITNS-Registrierung über den Custom-Parameter.


3. Verschlüsselung der zu übermittelnden Daten

Die mitgesendeten Daten im Parameter "prefill" müssen verschlüsselt werden, weil GET-Requests geloggt werden und aber auch von außerhalb abgreifbar sind. Die Verschlüsselung erfolgt mittels Blowfish und dem Secret-Key (Punkt 1.1).

PHP-Beispiel für die Verschlüsselung und Aufruf des Checkout forms
$secretKey = "4ca5738c78026a8e6658ce910dfd597a";
$productId = "123";

$basicAddress = [
    "basic_addr_email"      => "max.mustermann@mustermann.gmbh",
    "billing_addr_company"    => "Mustermann GmbH",
    "billing_addr_firstname"  => "Max",
    "billing_addr_lastname"   => "Mustermann",
    "billing_addr_street"     => "Musterweg 1",
    "billing_addr_street2"    => "2. OG",
    "billing_addr_city"       => "Musterstadt",
    "billing_addr_zip"        => "12345",
    "billing_addr_country"    => "Deutschland"
];

$jsonEncodedBasicAddress = json_encode($basicAddress);

$encryptedPrefillData = openssl_encrypt($jsonEncodedBasicAddress, 'blowfish', $secretKey);

$checkoutFormUrl = "https://secure.affilibank.de/index?product=$productId&prefill=$encryptedPrefillData";

// Redirect to the checkout form
header('Location: ' . $checkoutFormUrl, true, $statusCode);
die();


Folgendes Beispiel nutzt die Blowfish-Library https://www.npmjs.com/package/javascript-blowfish.

Javascript-Beispiel für die Verschlüsselung und Aufruf des Checkout forms
// Blowfish-Library: https://www.npmjs.com/package/javascript-blowfish

var secretKey = "4ca5738c78026a8e6658ce910dfd597a";
var productId = "123"

var basicAddress = {
  basic_addr_email: "max.mustermann@mustermann.gmbh",
  billing_addr_company: "Mustermann GmbH",
  billing_addr_firstname: "Max",
  billing_addr_lastname: "Mustermann",
  billing_addr_street: "Musterweg 1",
  billing_addr_street2: "2. OG",
  billing_addr_city: "Musterstadt",
  billing_addr_zip: "12345",
  billing_addr_country: "Deutschland"
};

var prefillData = JSON.stringify(basicAddress);

var bf = new Blowfish(secretKey);
var encryptedPrefillData = bf.encrypt(prefillData);

var checkoutFormUrl = 'secure.affilibank.de/index?product='+productId+'&prefill='+encryptedPrefillData;

// Redirect to the checkout form
window.location.assign(checkoutFormUrl);



Die URL könnte dann wie folgt aussehen:

http://secure.affilibank.de/index?product=123&prefill=2TZZRFoagwAiTld%2BktkkpiOfWNTRZUGQY%2FydpkfjFSEABjBD8I2uDJ8CY...