Webhooks
Webhooks dienen dazu außerhalb vom Shop bestimmte Aktionen zu versenden. Die Formate der gesendeten Daten entsprechenden den Objekten der
REST API.
Webhook-Passwort
Du kannst optional ein Webhook Passwort festlegen, welches im Header mit gesendet wird. Damit kannst Du prüfen ob eingehende Request vom Shop kommen.
Hinweis: Wenn Dropshipper Bestellungen über die API eingespielt werden und dort eine WebhookUrl angegeben ist, werden die Webhooks für Bestellungen nicht bedient, sondern nur die des Dropshippers.
Verfügbare Webhooks
Bezeichnung |
Aktion |
Beschreibung |
Kunde |
Erstellung |
sendet ein Customer Objekt bei Erstellung eines Kunden |
Kunde |
Aktualisierung |
sendet ein Customer Objekt bei Änderung eines Kunden |
Bestellung |
Erstellung |
sendet ein Orders Objekt bei Erstellung einer Bestellung |
Bestellung |
Statuswechsel |
sendet ein Orders Objekt bei Änderung der Bestellstatusstufe |
Bestellung |
Löschung |
sendet ein Orders Objekt bei Löschung der Bestellung |
Produkt/Artikel |
Bestandsänderung |
sendet ein ProductsStock Objekt bei Änderung des Bestandes (kaufbaren Bestandes) |
Newsletterempfänger |
Erstellung |
sendet ein NewsletterRecipients Objekt bei Erstellung einer Newsletteranmeldung |
Die Daten werden als POST Daten versendet. Folgend findest Du eine PHP Klasse die die Webhookdaten ausliest und zur Verfügung stellt:
Beispiel Webhookhandler Klasse (PHP)
//API Webhook-Handler
class WebhookHandler
{
private $post_data=array();
// Singleton Instance of the Class
private static $instance;
private function __construct()
{
$this->post_data = $this->cleanInputs(json_decode(file_get_contents("php://input"),true));
}
/**
*
* @return WebhookManager
*/
public static function &getInstance()
{
if (! isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c();
}
return self::$instance;
}
// Permitt cloning of the Object
public function __clone()
{
trigger_error('Clone for a Singleton is permitted.', E_USER_ERROR);
}
/**
*
* @return array
*/
public function getPostData()
{
return $this->post_data;
}
private function cleanInputs($data) {
$clean_input = Array();
if (is_array($data)) {
foreach ($data as $k => $v) {
$clean_input[$k] = $this->cleanInputs($v);
}
} else {
$clean_input = trim(strip_tags($data));
}
return $clean_input;
}
}
$data=WebhookHandler::getInstance()->getPostData();