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.
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-Daten | Rechnungsadresse | Lieferadresse | Benutzerdefinierte Daten (Parameter "custom") |
---|---|---|---|
|
|
| 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. |
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).
$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.
// 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: