Zum Inhalt

Tutorial URL-Benachrichtigung

Über die URL-Benachrichtigung ruft wpShopGermany bei bestimmten Aktionen ein externes Skript auf und übergibt ihm Daten per POST. So lassen sich viele Aufgaben automatisieren, z. B. Zugänge nach der Bezahlung freischalten oder Bestellungen an ein anderes System melden.

Der Shop kann bei folgenden Aktionen ein Skript aufrufen:

  • Kauf eines Produkts (typ = buy)
  • Bezahlung eines Produkts (typ = pay)
  • Schreiben einer Rechnung zu einer Bestellung (typ = rechnung)

Dazu kommen Benachrichtigungen der Module Aboprodukte und Lieferschein. Welche Daten der Shop jeweils sendet, beschreibt die Referenzseite URL-Benachrichtigungen.

Schritt 1: Testskript anlegen

Speichern Sie folgendes Skript auf einem Webserver, den der Shop erreichen kann, z. B. als https://shop.test/benachrichtigung.php. Tragen Sie Ihren SALT-Schlüssel und Ihre E-Mail-Adresse ein.

<?php

    /**
     * Damit Anfragen nicht gefälscht werden können, hier den Schlüssel eintragen,
     * der im Shop unter wpShopGermany → Konfiguration → Einstellungen → Erweitert → "SALT Schlüssel" steht.
     */
    $salt_key = "{Hier Ihren SALT Schlüssel eintragen}";

    // Prüfsumme kontrollieren
    $hash = md5($salt_key.$_POST['time']);

    if (!hash_equals($hash, (string)($_POST['hash'] ?? ''))) die("Fehler bei der Anfrage!");

    /**
     * Zum Testen die übergebenen Daten per Mail senden.
     * Ist das Skript fertig und getestet, diese Zeile auskommentieren.
     */
    mail("{Hier Ihre E-Mail eintragen}", "wpShopGermany URL-Benachrichtigungstest", print_r($_POST, true));

    if ($_POST['typ'] === 'buy') {

        // Ein Produkt wurde gekauft
        $product_id = $_POST['product_id'];
        $order_id = $_POST['order_id'];
        $customer_id = $_POST['customer_id'];
        $menge = $_POST['menge'];

        // TODO: Aktion beim Kauf eines Produkts

    } else if ($_POST['typ'] === 'pay') {

        // Ein Produkt wurde bezahlt
        $product_id = $_POST['product_id'];
        $order_id = $_POST['order_id'];
        $customer_id = $_POST['customer_id'];
        $menge = $_POST['menge'];

        // TODO: Aktion bei Bezahlung eines Produkts

    } else if ($_POST['typ'] === 'rechnung') {

        // Eine Rechnung zu einer Bestellung wurde geschrieben
        $order_id = $_POST['order_id'];
        $customer_id = $_POST['customer_id'];

        // TODO: Aktion beim Schreiben einer Rechnung

    }

Bei Kauf und Bezahlung wird das Skript einmal je Produkt der Bestellung aufgerufen. Alle Produktfelder stehen als $_POST['product_{Spalte}'] bereit, Bestellfelder als $_POST['order_{Spalte}'] und Kundenfelder als $_POST['customer_{Spalte}'], z. B. $_POST['product_name'], $_POST['order_onr'] oder $_POST['customer_email']. Die vollständige Liste und ein Beispiel stehen unter URL-Benachrichtigungen.

Schritt 2: Benachrichtigung bei Kauf/Bezahlung einrichten

Öffnen Sie in der Produktverwaltung das gewünschte Produkt. Im Reiter Allgemein finden Sie den Kasten URL Benachrichtigung:

  • URL: vollständige Adresse Ihres Skripts
  • Beim Verkauf: Aufruf, sobald eine Bestellung mit dem Produkt abgeschlossen wird (typ = buy)
  • Bei Bezahlung: Aufruf, sobald die Bestellung in den Status „Zahlung akzeptiert“ wechselt (typ = pay)

Speichern Sie das Produkt. Die Einstellung gilt nur für dieses Produkt; für weitere Produkte richten Sie sie jeweils dort ein.

Kasten „URL Benachrichtigung“ im Reiter „Allgemein“ eines Produkts

Schritt 3: Benachrichtigung beim Schreiben einer Rechnung einrichten

Dafür muss das Modul Rechnungen aktiv sein. Die URL gilt für alle Bestellungen:

  1. Tragen Sie unter wpShopGermany → Konfiguration → Module → Rechnungen, Reiter Sonstiges, die Adresse im Feld URL Benachrichtigung ein und speichern Sie.
  2. Setzen Sie beim Schreiben einer Rechnung in der Bestellansicht (Reiter Rechnung erstellen) den Haken URL Benachrichtigung. Auch beim Schreiben einer Sammelrechnung aus der Bestellübersicht steht dieser Haken zur Verfügung.

$_POST['typ'] hat dann den Wert rechnung. Diese Benachrichtigung bezieht sich auf die Bestellung und enthält daher keine Produktdaten, nur order_… und customer_….

Hinweis

Rechnungen, die über die Sammelaktion Rechnung schreiben in der Bestellübersicht oder automatisch erstellt werden, lösen keine URL-Benachrichtigung aus.

Feld „URL Benachrichtigung“ im Rechnungsmodul, Reiter „Sonstiges“

Haken „URL Benachrichtigung“ im Reiter „Rechnung erstellen“ der Bestellansicht

Schritt 4: Testen

Legen Sie eine Testbestellung mit dem Produkt an. Sie sollten danach eine Mail mit den übermittelten Daten erhalten.

Ist unter wpShopGermany → Konfiguration → Erweitert der Debug Modus aktiv, zeigt die Bestellansicht zusätzlich den Reiter Entwickleroptionen. Dort lösen Sie die Benachrichtigungen für eine bestehende Bestellung erneut aus: URL Benachrichtigung (Kauf) auslösen und URL Benachrichtigung (Bezahlung) auslösen.

Funktioniert alles, kommentieren Sie im Skript die Zeile mit mail(…) aus und ergänzen Sie Ihre eigenen Aktionen.