{"id":233292,"date":"2026-05-15T11:16:45","date_gmt":"2026-05-15T09:16:45","guid":{"rendered":"https:\/\/deinperfectday.de\/anbieter-shop-anbindung-prestashop\/"},"modified":"2026-05-15T11:16:45","modified_gmt":"2026-05-15T09:16:45","slug":"anbieter-shop-anbindung-prestashop","status":"publish","type":"page","link":"https:\/\/deinperfectday.de\/tr\/anbieter-shop-anbindung-prestashop\/","title":{"rendered":"LP Shop-Anbindung \u2014 PrestaShop"},"content":{"rendered":"<div class=\"pd-scope\">        <div class=\"pd-scope\">\n        <header id=\"site-header\">\n          <div class=\"container nav\">\n            <a href=\"https:\/\/deinperfectday.de\/tr\/\" class=\"logo logo-image\" aria-label=\"Perfect Day Startseite\">\n              <img src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" alt=\"Perfect Day \u2014 Enjoy your experience\" width=\"220\" height=\"50\" fetchpriority=\"high\" decoding=\"async\" class=\"lazyload\" data-src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/perfectday-pages-plugin\/assets\/images\/icons\/logo-dunkel.png\">\n            <\/a>\n\n            <button\n              type=\"button\"\n              class=\"mega-toggle\"\n              id=\"megaToggle\"\n              aria-expanded=\"false\"\n              aria-controls=\"mega-menu\"\n              aria-label=\"Hauptmen\u00fc \u00f6ffnen\">\n              <span class=\"mega-toggle-text\">Men\u00fc<\/span>\n              <span class=\"mega-toggle-icon\" aria-hidden=\"true\">\n                <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M4 7h16M4 12h16M4 17h16\"\/><\/svg>\n              <\/span>\n            <\/button>\n\n            <div class=\"nav-cta\">\n              <a class=\"btn btn-ghost\" href=\"https:\/\/plattform.deinperfectday.de\/\">Anmelden<\/a>\n              <a class=\"btn btn-primary\" href=\"https:\/\/deinperfectday.de\/tr\/anbieter-werden\/\">Jetzt Anbieter werden <span class=\"arrow\" aria-hidden=\"true\">\u2192<\/span><\/a>\n            <\/div>\n          <\/div>\n\n          <!-- ============== MEGA MENU DRAWER ============== -->\n          <div class=\"mega-menu\" id=\"mega-menu\" hidden role=\"dialog\" aria-modal=\"false\" aria-label=\"Hauptmen\u00fc\">\n            <div class=\"container mega-grid\">\n\n              <!-- Spalte 1: F\u00fcr Anbieter -->\n              <div class=\"mega-col\">\n                <h3 class=\"mega-col-title\">F\u00fcr Anbieter<\/h3>\n                <ul class=\"mega-list\">\n                                      <li>\n                      <a href=\"https:\/\/deinperfectday.de\/tr\/stadtgutscheine\/\">\n                        <strong>Stadtgutscheine<\/strong>\n                        <span>Multi-Anbieter-Gutscheine, Teil-Einl\u00f6sung, Restguthaben automatisch.<\/span>\n                      <\/a>\n                    <\/li>\n                                      <li>\n                      <a href=\"https:\/\/deinperfectday.de\/tr\/online-ticketing\/\">\n                        <strong>Online-Ticketing<\/strong>\n                        <span>0,49 \u20ac\/Ticket. Keine Buchungsgeb\u00fchr f\u00fcr deine G\u00e4ste.<\/span>\n                      <\/a>\n                    <\/li>\n                                      <li>\n                      <a href=\"https:\/\/deinperfectday.de\/tr\/gutscheinbuecher\/\">\n                        <strong>Gutscheinb\u00fccher<\/strong>\n                        <span>Digital, 5-sprachig, sofortige Updates. Keine Druckkosten.<\/span>\n                      <\/a>\n                    <\/li>\n                                      <li>\n                      <a href=\"https:\/\/deinperfectday.de\/tr\/coupons\/\">\n                        <strong>Coupons<\/strong>\n                        <span>Ab 9,90 \u20ac\/Monat. Drei Tiers, fester Preis, monatlich k\u00fcndbar.<\/span>\n                      <\/a>\n                    <\/li>\n                                    <li class=\"mega-list-divider\">\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/preise\/\">\n                      <strong>Preise &amp; Modelle<\/strong>\n                      <span>Transparente Konditionen, 10 % B\u00fcndel-Rabatt f\u00fcr drei S\u00e4ulen.<\/span>\n                    <\/a>\n                  <\/li>\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/buchen\/\">\n                      <strong>S\u00e4ulen buchen<\/strong>\n                      <span>Buchungs-Assistent: S\u00e4ulen w\u00e4hlen und verbindlich buchen.<\/span>\n                    <\/a>\n                  <\/li>\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/anbieter-werden\/\" class=\"mega-link-highlight\">\n                      <strong>Anbieter werden \u2192<\/strong>\n                      <span>Kostenfrei registrieren, schnelle R\u00fcckmeldung.<\/span>\n                    <\/a>\n                  <\/li>\n                <\/ul>\n              <\/div>\n\n              <!-- Spalte 2: Entdecken & Konzept -->\n              <div class=\"mega-col\">\n                <h3 class=\"mega-col-title\">Entdecken<\/h3>\n                <ul class=\"mega-list\">\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/app\/\">\n                      <strong>App entdecken<\/strong>\n                      <span>Wie die Endkunden-App funktioniert.<\/span>\n                    <\/a>\n                  <\/li>\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/roi-rechner\/\">\n                      <strong>ROI-Rechner<\/strong>\n                      <span>Plattform-Kosten pro Jahr in 10 Sekunden.<\/span>\n                    <\/a>\n                  <\/li>\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/app-versionen\/\">\n                      <strong>App-Versionen<\/strong>\n                      <span>Was ist neu in der App \u2014 der Versionsverlauf.<\/span>\n                    <\/a>\n                  <\/li>\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/#prinzip\">\n                      <strong>Das Konzept<\/strong>\n                      <span>Cross-Pollination der vier S\u00e4ulen erkl\u00e4rt.<\/span>\n                    <\/a>\n                  <\/li>\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/anbieter\/\">\n                      <strong>Anbieter-Hub<\/strong>\n                      <span>\u00dcbersicht aller S\u00e4ulen mit Wettbewerbsvergleich.<\/span>\n                    <\/a>\n                  <\/li>\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/mitarbeiter-benefits\/\">\n                      <strong>Mitarbeiter-Benefits<\/strong>\n                      <span>Firmen-Abos: Stadtgutscheine automatisiert f\u00fcrs Team.<\/span>\n                    <\/a>\n                  <\/li>\n                <\/ul>\n\n                <h3 class=\"mega-col-title\" style=\"margin-top: 1.6rem;\">Stadtgutschein live in<\/h3>\n                <p class=\"mega-cities\">\n                  Garrel \u00b7 L\u00f6ningen \u00b7 Twistringen<br>\n                  <small>Weitere St\u00e4dte folgen 2026.<\/small>\n                <\/p>\n              <\/div>\n\n              <!-- Spalte 3: Service + Account -->\n              <div class=\"mega-col\">\n                <h3 class=\"mega-col-title\">Service<\/h3>\n                <ul class=\"mega-list\">\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/hilfe\/\">\n                      <strong>Hilfe &amp; Funktionen<\/strong>\n                      <span>Alle App-Funktionen Schritt f\u00fcr Schritt erkl\u00e4rt.<\/span>\n                    <\/a>\n                  <\/li>\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/support\/\">\n                      <strong>Support<\/strong>\n                      <span>Hilfe f\u00fcr Anbieter und Kunden.<\/span>\n                    <\/a>\n                  <\/li>\n                  <li>\n                    <a href=\"https:\/\/plattform.deinperfectday.de\/\">\n                      <strong>Plattform-Login<\/strong>\n                      <span>F\u00fcr aktive Anbieter mit Account.<\/span>\n                    <\/a>\n                  <\/li>\n                <\/ul>\n\n                                  <h3 class=\"mega-col-title\" style=\"margin-top: 1.6rem;\">Sprache<\/h3>\n                  <div class=\"mega-lang-switcher\"><div class=\"trp-shortcode-switcher__wrapper\"\r\n     style=\"--bg:#ffffff;--bg-hover:#0000000d;--text:#143852;--text-hover:#1d2327;--border:1px solid #1438521a;--border-width:1px;--border-color:#1438521a;--border-radius:5px;--flag-radius:2px;--flag-size:18px;--aspect-ratio:4\/3;--font-size:14px;--transition-duration:0.2s\"\r\n     role=\"group\"\r\n     data-open-mode=\"hover\">\r\n\r\n    \r\n        <!-- ANCHOR (in-flow only; sizing\/borders; inert) -->\r\n        <div class=\"trp-language-switcher trp-ls-dropdown trp-shortcode-switcher trp-shortcode-anchor trp-open-on-hover\"\r\n             aria-hidden=\"true\"\r\n             inert\r\n             data-no-translation>\r\n                <div class=\"trp-current-language-item__wrapper\">\r\n        <a class=\"trp-language-item trp-language-item__default trp-language-item__current\" data-no-translation href=\"https:\/\/deinperfectday.de\/tr\/wp-json\/wp\/v2\/pages\/233292#TRPLINKPROCESSED\" title=\"Turkish\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"trp-flag-image lazyload\" alt=\"\" role=\"presentation\" loading=\"lazy\" data-src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/translatepress-multilingual\/assets\/flags\/4x3\/tr_TR.svg\"><span class=\"trp-language-item-name\">Turkish<\/span><\/a>                    <svg class=\"trp-shortcode-arrow\" width=\"20\" height=\"20\" viewBox=\"0 0 20 21\" fill=\"none\" aria-hidden=\"true\" focusable=\"false\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                <path d=\"M5 8L10 13L15 8\" stroke=\"var(--text)\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n            <\/svg>\r\n            <\/div>\r\n            <\/div>\r\n\r\n        <!-- OVERLAY (positioned; interactive surface) -->\r\n        <div class=\"trp-language-switcher trp-ls-dropdown trp-shortcode-switcher trp-shortcode-overlay trp-open-on-hover\"\r\n             role=\"navigation\"\r\n             aria-label=\"Website language selector\"\r\n             data-no-translation\r\n        >\r\n                <div class=\"trp-current-language-item__wrapper\">\r\n        <div class=\"trp-language-item trp-language-item__default trp-language-item__current\" data-no-translation role=\"button\" aria-expanded=\"false\" tabindex=\"0\" aria-label=\"Change language\" aria-controls=\"trp-shortcode-dropdown-6a0c07f920b33\"><img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"trp-flag-image lazyload\" alt=\"\" role=\"presentation\" loading=\"lazy\" data-src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/translatepress-multilingual\/assets\/flags\/4x3\/tr_TR.svg\"><span class=\"trp-language-item-name\">Turkish<\/span><\/div>                    <svg class=\"trp-shortcode-arrow\" width=\"20\" height=\"20\" viewBox=\"0 0 20 21\" fill=\"none\" aria-hidden=\"true\" focusable=\"false\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                <path d=\"M5 8L10 13L15 8\" stroke=\"var(--text)\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n            <\/svg>\r\n            <\/div>\r\n    \r\n            <div class=\"trp-switcher-dropdown-list\"\r\n                 id=\"trp-shortcode-dropdown-6a0c07f920b33\"\r\n                 role=\"group\"\r\n                 aria-label=\"Available languages\"\r\n                 hidden\r\n                 inert\r\n            >\r\n                                                            <a class=\"trp-language-item\" href=\"https:\/\/deinperfectday.de\/tr\/wp-json\/wp\/v2\/pages\/233292#TRPLINKPROCESSED\" title=\"German\">\r\n                            <img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"trp-flag-image lazyload\" alt=\"\" role=\"presentation\" loading=\"lazy\" data-src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/translatepress-multilingual\/assets\/flags\/4x3\/de_DE.svg\">                                                            <span class=\"trp-language-item-name\" data-no-translation>German<\/span>\r\n                                                                                <\/a>\r\n                                            <a class=\"trp-language-item\" href=\"https:\/\/deinperfectday.de\/tr\/wp-json\/wp\/v2\/pages\/233292#TRPLINKPROCESSED\" title=\"English\">\r\n                            <img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"trp-flag-image lazyload\" alt=\"\" role=\"presentation\" loading=\"lazy\" data-src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/translatepress-multilingual\/assets\/flags\/4x3\/en_GB.svg\">                                                            <span class=\"trp-language-item-name\" data-no-translation>English<\/span>\r\n                                                                                <\/a>\r\n                                            <a class=\"trp-language-item\" href=\"https:\/\/deinperfectday.de\/tr\/wp-json\/wp\/v2\/pages\/233292#TRPLINKPROCESSED\" title=\"Spanish\">\r\n                            <img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"trp-flag-image lazyload\" alt=\"\" role=\"presentation\" loading=\"lazy\" data-src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/translatepress-multilingual\/assets\/flags\/4x3\/es_ES.svg\">                                                            <span class=\"trp-language-item-name\" data-no-translation>Spanish<\/span>\r\n                                                                                <\/a>\r\n                                            <a class=\"trp-language-item\" href=\"https:\/\/deinperfectday.de\/tr\/wp-json\/wp\/v2\/pages\/233292#TRPLINKPROCESSED\" title=\"Russian\">\r\n                            <img decoding=\"async\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"trp-flag-image lazyload\" alt=\"\" role=\"presentation\" loading=\"lazy\" data-src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/translatepress-multilingual\/assets\/flags\/4x3\/ru_RU.svg\">                                                            <span class=\"trp-language-item-name\" data-no-translation>Russian<\/span>\r\n                                                                                <\/a>\r\n                                                <\/div>\r\n        <\/div>\r\n\r\n    <\/div>\r\n<\/div>\n                \n                <h3 class=\"mega-col-title\" style=\"margin-top: 1.6rem;\">Lade die App<\/h3>\n                                  <div class=\"app-badges mega-app-badges\">\n                                          <a href=\"https:\/\/apps.apple.com\/de\/app\/id1525409363\" class=\"app-badge\" target=\"_blank\" rel=\"noopener\" aria-label=\"Perfect Day im Apple App Store \u00f6ffnen\">\n                        <img src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" alt=\"Im Apple App Store laden\" width=\"135\" height=\"40\" loading=\"lazy\" decoding=\"async\" class=\"lazyload\" data-src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/perfectday-pages-plugin\/assets\/images\/icons\/badge-app-store.png\">\n                      <\/a>\n                                                              <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=koop.perfect.day&#038;utm_source=emea_Med\" class=\"app-badge\" target=\"_blank\" rel=\"noopener\" aria-label=\"Perfect Day im Google Play Store \u00f6ffnen\">\n                        <img src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" alt=\"Im Google Play Store laden\" width=\"135\" height=\"40\" loading=\"lazy\" decoding=\"async\" class=\"lazyload\" data-src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/perfectday-pages-plugin\/assets\/images\/icons\/badge-play-store.png\">\n                      <\/a>\n                                      <\/div>\n                \n                <h3 class=\"mega-col-title\" style=\"margin-top: 1.6rem;\">Rechtliches<\/h3>\n                <ul class=\"mega-list mega-list-compact\">\n                                    <li><a href=\"https:\/\/deinperfectday.de\/impressum\/\">Impressum<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/datenschutz\/\">Datenschutz (Webseite)<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/anbieter-agb\/\">Anbieter-AGB<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/agb\/terms-of-service\/\">App-Nutzungsbedingungen<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/datenschutzerklaerung\/\">App-Datenschutz<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/konto-loeschen\/\">Konto l\u00f6schen<\/a><\/li>\n                <\/ul>\n              <\/div>\n\n            <\/div>\n\n            <button type=\"button\" class=\"mega-close\" id=\"megaClose\" aria-label=\"Men\u00fc schlie\u00dfen\">\n              <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" aria-hidden=\"true\"><path d=\"M6 6l12 12M6 18L18 6\"\/><\/svg>\n            <\/button>\n          <\/div>\n          <!-- End Mega Menu -->\n\n        <\/header>\n        <\/div>\n                <main id=\"main\">\n\n          <nav class=\"container breadcrumb\" aria-label=\"Brotkrumen-Navigation\">\n            <ol>\n              <li><a href=\"https:\/\/deinperfectday.de\/tr\/\">Startseite<\/a><\/li>\n              <li><a href=\"https:\/\/deinperfectday.de\/tr\/anbieter\/\">F\u00fcr Anbieter<\/a><\/li>\n              <li><a href=\"https:\/\/deinperfectday.de\/tr\/anbieter-shop-anbindung\/\">Shop-Anbindung<\/a><\/li>\n              <li><span aria-current=\"page\">PrestaShop<\/span><\/li>\n            <\/ol>\n          <\/nav>\n\n          <!-- Hero -->\n          <section class=\"subhero subhero-compact et_pb_section\" aria-label=\"Einf\u00fchrung\">\n            <div class=\"container\">\n              <div class=\"reveal subhero-center\">\n                <span class=\"eyebrow\"><span class=\"pulse\" aria-hidden=\"true\"><\/span> &nbsp;PrestaShop \u00b7 20\u201325 Min \u00b7 mittel<\/span>\n                <h1>Perfect Day in PrestaShop anbinden.<\/h1>\n                <p class=\"subhero-sub\">Verkauf deine Perfect-Day-Coupons \u00fcber deinen PrestaShop. PrestaShop hat keine eingebaute Webhook-Funktion \u2014 du brauchst ein kleines Custom-Modul, das auf das Bestell-Event lauscht. <strong>Hinweis:<\/strong> Diese Anleitung gilt f\u00fcr PrestaShop 1.7+.<\/p>\n              <\/div>\n            <\/div>\n          <\/section>\n\n                    <!-- Voraussetzungs-Callout -->\n          <div class=\"container\">\n            <div class=\"guide-callout reveal\">\n              <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M12 16v-4M12 8h.01\"\/><\/svg>\n              <p><strong>Vorab n\u00f6tig:<\/strong> Geh einmal die <a href=\"https:\/\/deinperfectday.de\/tr\/anbieter-shop-anbindung-vorbereitung\/\">allgemeine Vorbereitung<\/a> durch \u2014 Coupon anlegen, Anwendungspasswort holen, Webhook-URL bereitlegen. Dauert rund f\u00fcnf Minuten und gilt f\u00fcr alle Shop-Systeme.<\/p>\n            <\/div>\n          <\/div>\n          \n          <!-- Anleitungs-Abschnitte -->\n                    <section class=\"block guide-section et_pb_section\" aria-labelledby=\"sec-0\">\n            <div class=\"container guide-container\">\n              <h2 id=\"sec-0\" class=\"guide-section-title\">Schritt 1 \u2014 Eigenschaft f\u00fcr die Coupon-ID anlegen<\/h2>\n                              <p class=\"guide-section-intro\">PrestaShop hat sogenannte \u201eEigenschaften\" (engl. \u201eFeatures\"), mit denen du beliebige Daten an Produkte h\u00e4ngen kannst.<\/p>\n                                          <ol class=\"guide-steps\">\n                                  <li class=\"guide-step reveal\">\n                                          <h3 class=\"guide-step-title\">Neue Eigenschaft erstellen<\/h3>\n                                                              <div class=\"guide-step-body\"><p>PrestaShop-Admin \u2192 <strong>Katalog \u2192 Attribute &amp; Eigenschaften \u2192 Eigenschaften<\/strong> \u2192 <strong>\u201eNeue Eigenschaft hinzuf\u00fcgen\"<\/strong>. Name: <code>Perfect Day Coupon-ID<\/code>. Speichern. Dann unter <strong>\u201eWerte\"<\/strong> pro Coupon-Variante einen Wert anlegen (z. B. <code>15114<\/code>, <code>15115<\/code>).<\/p><\/div>\n                                                          <\/li>\n                                  <li class=\"guide-step reveal\">\n                                          <h3 class=\"guide-step-title\">Eigenschaft pro Produkt zuweisen<\/h3>\n                                                              <div class=\"guide-step-body\"><p>Im Produkt-Editor \u2192 Tab <strong>\u201eFunktionen\"<\/strong> \u2192 <strong>\u201ePerfect Day Coupon-ID\"<\/strong> w\u00e4hlen \u2192 den passenden Wert zuweisen \u2192 speichern.<\/p><p>Die Eigenschaften-Variante ist besser geeignet als ein Custom-Field, da Custom-Fields in PrestaShop nur f\u00fcr Kunden-Eingaben gedacht sind, nicht f\u00fcr Backend-Verkn\u00fcpfungen.<\/p><\/div>\n                                                          <\/li>\n                              <\/ol>\n                          <\/div>\n          <\/section>\n                    <section class=\"block guide-section et_pb_section\" style=\"background: var(--paper);\" aria-labelledby=\"sec-1\">\n            <div class=\"container guide-container\">\n              <h2 id=\"sec-1\" class=\"guide-section-title\">Schritt 2 \u2014 Custom-Modul f\u00fcr den Webhook<\/h2>\n                              <p class=\"guide-section-intro\">Das Modul lauscht auf den Hook <code>actionValidateOrder<\/code> und schickt die Bestellung an Perfect Day.<\/p>\n                                          <ol class=\"guide-steps\">\n                                  <li class=\"guide-step reveal\">\n                                          <h3 class=\"guide-step-title\">Modul-Struktur anlegen<\/h3>\n                                                              <div class=\"guide-step-body\"><p>Das Modul besteht aus zwei Dateien:<\/p><\/div>\n                                        <div class=\"code-block\"><div class=\"code-block-bar\"><span class=\"code-lang\">Verzeichnisstruktur<\/span><\/div><pre><code>modules\/perfectdayconnector\/\n\u251c\u2500\u2500 perfectdayconnector.php\n\u2514\u2500\u2500 config.xml<\/code><\/pre><\/div>                  <\/li>\n                                  <li class=\"guide-step reveal\">\n                                          <h3 class=\"guide-step-title\">perfectdayconnector.php<\/h3>\n                                                              <div class=\"guide-step-body\"><p>Die Hauptdatei des Moduls \u2014 registriert den Order-Hook, liest die Coupon-ID-Eigenschaft pro Produkt und sendet den Webhook. Rund 80 Zeilen.<\/p><\/div>\n                                        <details class=\"code-collapsible reveal\"><summary>Vollst\u00e4ndigen Code anzeigen \u2014 PHP \u00b7 perfectdayconnector.php<\/summary><div class=\"code-block\"><div class=\"code-block-bar\"><span class=\"code-lang\">PHP \u00b7 perfectdayconnector.php<\/span><\/div><pre><code>&lt;?php\nif (!defined(&#039;_PS_VERSION_&#039;)) exit;\n\nclass PerfectDayConnector extends Module\n{\n    public function __construct()\n    {\n        $this-&gt;name = &#039;perfectdayconnector&#039;;\n        $this-&gt;tab = &#039;export&#039;;\n        $this-&gt;version = &#039;1.0.0&#039;;\n        $this-&gt;author = &#039;DigElite&#039;;\n        $this-&gt;bootstrap = true;\n        parent::__construct();\n        $this-&gt;displayName = $this-&gt;l(&#039;Perfect Day Connector&#039;);\n        $this-&gt;description = $this-&gt;l(&#039;Schickt Bestellungen mit Perfect-Day-Coupon-IDs an die Plattform.&#039;);\n        $this-&gt;ps_versions_compliancy = [&#039;min&#039; =&gt; &#039;1.7&#039;, &#039;max&#039; =&gt; _PS_VERSION_];\n    }\n\n    public function install()\n    {\n        return parent::install()\n            &amp;&amp; $this-&gt;registerHook(&#039;actionValidateOrder&#039;)\n            &amp;&amp; Configuration::updateValue(&#039;PFD_API_USER&#039;, &#039;&#039;)\n            &amp;&amp; Configuration::updateValue(&#039;PFD_API_PASSWORD&#039;, &#039;&#039;);\n    }\n\n    public function uninstall()\n    {\n        Configuration::deleteByName(&#039;PFD_API_USER&#039;);\n        Configuration::deleteByName(&#039;PFD_API_PASSWORD&#039;);\n        return parent::uninstall();\n    }\n\n    public function hookActionValidateOrder($params)\n    {\n        $order = $params[&#039;order&#039;];\n        if (!$order) return;\n\n        $items = [];\n        foreach ($params[&#039;cart&#039;]-&gt;getProducts() as $p) {\n            $couponId = $this-&gt;getProductFeatureValue($p[&#039;id_product&#039;], &#039;Perfect Day Coupon-ID&#039;);\n            if (!$couponId) continue;\n            $items[] = [&#039;coupon_id&#039; =&gt; (int)$couponId, &#039;count&#039; =&gt; (int)$p[&#039;cart_quantity&#039;]];\n        }\n        if (empty($items)) return;\n\n        $customer = new Customer($order-&gt;id_customer);\n        $payload = [\n            &#039;shop_order_id&#039; =&gt; (string) $order-&gt;reference,\n            &#039;shop_type&#039;     =&gt; &#039;prestashop&#039;,\n            &#039;shop_domain&#039;   =&gt; Tools::getShopDomain(),\n            &#039;customer&#039; =&gt; [\n                &#039;email&#039;  =&gt; $customer-&gt;email,\n                &#039;name&#039;   =&gt; trim($customer-&gt;firstname . &#039; &#039; . $customer-&gt;lastname),\n                &#039;locale&#039; =&gt; substr(Context::getContext()-&gt;language-&gt;iso_code, 0, 2),\n            ],\n            &#039;items&#039;             =&gt; $items,\n            &#039;order_total_cents&#039; =&gt; (int) round($order-&gt;total_paid * 100),\n            &#039;currency&#039;          =&gt; Context::getContext()-&gt;currency-&gt;iso_code,\n            &#039;placed_at&#039;         =&gt; $order-&gt;date_add,\n        ];\n\n        $user = Configuration::get(&#039;PFD_API_USER&#039;);\n        $pwd  = Configuration::get(&#039;PFD_API_PASSWORD&#039;);\n\n        $ch = curl_init(&#039;https:\/\/plattform.deinperfectday.de\/wp-json\/perfectday\/shop\/webhook\/order&#039;);\n        curl_setopt_array($ch, [\n            CURLOPT_POST           =&gt; 1,\n            CURLOPT_RETURNTRANSFER =&gt; 1,\n            CURLOPT_HTTPHEADER     =&gt; [\n                &#039;Content-Type: application\/json&#039;,\n                &#039;Authorization: Basic &#039; . base64_encode($user . &#039;:&#039; . $pwd),\n            ],\n            CURLOPT_POSTFIELDS =&gt; json_encode($payload),\n            CURLOPT_TIMEOUT    =&gt; 15,\n        ]);\n        curl_exec($ch);\n        curl_close($ch);\n    }\n\n    private function getProductFeatureValue($idProduct, $featureName)\n    {\n        $sql = &#039;SELECT fvl.value FROM &#039; . _DB_PREFIX_ . &#039;feature_product fp&#039;\n             . &#039; INNER JOIN &#039; . _DB_PREFIX_ . &#039;feature_lang fl ON fl.id_feature = fp.id_feature&#039;\n             . &#039; INNER JOIN &#039; . _DB_PREFIX_ . &#039;feature_value_lang fvl ON fvl.id_feature_value = fp.id_feature_value&#039;\n             . &#039; WHERE fp.id_product = &#039; . (int)$idProduct\n             . &quot; AND fl.name = &#039;&quot; . pSQL($featureName) . &quot;&#039;&quot;\n             . &#039; LIMIT 1&#039;;\n        return Db::getInstance()-&gt;getValue($sql);\n    }\n}<\/code><\/pre><\/div><\/details>                  <\/li>\n                                  <li class=\"guide-step reveal\">\n                                          <h3 class=\"guide-step-title\">Modul installieren<\/h3>\n                                                              <div class=\"guide-step-body\"><p>Den Modul-Ordner als ZIP packen, dann PrestaShop-Admin \u2192 <strong>Module \u2192 Module-Manager \u2192 Modul hochladen<\/strong> \u2192 ZIP rein \u2192 installieren \u2192 aktivieren.<\/p><\/div>\n                                                          <\/li>\n                                  <li class=\"guide-step reveal\">\n                                          <h3 class=\"guide-step-title\">Credentials konfigurieren<\/h3>\n                                                              <div class=\"guide-step-body\"><p>Trag deine Zugangsdaten als Konfigurations-Werte ein \u2014 <code>PFD_API_USER<\/code> (dein WordPress-Username) und <code>PFD_API_PASSWORD<\/code> (dein Anwendungspasswort). Das geht \u00fcber die Modul-Konfiguration oder direkt in der <code>ps_configuration<\/code>-Tabelle.<\/p><\/div>\n                                                          <\/li>\n                              <\/ol>\n                          <\/div>\n          <\/section>\n                    <section class=\"block guide-section et_pb_section\" aria-labelledby=\"sec-2\">\n            <div class=\"container guide-container\">\n              <h2 id=\"sec-2\" class=\"guide-section-title\">Schritt 3 \u2014 Test-Bestellung<\/h2>\n                                          <ol class=\"guide-steps\">\n                                  <li class=\"guide-step reveal\">\n                                          <h3 class=\"guide-step-title\">Bestellung ausl\u00f6sen und pr\u00fcfen<\/h3>\n                                                              <div class=\"guide-step-body\"><p>Im PrestaShop-Frontend eine Test-Bestellung t\u00e4tigen, Zahlung abschlie\u00dfen (Bank-Wire reicht f\u00fcr den Test). Dann pr\u00fcfen: Plattform-Backoffice \u2192 <strong>Perfect Day \u2192 Shop-Bestellungen<\/strong> (Eintrag mit <code>shop_type=prestashop<\/code>?) und die Kunden-Mailbox auf die Brand-Mail mit Druck-Button.<\/p><\/div>\n                                                          <\/li>\n                              <\/ol>\n                          <\/div>\n          <\/section>\n          \n                    <!-- Troubleshooting -->\n          <section class=\"block et_pb_section\" aria-labelledby=\"trouble-h\">\n            <div class=\"container guide-container\">\n              <div class=\"section-head reveal\" style=\"margin-bottom: 2rem;\">\n                <span class=\"eyebrow\">Wenn etwas klemmt<\/span>\n                <h2 id=\"trouble-h\">Troubleshooting.<\/h2>\n              <\/div>\n              <div class=\"faq-list\">\n                                  <details class=\"faq-item reveal\">\n                    <summary>Der Modul-Hook feuert nicht<\/summary>\n                    <div class=\"faq-body\"><p>PrestaShop-Cache leeren: <strong>Erweiterte Parameter \u2192 Leistung \u2192 Cache leeren<\/strong>. Au\u00dferdem pr\u00fcfen, ob das Modul aktiv ist.<\/p><\/div>\n                  <\/details>\n                                  <details class=\"faq-item reveal\">\n                    <summary>Eigenschaft-Wert bleibt leer<\/summary>\n                    <div class=\"faq-body\"><p>Der Modul-Code sucht nach dem Feature-Namen <code>Perfect Day Coupon-ID<\/code>. Hast du den Namen ge\u00e4ndert, musst du ihn im Code anpassen. Bei mehrsprachigen Shops muss der Feature-Name pro Sprache \u00fcbersetzt sein.<\/p><\/div>\n                  <\/details>\n                                  <details class=\"faq-item reveal\">\n                    <summary>HTTP 401 \/ 403<\/summary>\n                    <div class=\"faq-body\"><p>401 = Username oder Anwendungspasswort falsch (Username ist der WordPress-Benutzername, nicht die E-Mail). 403 = die Coupon-ID geh\u00f6rt nicht zu deinem Anbieter-Account.<\/p><\/div>\n                  <\/details>\n                              <\/div>\n            <\/div>\n          <\/section>\n          \n                    <!-- Setup-Service -->\n          <section class=\"block et_pb_section\" style=\"background: var(--paper);\" aria-labelledby=\"service-h\">\n            <div class=\"container\">\n              <div class=\"guide-service reveal\">\n                <div>\n                  <span class=\"eyebrow\">Setup-Service<\/span>\n                  <h2 id=\"service-h\" style=\"margin: 0.6rem 0;\">Lieber von uns einrichten lassen?<\/h2>\n                  <p>Wir bieten dir ein vollst\u00e4ndiges PrestaShop-Modul mit komfortablem Konfigurations-UI, eine Hosted-Bridge \u00fcber Make.com\/Zapier oder ein Code-Review deines eigenen Custom-Moduls.<\/p>\n                <\/div>\n                <div>\n                  <a class=\"btn btn-primary\" href=\"https:\/\/deinperfectday.de\/support\/?subject=Shop-Anbindung%20Setup-Service%3A%20PrestaShop\">Setup-Service anfragen <span class=\"arrow\" aria-hidden=\"true\">\u2192<\/span><\/a>\n                <\/div>\n              <\/div>\n            <\/div>\n          <\/section>\n          \n                    <section class=\"block faq et_pb_section\" aria-labelledby=\"faq-h\">\n            <div class=\"container\">\n              <div class=\"section-head reveal\">\n                <span class=\"eyebrow\">H\u00e4ufige Fragen<\/span>\n                <h2 id=\"faq-h\">Noch Fragen?<\/h2>\n              <\/div>\n              <div class=\"faq-list\">\n                                  <details class=\"faq-item reveal\"><summary>Funktioniert das auch mit PrestaShop 1.6?<\/summary><div class=\"faq-body\">Diese Anleitung ist f\u00fcr PrestaShop 1.7+. F\u00fcr \u00e4ltere Versionen schick uns einen Support-Request \u2014 der Modul-Code m\u00fcsste angepasst werden.<\/div><\/details>\n                                  <details class=\"faq-item reveal\"><summary>Kann ich statt der Eigenschaft ein Custom-Field nutzen?<\/summary><div class=\"faq-body\">Technisch ja, aber nicht empfohlen. Custom-Fields in PrestaShop sind f\u00fcr Kunden-Eingaben gedacht, nicht f\u00fcr Backend-Verkn\u00fcpfungen. Die Eigenschaften-Variante ist stabiler.<\/div><\/details>\n                              <\/div>\n            <\/div>\n          <\/section>\n          \n          <!-- Bottom-CTA -->\n          <div class=\"container\">\n            <div class=\"big-cta reveal\">\n              <h2>Shop verbunden \u2014 und jetzt?<\/h2>\n              <p>Sobald der Webhook l\u00e4uft, erscheinen alle Bestellungen automatisch in deinem Backoffice. Brauchst du eine weitere Anbindung, geht jeder weitere Shop in wenigen Minuten.<\/p>\n              <a class=\"btn btn-primary\" href=\"https:\/\/deinperfectday.de\/tr\/anbieter-shop-anbindung\/\">Zur Shop-\u00dcbersicht <span class=\"arrow\" aria-hidden=\"true\">\u2192<\/span><\/a>\n            <\/div>\n          <\/div>\n\n        <\/main>\n                <div class=\"pd-scope\">\n        <footer aria-labelledby=\"footer-h\">\n          <h2 id=\"footer-h\" class=\"sr-only\">Footer-Navigation<\/h2>\n          <div class=\"container\">\n            <div class=\"footer-grid\">\n              <div class=\"footer-brand\">\n                <a href=\"https:\/\/deinperfectday.de\/tr\/\" class=\"logo logo-image\" aria-label=\"Perfect Day Startseite\">\n                  <img src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" alt=\"Perfect Day \u2014 Enjoy your experience\" width=\"200\" height=\"46\" loading=\"lazy\" decoding=\"async\" class=\"lazyload\" data-src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/perfectday-pages-plugin\/assets\/images\/icons\/logo-hell.png\">\n                <\/a>\n                <p>Stadtgutscheine, Tickets, Gutscheinb\u00fccher und Coupons \u2014 eine App f\u00fcr deine Stadt. Datenschutz aus Deutschland, 5-sprachig.<\/p>\n\n                                  <div class=\"app-badges\" style=\"margin-top: 1rem;\">\n                                          <a href=\"https:\/\/apps.apple.com\/de\/app\/id1525409363\" class=\"app-badge\" target=\"_blank\" rel=\"noopener\" aria-label=\"Perfect Day im Apple App Store \u00f6ffnen\">\n                        <img src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" alt=\"Im Apple App Store laden\" width=\"135\" height=\"40\" loading=\"lazy\" decoding=\"async\" class=\"lazyload\" data-src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/perfectday-pages-plugin\/assets\/images\/icons\/badge-app-store.png\">\n                      <\/a>\n                                                              <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=koop.perfect.day&#038;utm_source=emea_Med\" class=\"app-badge\" target=\"_blank\" rel=\"noopener\" aria-label=\"Perfect Day im Google Play Store \u00f6ffnen\">\n                        <img src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" alt=\"Im Google Play Store laden\" width=\"135\" height=\"40\" loading=\"lazy\" decoding=\"async\" class=\"lazyload\" data-src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/perfectday-pages-plugin\/assets\/images\/icons\/badge-play-store.png\">\n                      <\/a>\n                                      <\/div>\n                              <\/div>\n              <div class=\"footer-col\">\n                <h3>F\u00fcr Anbieter<\/h3>\n                <ul>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/stadtgutscheine\/\">Stadtgutscheine<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/online-ticketing\/\">Online-Ticketing<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/gutscheinbuecher\/\">Gutscheinb\u00fccher<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/coupons\/\">Coupons<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/mitarbeiter-benefits\/\">Mitarbeiter-Benefits<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/anbieter-shop-anbindung\/\">Shop-Anbindung<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/preise\/\">Preise &amp; Modelle<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/anbieter-werden\/\">Anbieter werden<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/buchen\/\">S\u00e4ulen buchen<\/a><\/li>\n                <\/ul>\n              <\/div>\n              <div class=\"footer-col\">\n                <h3>\u00dcber &amp; Kontakt<\/h3>\n                <ul>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/app\/\">App entdecken<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/app-versionen\/\">App-Versionen<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/roi-rechner\/\">ROI-Rechner<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/#prinzip\">Konzept<\/a><\/li>\n                  <li><a href=\"https:\/\/plattform.deinperfectday.de\/\">Plattform-Login<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/hilfe\/\">Hilfe &amp; Funktionen<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/support\/\">Support<\/a><\/li>\n                <\/ul>\n              <\/div>\n              <div class=\"footer-col\">\n                <h3>Rechtliches<\/h3>\n                <ul>\n                                    <li><a href=\"https:\/\/deinperfectday.de\/impressum\/\">Impressum<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/datenschutz\/\">Datenschutz (Webseite)<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/anbieter-agb\/\">Anbieter-AGB<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/agb\/terms-of-service\/\">App-Nutzungsbedingungen<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/datenschutzerklaerung\/\">App-Datenschutz<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/konto-loeschen\/\">Konto l\u00f6schen<\/a><\/li>\n                <\/ul>\n              <\/div>\n            <\/div>\n            <div class=\"footer-bottom\">\n              <span class=\"logo-text\">PERFECT <span class=\"teal\">DAY<\/span><\/span>\n              <span>\u00a9 2026 DigElite \u00b7 deinperfectday.de<\/span>\n            <\/div>\n            <p class=\"footer-cities\">Stadtgutschein aktuell live in: Garrel \u00b7 L\u00f6ningen \u00b7 Twistringen \u2014 weitere St\u00e4dte folgen 2026.<\/p>\n            <p class=\"footer-vat\">Alle genannten Preise verstehen sich zzgl. der gesetzlichen Mehrwertsteuer.<\/p>\n          <\/div>\n        <\/footer>\n        <\/div>\n        <\/div>\n","protected":false},"excerpt":{"rendered":"<div class=\"pd-scope\">        <div class=\"pd-scope\">\n        <header id=\"site-header\">\n          <div class=\"container nav\">\n            <a href=\"https:\/\/deinperfectday.de\/tr\/\" class=\"logo logo-image\" aria-label=\"Perfect Day Startseite\">\n              <img\n                src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/perfectday-pages-plugin\/assets\/images\/icons\/logo-dunkel.png\"\n                alt=\"Perfect Day \u2014 Enjoy your experience\"\n                width=\"220\" height=\"50\"\n                fetchpriority=\"high\" decoding=\"async\">\n            <\/a>\n\n            <button\n              type=\"button\"\n              class=\"mega-toggle\"\n              id=\"megaToggle\"\n              aria-expanded=\"false\"\n              aria-controls=\"mega-menu\"\n              aria-label=\"Hauptmen\u00fc \u00f6ffnen\">\n              <span class=\"mega-toggle-text\">Men\u00fc<\/span>\n              <span class=\"mega-toggle-icon\" aria-hidden=\"true\">\n                <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M4 7h16M4 12h16M4 17h16\"\/><\/svg>\n              <\/span>\n            <\/button>\n\n            <div class=\"nav-cta\">\n              <a class=\"btn btn-ghost\" href=\"https:\/\/plattform.deinperfectday.de\/\">Anmelden<\/a>\n              <a class=\"btn btn-primary\" href=\"https:\/\/deinperfectday.de\/tr\/anbieter-werden\/\">Jetzt Anbieter werden <span class=\"arrow\" aria-hidden=\"true\">\u2192<\/span><\/a>\n            <\/div>\n          <\/div>\n\n          <!-- ============== MEGA MENU DRAWER ============== -->\n          <div class=\"mega-menu\" id=\"mega-menu\" hidden role=\"dialog\" aria-modal=\"false\" aria-label=\"Hauptmen\u00fc\">\n            <div class=\"container mega-grid\">\n\n              <!-- Spalte 1: F\u00fcr Anbieter -->\n              <div class=\"mega-col\">\n                <h3 class=\"mega-col-title\">F\u00fcr Anbieter<\/h3>\n                <ul class=\"mega-list\">\n                                      <li>\n                      <a href=\"https:\/\/deinperfectday.de\/tr\/stadtgutscheine\/\">\n                        <strong>Stadtgutscheine<\/strong>\n                        <span>Multi-Anbieter-Gutscheine, Teil-Einl\u00f6sung, Restguthaben automatisch.<\/span>\n                      <\/a>\n                    <\/li>\n                                      <li>\n                      <a href=\"https:\/\/deinperfectday.de\/tr\/online-ticketing\/\">\n                        <strong>Online-Ticketing<\/strong>\n                        <span>0,49 \u20ac\/Ticket. Keine Buchungsgeb\u00fchr f\u00fcr deine G\u00e4ste.<\/span>\n                      <\/a>\n                    <\/li>\n                                      <li>\n                      <a href=\"https:\/\/deinperfectday.de\/tr\/gutscheinbuecher\/\">\n                        <strong>Gutscheinb\u00fccher<\/strong>\n                        <span>Digital, 5-sprachig, sofortige Updates. Keine Druckkosten.<\/span>\n                      <\/a>\n                    <\/li>\n                                      <li>\n                      <a href=\"https:\/\/deinperfectday.de\/tr\/coupons\/\">\n                        <strong>Coupons<\/strong>\n                        <span>Ab 9,90 \u20ac\/Monat. Drei Tiers, fester Preis, monatlich k\u00fcndbar.<\/span>\n                      <\/a>\n                    <\/li>\n                                    <li class=\"mega-list-divider\">\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/preise\/\">\n                      <strong>Preise &amp; Modelle<\/strong>\n                      <span>Transparente Konditionen, 10 % B\u00fcndel-Rabatt f\u00fcr drei S\u00e4ulen.<\/span>\n                    <\/a>\n                  <\/li>\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/buchen\/\">\n                      <strong>S\u00e4ulen buchen<\/strong>\n                      <span>Buchungs-Assistent: S\u00e4ulen w\u00e4hlen und verbindlich buchen.<\/span>\n                    <\/a>\n                  <\/li>\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/anbieter-werden\/\" class=\"mega-link-highlight\">\n                      <strong>Anbieter werden \u2192<\/strong>\n                      <span>Kostenfrei registrieren, schnelle R\u00fcckmeldung.<\/span>\n                    <\/a>\n                  <\/li>\n                <\/ul>\n              <\/div>\n\n              <!-- Spalte 2: Entdecken & Konzept -->\n              <div class=\"mega-col\">\n                <h3 class=\"mega-col-title\">Entdecken<\/h3>\n                <ul class=\"mega-list\">\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/app\/\">\n                      <strong>App entdecken<\/strong>\n                      <span>Wie die Endkunden-App funktioniert.<\/span>\n                    <\/a>\n                  <\/li>\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/roi-rechner\/\">\n                      <strong>ROI-Rechner<\/strong>\n                      <span>Plattform-Kosten pro Jahr in 10 Sekunden.<\/span>\n                    <\/a>\n                  <\/li>\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/app-versionen\/\">\n                      <strong>App-Versionen<\/strong>\n                      <span>Was ist neu in der App \u2014 der Versionsverlauf.<\/span>\n                    <\/a>\n                  <\/li>\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/#prinzip\">\n                      <strong>Das Konzept<\/strong>\n                      <span>Cross-Pollination der vier S\u00e4ulen erkl\u00e4rt.<\/span>\n                    <\/a>\n                  <\/li>\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/anbieter\/\">\n                      <strong>Anbieter-Hub<\/strong>\n                      <span>\u00dcbersicht aller S\u00e4ulen mit Wettbewerbsvergleich.<\/span>\n                    <\/a>\n                  <\/li>\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/mitarbeiter-benefits\/\">\n                      <strong>Mitarbeiter-Benefits<\/strong>\n                      <span>Firmen-Abos: Stadtgutscheine automatisiert f\u00fcrs Team.<\/span>\n                    <\/a>\n                  <\/li>\n                <\/ul>\n\n                <h3 class=\"mega-col-title\" style=\"margin-top: 1.6rem;\">Stadtgutschein live in<\/h3>\n                <p class=\"mega-cities\">\n                  Garrel \u00b7 L\u00f6ningen \u00b7 Twistringen<br>\n                  <small>Weitere St\u00e4dte folgen 2026.<\/small>\n                <\/p>\n              <\/div>\n\n              <!-- Spalte 3: Service + Account -->\n              <div class=\"mega-col\">\n                <h3 class=\"mega-col-title\">Service<\/h3>\n                <ul class=\"mega-list\">\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/tr\/hilfe\/\">\n                      <strong>Hilfe &amp; Funktionen<\/strong>\n                      <span>Alle App-Funktionen Schritt f\u00fcr Schritt erkl\u00e4rt.<\/span>\n                    <\/a>\n                  <\/li>\n                  <li>\n                    <a href=\"https:\/\/deinperfectday.de\/support\/\">\n                      <strong>Support<\/strong>\n                      <span>Hilfe f\u00fcr Anbieter und Kunden.<\/span>\n                    <\/a>\n                  <\/li>\n                  <li>\n                    <a href=\"https:\/\/plattform.deinperfectday.de\/\">\n                      <strong>Plattform-Login<\/strong>\n                      <span>F\u00fcr aktive Anbieter mit Account.<\/span>\n                    <\/a>\n                  <\/li>\n                <\/ul>\n\n                                  <h3 class=\"mega-col-title\" style=\"margin-top: 1.6rem;\">Sprache<\/h3>\n                  <div class=\"mega-lang-switcher\"><div class=\"trp-shortcode-switcher__wrapper\"\r\n     style=\"--bg:#ffffff;--bg-hover:#0000000d;--text:#143852;--text-hover:#1d2327;--border:1px solid #1438521a;--border-width:1px;--border-color:#1438521a;--border-radius:5px;--flag-radius:2px;--flag-size:18px;--aspect-ratio:4\/3;--font-size:14px;--transition-duration:0.2s\"\r\n     role=\"group\"\r\n     data-open-mode=\"hover\">\r\n\r\n    \r\n        <!-- ANCHOR (in-flow only; sizing\/borders; inert) -->\r\n        <div class=\"trp-language-switcher trp-ls-dropdown trp-shortcode-switcher trp-shortcode-anchor trp-open-on-hover\"\r\n             aria-hidden=\"true\"\r\n             inert\r\n             data-no-translation>\r\n                <div class=\"trp-current-language-item__wrapper\">\r\n        <a class=\"trp-language-item trp-language-item__default trp-language-item__current\" data-no-translation href=\"https:\/\/deinperfectday.de\/tr\/wp-json\/wp\/v2\/pages\/233292#TRPLINKPROCESSED\" title=\"Turkish\"><img decoding=\"async\" src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/translatepress-multilingual\/assets\/flags\/4x3\/tr_TR.svg\" class=\"trp-flag-image\" alt=\"\" role=\"presentation\" loading=\"lazy\" \/><span class=\"trp-language-item-name\">Turkish<\/span><\/a>                    <svg class=\"trp-shortcode-arrow\" width=\"20\" height=\"20\" viewBox=\"0 0 20 21\" fill=\"none\" aria-hidden=\"true\" focusable=\"false\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                <path d=\"M5 8L10 13L15 8\" stroke=\"var(--text)\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n            <\/svg>\r\n            <\/div>\r\n            <\/div>\r\n\r\n        <!-- OVERLAY (positioned; interactive surface) -->\r\n        <div class=\"trp-language-switcher trp-ls-dropdown trp-shortcode-switcher trp-shortcode-overlay trp-open-on-hover\"\r\n             role=\"navigation\"\r\n             aria-label=\"Website language selector\"\r\n             data-no-translation\r\n        >\r\n                <div class=\"trp-current-language-item__wrapper\">\r\n        <div class=\"trp-language-item trp-language-item__default trp-language-item__current\" data-no-translation role=\"button\" aria-expanded=\"false\" tabindex=\"0\" aria-label=\"Change language\" aria-controls=\"trp-shortcode-dropdown-6a0c07f920b33\"><img decoding=\"async\" src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/translatepress-multilingual\/assets\/flags\/4x3\/tr_TR.svg\" class=\"trp-flag-image\" alt=\"\" role=\"presentation\" loading=\"lazy\" \/><span class=\"trp-language-item-name\">Turkish<\/span><\/div>                    <svg class=\"trp-shortcode-arrow\" width=\"20\" height=\"20\" viewBox=\"0 0 20 21\" fill=\"none\" aria-hidden=\"true\" focusable=\"false\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\r\n                <path d=\"M5 8L10 13L15 8\" stroke=\"var(--text)\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>\r\n            <\/svg>\r\n            <\/div>\r\n    \r\n            <div class=\"trp-switcher-dropdown-list\"\r\n                 id=\"trp-shortcode-dropdown-6a0c07f920b33\"\r\n                 role=\"group\"\r\n                 aria-label=\"Available languages\"\r\n                 hidden\r\n                 inert\r\n            >\r\n                                                            <a class=\"trp-language-item\" href=\"https:\/\/deinperfectday.de\/tr\/wp-json\/wp\/v2\/pages\/233292#TRPLINKPROCESSED\" title=\"German\">\r\n                            <img decoding=\"async\" src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/translatepress-multilingual\/assets\/flags\/4x3\/de_DE.svg\" class=\"trp-flag-image\" alt=\"\" role=\"presentation\" loading=\"lazy\" \/>                                                            <span class=\"trp-language-item-name\" data-no-translation>German<\/span>\r\n                                                                                <\/a>\r\n                                            <a class=\"trp-language-item\" href=\"https:\/\/deinperfectday.de\/tr\/wp-json\/wp\/v2\/pages\/233292#TRPLINKPROCESSED\" title=\"English\">\r\n                            <img decoding=\"async\" src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/translatepress-multilingual\/assets\/flags\/4x3\/en_GB.svg\" class=\"trp-flag-image\" alt=\"\" role=\"presentation\" loading=\"lazy\" \/>                                                            <span class=\"trp-language-item-name\" data-no-translation>English<\/span>\r\n                                                                                <\/a>\r\n                                            <a class=\"trp-language-item\" href=\"https:\/\/deinperfectday.de\/tr\/wp-json\/wp\/v2\/pages\/233292#TRPLINKPROCESSED\" title=\"Spanish\">\r\n                            <img decoding=\"async\" src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/translatepress-multilingual\/assets\/flags\/4x3\/es_ES.svg\" class=\"trp-flag-image\" alt=\"\" role=\"presentation\" loading=\"lazy\" \/>                                                            <span class=\"trp-language-item-name\" data-no-translation>Spanish<\/span>\r\n                                                                                <\/a>\r\n                                            <a class=\"trp-language-item\" href=\"https:\/\/deinperfectday.de\/tr\/wp-json\/wp\/v2\/pages\/233292#TRPLINKPROCESSED\" title=\"Russian\">\r\n                            <img decoding=\"async\" src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/translatepress-multilingual\/assets\/flags\/4x3\/ru_RU.svg\" class=\"trp-flag-image\" alt=\"\" role=\"presentation\" loading=\"lazy\" \/>                                                            <span class=\"trp-language-item-name\" data-no-translation>Russian<\/span>\r\n                                                                                <\/a>\r\n                                                <\/div>\r\n        <\/div>\r\n\r\n    <\/div>\r\n<\/div>\n                \n                <h3 class=\"mega-col-title\" style=\"margin-top: 1.6rem;\">Lade die App<\/h3>\n                                  <div class=\"app-badges mega-app-badges\">\n                                          <a href=\"https:\/\/apps.apple.com\/de\/app\/id1525409363\" class=\"app-badge\" target=\"_blank\" rel=\"noopener\" aria-label=\"Perfect Day im Apple App Store \u00f6ffnen\">\n                        <img src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/perfectday-pages-plugin\/assets\/images\/icons\/badge-app-store.png\" alt=\"Im Apple App Store laden\" width=\"135\" height=\"40\" loading=\"lazy\" decoding=\"async\">\n                      <\/a>\n                                                              <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=koop.perfect.day&#038;utm_source=emea_Med\" class=\"app-badge\" target=\"_blank\" rel=\"noopener\" aria-label=\"Perfect Day im Google Play Store \u00f6ffnen\">\n                        <img src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/perfectday-pages-plugin\/assets\/images\/icons\/badge-play-store.png\" alt=\"Im Google Play Store laden\" width=\"135\" height=\"40\" loading=\"lazy\" decoding=\"async\">\n                      <\/a>\n                                      <\/div>\n                \n                <h3 class=\"mega-col-title\" style=\"margin-top: 1.6rem;\">Rechtliches<\/h3>\n                <ul class=\"mega-list mega-list-compact\">\n                                    <li><a href=\"https:\/\/deinperfectday.de\/impressum\/\">Impressum<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/datenschutz\/\">Datenschutz (Webseite)<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/anbieter-agb\/\">Anbieter-AGB<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/agb\/terms-of-service\/\">App-Nutzungsbedingungen<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/datenschutzerklaerung\/\">App-Datenschutz<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/konto-loeschen\/\">Konto l\u00f6schen<\/a><\/li>\n                <\/ul>\n              <\/div>\n\n            <\/div>\n\n            <button type=\"button\" class=\"mega-close\" id=\"megaClose\" aria-label=\"Men\u00fc schlie\u00dfen\">\n              <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" aria-hidden=\"true\"><path d=\"M6 6l12 12M6 18L18 6\"\/><\/svg>\n            <\/button>\n          <\/div>\n          <!-- End Mega Menu -->\n\n        <\/header>\n        <\/div>\n                <main id=\"main\">\n\n          <nav class=\"container breadcrumb\" aria-label=\"Brotkrumen-Navigation\">\n            <ol>\n              <li><a href=\"https:\/\/deinperfectday.de\/tr\/\">Startseite<\/a><\/li>\n              <li><a href=\"https:\/\/deinperfectday.de\/tr\/anbieter\/\">F\u00fcr Anbieter<\/a><\/li>\n              <li><a href=\"https:\/\/deinperfectday.de\/tr\/anbieter-shop-anbindung\/\">Shop-Anbindung<\/a><\/li>\n              <li><span aria-current=\"page\">PrestaShop<\/span><\/li>\n            <\/ol>\n          <\/nav>\n\n          <!-- Hero -->\n          <section class=\"subhero subhero-compact et_pb_section\" aria-label=\"Einf\u00fchrung\">\n            <div class=\"container\">\n              <div class=\"reveal subhero-center\">\n                <span class=\"eyebrow\"><span class=\"pulse\" aria-hidden=\"true\"><\/span> &nbsp;PrestaShop \u00b7 20\u201325 Min \u00b7 mittel<\/span>\n                <h1>Perfect Day in PrestaShop anbinden.<\/h1>\n                <p class=\"subhero-sub\">Verkauf deine Perfect-Day-Coupons \u00fcber deinen PrestaShop. PrestaShop hat keine eingebaute Webhook-Funktion \u2014 du brauchst ein kleines Custom-Modul, das auf das Bestell-Event lauscht. <strong>Hinweis:<\/strong> Diese Anleitung gilt f\u00fcr PrestaShop 1.7+.<\/p>\n              <\/div>\n            <\/div>\n          <\/section>\n\n                    <!-- Voraussetzungs-Callout -->\n          <div class=\"container\">\n            <div class=\"guide-callout reveal\">\n              <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><path d=\"M12 16v-4M12 8h.01\"\/><\/svg>\n              <p><strong>Vorab n\u00f6tig:<\/strong> Geh einmal die <a href=\"https:\/\/deinperfectday.de\/tr\/anbieter-shop-anbindung-vorbereitung\/\">allgemeine Vorbereitung<\/a> durch \u2014 Coupon anlegen, Anwendungspasswort holen, Webhook-URL bereitlegen. Dauert rund f\u00fcnf Minuten und gilt f\u00fcr alle Shop-Systeme.<\/p>\n            <\/div>\n          <\/div>\n          \n          <!-- Anleitungs-Abschnitte -->\n                    <section class=\"block guide-section et_pb_section\" aria-labelledby=\"sec-0\">\n            <div class=\"container guide-container\">\n              <h2 id=\"sec-0\" class=\"guide-section-title\">Schritt 1 \u2014 Eigenschaft f\u00fcr die Coupon-ID anlegen<\/h2>\n                              <p class=\"guide-section-intro\">PrestaShop hat sogenannte \u201eEigenschaften\" (engl. \u201eFeatures\"), mit denen du beliebige Daten an Produkte h\u00e4ngen kannst.<\/p>\n                                          <ol class=\"guide-steps\">\n                                  <li class=\"guide-step reveal\">\n                                          <h3 class=\"guide-step-title\">Neue Eigenschaft erstellen<\/h3>\n                                                              <div class=\"guide-step-body\"><p>PrestaShop-Admin \u2192 <strong>Katalog \u2192 Attribute &amp; Eigenschaften \u2192 Eigenschaften<\/strong> \u2192 <strong>\u201eNeue Eigenschaft hinzuf\u00fcgen\"<\/strong>. Name: <code>Perfect Day Coupon-ID<\/code>. Speichern. Dann unter <strong>\u201eWerte\"<\/strong> pro Coupon-Variante einen Wert anlegen (z. B. <code>15114<\/code>, <code>15115<\/code>).<\/p><\/div>\n                                                          <\/li>\n                                  <li class=\"guide-step reveal\">\n                                          <h3 class=\"guide-step-title\">Eigenschaft pro Produkt zuweisen<\/h3>\n                                                              <div class=\"guide-step-body\"><p>Im Produkt-Editor \u2192 Tab <strong>\u201eFunktionen\"<\/strong> \u2192 <strong>\u201ePerfect Day Coupon-ID\"<\/strong> w\u00e4hlen \u2192 den passenden Wert zuweisen \u2192 speichern.<\/p><p>Die Eigenschaften-Variante ist besser geeignet als ein Custom-Field, da Custom-Fields in PrestaShop nur f\u00fcr Kunden-Eingaben gedacht sind, nicht f\u00fcr Backend-Verkn\u00fcpfungen.<\/p><\/div>\n                                                          <\/li>\n                              <\/ol>\n                          <\/div>\n          <\/section>\n                    <section class=\"block guide-section et_pb_section\" style=\"background: var(--paper);\" aria-labelledby=\"sec-1\">\n            <div class=\"container guide-container\">\n              <h2 id=\"sec-1\" class=\"guide-section-title\">Schritt 2 \u2014 Custom-Modul f\u00fcr den Webhook<\/h2>\n                              <p class=\"guide-section-intro\">Das Modul lauscht auf den Hook <code>actionValidateOrder<\/code> und schickt die Bestellung an Perfect Day.<\/p>\n                                          <ol class=\"guide-steps\">\n                                  <li class=\"guide-step reveal\">\n                                          <h3 class=\"guide-step-title\">Modul-Struktur anlegen<\/h3>\n                                                              <div class=\"guide-step-body\"><p>Das Modul besteht aus zwei Dateien:<\/p><\/div>\n                                        <div class=\"code-block\"><div class=\"code-block-bar\"><span class=\"code-lang\">Verzeichnisstruktur<\/span><\/div><pre><code>modules\/perfectdayconnector\/\n\u251c\u2500\u2500 perfectdayconnector.php\n\u2514\u2500\u2500 config.xml<\/code><\/pre><\/div>                  <\/li>\n                                  <li class=\"guide-step reveal\">\n                                          <h3 class=\"guide-step-title\">perfectdayconnector.php<\/h3>\n                                                              <div class=\"guide-step-body\"><p>Die Hauptdatei des Moduls \u2014 registriert den Order-Hook, liest die Coupon-ID-Eigenschaft pro Produkt und sendet den Webhook. Rund 80 Zeilen.<\/p><\/div>\n                                        <details class=\"code-collapsible reveal\"><summary>Vollst\u00e4ndigen Code anzeigen \u2014 PHP \u00b7 perfectdayconnector.php<\/summary><div class=\"code-block\"><div class=\"code-block-bar\"><span class=\"code-lang\">PHP \u00b7 perfectdayconnector.php<\/span><\/div><pre><code>&lt;?php\nif (!defined(&#039;_PS_VERSION_&#039;)) exit;\n\nclass PerfectDayConnector extends Module\n{\n    public function __construct()\n    {\n        $this-&gt;name = &#039;perfectdayconnector&#039;;\n        $this-&gt;tab = &#039;export&#039;;\n        $this-&gt;version = &#039;1.0.0&#039;;\n        $this-&gt;author = &#039;DigElite&#039;;\n        $this-&gt;bootstrap = true;\n        parent::__construct();\n        $this-&gt;displayName = $this-&gt;l(&#039;Perfect Day Connector&#039;);\n        $this-&gt;description = $this-&gt;l(&#039;Schickt Bestellungen mit Perfect-Day-Coupon-IDs an die Plattform.&#039;);\n        $this-&gt;ps_versions_compliancy = [&#039;min&#039; =&gt; &#039;1.7&#039;, &#039;max&#039; =&gt; _PS_VERSION_];\n    }\n\n    public function install()\n    {\n        return parent::install()\n            &amp;&amp; $this-&gt;registerHook(&#039;actionValidateOrder&#039;)\n            &amp;&amp; Configuration::updateValue(&#039;PFD_API_USER&#039;, &#039;&#039;)\n            &amp;&amp; Configuration::updateValue(&#039;PFD_API_PASSWORD&#039;, &#039;&#039;);\n    }\n\n    public function uninstall()\n    {\n        Configuration::deleteByName(&#039;PFD_API_USER&#039;);\n        Configuration::deleteByName(&#039;PFD_API_PASSWORD&#039;);\n        return parent::uninstall();\n    }\n\n    public function hookActionValidateOrder($params)\n    {\n        $order = $params[&#039;order&#039;];\n        if (!$order) return;\n\n        $items = [];\n        foreach ($params[&#039;cart&#039;]-&gt;getProducts() as $p) {\n            $couponId = $this-&gt;getProductFeatureValue($p[&#039;id_product&#039;], &#039;Perfect Day Coupon-ID&#039;);\n            if (!$couponId) continue;\n            $items[] = [&#039;coupon_id&#039; =&gt; (int)$couponId, &#039;count&#039; =&gt; (int)$p[&#039;cart_quantity&#039;]];\n        }\n        if (empty($items)) return;\n\n        $customer = new Customer($order-&gt;id_customer);\n        $payload = [\n            &#039;shop_order_id&#039; =&gt; (string) $order-&gt;reference,\n            &#039;shop_type&#039;     =&gt; &#039;prestashop&#039;,\n            &#039;shop_domain&#039;   =&gt; Tools::getShopDomain(),\n            &#039;customer&#039; =&gt; [\n                &#039;email&#039;  =&gt; $customer-&gt;email,\n                &#039;name&#039;   =&gt; trim($customer-&gt;firstname . &#039; &#039; . $customer-&gt;lastname),\n                &#039;locale&#039; =&gt; substr(Context::getContext()-&gt;language-&gt;iso_code, 0, 2),\n            ],\n            &#039;items&#039;             =&gt; $items,\n            &#039;order_total_cents&#039; =&gt; (int) round($order-&gt;total_paid * 100),\n            &#039;currency&#039;          =&gt; Context::getContext()-&gt;currency-&gt;iso_code,\n            &#039;placed_at&#039;         =&gt; $order-&gt;date_add,\n        ];\n\n        $user = Configuration::get(&#039;PFD_API_USER&#039;);\n        $pwd  = Configuration::get(&#039;PFD_API_PASSWORD&#039;);\n\n        $ch = curl_init(&#039;https:\/\/plattform.deinperfectday.de\/wp-json\/perfectday\/shop\/webhook\/order&#039;);\n        curl_setopt_array($ch, [\n            CURLOPT_POST           =&gt; 1,\n            CURLOPT_RETURNTRANSFER =&gt; 1,\n            CURLOPT_HTTPHEADER     =&gt; [\n                &#039;Content-Type: application\/json&#039;,\n                &#039;Authorization: Basic &#039; . base64_encode($user . &#039;:&#039; . $pwd),\n            ],\n            CURLOPT_POSTFIELDS =&gt; json_encode($payload),\n            CURLOPT_TIMEOUT    =&gt; 15,\n        ]);\n        curl_exec($ch);\n        curl_close($ch);\n    }\n\n    private function getProductFeatureValue($idProduct, $featureName)\n    {\n        $sql = &#039;SELECT fvl.value FROM &#039; . _DB_PREFIX_ . &#039;feature_product fp&#039;\n             . &#039; INNER JOIN &#039; . _DB_PREFIX_ . &#039;feature_lang fl ON fl.id_feature = fp.id_feature&#039;\n             . &#039; INNER JOIN &#039; . _DB_PREFIX_ . &#039;feature_value_lang fvl ON fvl.id_feature_value = fp.id_feature_value&#039;\n             . &#039; WHERE fp.id_product = &#039; . (int)$idProduct\n             . &quot; AND fl.name = &#039;&quot; . pSQL($featureName) . &quot;&#039;&quot;\n             . &#039; LIMIT 1&#039;;\n        return Db::getInstance()-&gt;getValue($sql);\n    }\n}<\/code><\/pre><\/div><\/details>                  <\/li>\n                                  <li class=\"guide-step reveal\">\n                                          <h3 class=\"guide-step-title\">Modul installieren<\/h3>\n                                                              <div class=\"guide-step-body\"><p>Den Modul-Ordner als ZIP packen, dann PrestaShop-Admin \u2192 <strong>Module \u2192 Module-Manager \u2192 Modul hochladen<\/strong> \u2192 ZIP rein \u2192 installieren \u2192 aktivieren.<\/p><\/div>\n                                                          <\/li>\n                                  <li class=\"guide-step reveal\">\n                                          <h3 class=\"guide-step-title\">Credentials konfigurieren<\/h3>\n                                                              <div class=\"guide-step-body\"><p>Trag deine Zugangsdaten als Konfigurations-Werte ein \u2014 <code>PFD_API_USER<\/code> (dein WordPress-Username) und <code>PFD_API_PASSWORD<\/code> (dein Anwendungspasswort). Das geht \u00fcber die Modul-Konfiguration oder direkt in der <code>ps_configuration<\/code>-Tabelle.<\/p><\/div>\n                                                          <\/li>\n                              <\/ol>\n                          <\/div>\n          <\/section>\n                    <section class=\"block guide-section et_pb_section\" aria-labelledby=\"sec-2\">\n            <div class=\"container guide-container\">\n              <h2 id=\"sec-2\" class=\"guide-section-title\">Schritt 3 \u2014 Test-Bestellung<\/h2>\n                                          <ol class=\"guide-steps\">\n                                  <li class=\"guide-step reveal\">\n                                          <h3 class=\"guide-step-title\">Bestellung ausl\u00f6sen und pr\u00fcfen<\/h3>\n                                                              <div class=\"guide-step-body\"><p>Im PrestaShop-Frontend eine Test-Bestellung t\u00e4tigen, Zahlung abschlie\u00dfen (Bank-Wire reicht f\u00fcr den Test). Dann pr\u00fcfen: Plattform-Backoffice \u2192 <strong>Perfect Day \u2192 Shop-Bestellungen<\/strong> (Eintrag mit <code>shop_type=prestashop<\/code>?) und die Kunden-Mailbox auf die Brand-Mail mit Druck-Button.<\/p><\/div>\n                                                          <\/li>\n                              <\/ol>\n                          <\/div>\n          <\/section>\n          \n                    <!-- Troubleshooting -->\n          <section class=\"block et_pb_section\" aria-labelledby=\"trouble-h\">\n            <div class=\"container guide-container\">\n              <div class=\"section-head reveal\" style=\"margin-bottom: 2rem;\">\n                <span class=\"eyebrow\">Wenn etwas klemmt<\/span>\n                <h2 id=\"trouble-h\">Troubleshooting.<\/h2>\n              <\/div>\n              <div class=\"faq-list\">\n                                  <details class=\"faq-item reveal\">\n                    <summary>Der Modul-Hook feuert nicht<\/summary>\n                    <div class=\"faq-body\"><p>PrestaShop-Cache leeren: <strong>Erweiterte Parameter \u2192 Leistung \u2192 Cache leeren<\/strong>. Au\u00dferdem pr\u00fcfen, ob das Modul aktiv ist.<\/p><\/div>\n                  <\/details>\n                                  <details class=\"faq-item reveal\">\n                    <summary>Eigenschaft-Wert bleibt leer<\/summary>\n                    <div class=\"faq-body\"><p>Der Modul-Code sucht nach dem Feature-Namen <code>Perfect Day Coupon-ID<\/code>. Hast du den Namen ge\u00e4ndert, musst du ihn im Code anpassen. Bei mehrsprachigen Shops muss der Feature-Name pro Sprache \u00fcbersetzt sein.<\/p><\/div>\n                  <\/details>\n                                  <details class=\"faq-item reveal\">\n                    <summary>HTTP 401 \/ 403<\/summary>\n                    <div class=\"faq-body\"><p>401 = Username oder Anwendungspasswort falsch (Username ist der WordPress-Benutzername, nicht die E-Mail). 403 = die Coupon-ID geh\u00f6rt nicht zu deinem Anbieter-Account.<\/p><\/div>\n                  <\/details>\n                              <\/div>\n            <\/div>\n          <\/section>\n          \n                    <!-- Setup-Service -->\n          <section class=\"block et_pb_section\" style=\"background: var(--paper);\" aria-labelledby=\"service-h\">\n            <div class=\"container\">\n              <div class=\"guide-service reveal\">\n                <div>\n                  <span class=\"eyebrow\">Setup-Service<\/span>\n                  <h2 id=\"service-h\" style=\"margin: 0.6rem 0;\">Lieber von uns einrichten lassen?<\/h2>\n                  <p>Wir bieten dir ein vollst\u00e4ndiges PrestaShop-Modul mit komfortablem Konfigurations-UI, eine Hosted-Bridge \u00fcber Make.com\/Zapier oder ein Code-Review deines eigenen Custom-Moduls.<\/p>\n                <\/div>\n                <div>\n                  <a class=\"btn btn-primary\" href=\"https:\/\/deinperfectday.de\/support\/?subject=Shop-Anbindung%20Setup-Service%3A%20PrestaShop\">Setup-Service anfragen <span class=\"arrow\" aria-hidden=\"true\">\u2192<\/span><\/a>\n                <\/div>\n              <\/div>\n            <\/div>\n          <\/section>\n          \n                    <section class=\"block faq et_pb_section\" aria-labelledby=\"faq-h\">\n            <div class=\"container\">\n              <div class=\"section-head reveal\">\n                <span class=\"eyebrow\">H\u00e4ufige Fragen<\/span>\n                <h2 id=\"faq-h\">Noch Fragen?<\/h2>\n              <\/div>\n              <div class=\"faq-list\">\n                                  <details class=\"faq-item reveal\"><summary>Funktioniert das auch mit PrestaShop 1.6?<\/summary><div class=\"faq-body\">Diese Anleitung ist f\u00fcr PrestaShop 1.7+. F\u00fcr \u00e4ltere Versionen schick uns einen Support-Request \u2014 der Modul-Code m\u00fcsste angepasst werden.<\/div><\/details>\n                                  <details class=\"faq-item reveal\"><summary>Kann ich statt der Eigenschaft ein Custom-Field nutzen?<\/summary><div class=\"faq-body\">Technisch ja, aber nicht empfohlen. Custom-Fields in PrestaShop sind f\u00fcr Kunden-Eingaben gedacht, nicht f\u00fcr Backend-Verkn\u00fcpfungen. Die Eigenschaften-Variante ist stabiler.<\/div><\/details>\n                              <\/div>\n            <\/div>\n          <\/section>\n          \n          <!-- Bottom-CTA -->\n          <div class=\"container\">\n            <div class=\"big-cta reveal\">\n              <h2>Shop verbunden \u2014 und jetzt?<\/h2>\n              <p>Sobald der Webhook l\u00e4uft, erscheinen alle Bestellungen automatisch in deinem Backoffice. Brauchst du eine weitere Anbindung, geht jeder weitere Shop in wenigen Minuten.<\/p>\n              <a class=\"btn btn-primary\" href=\"https:\/\/deinperfectday.de\/tr\/anbieter-shop-anbindung\/\">Zur Shop-\u00dcbersicht <span class=\"arrow\" aria-hidden=\"true\">\u2192<\/span><\/a>\n            <\/div>\n          <\/div>\n\n        <\/main>\n                <div class=\"pd-scope\">\n        <footer aria-labelledby=\"footer-h\">\n          <h2 id=\"footer-h\" class=\"sr-only\">Footer-Navigation<\/h2>\n          <div class=\"container\">\n            <div class=\"footer-grid\">\n              <div class=\"footer-brand\">\n                <a href=\"https:\/\/deinperfectday.de\/tr\/\" class=\"logo logo-image\" aria-label=\"Perfect Day Startseite\">\n                  <img\n                    src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/perfectday-pages-plugin\/assets\/images\/icons\/logo-hell.png\"\n                    alt=\"Perfect Day \u2014 Enjoy your experience\"\n                    width=\"200\" height=\"46\"\n                    loading=\"lazy\" decoding=\"async\">\n                <\/a>\n                <p>Stadtgutscheine, Tickets, Gutscheinb\u00fccher und Coupons \u2014 eine App f\u00fcr deine Stadt. Datenschutz aus Deutschland, 5-sprachig.<\/p>\n\n                                  <div class=\"app-badges\" style=\"margin-top: 1rem;\">\n                                          <a href=\"https:\/\/apps.apple.com\/de\/app\/id1525409363\" class=\"app-badge\" target=\"_blank\" rel=\"noopener\" aria-label=\"Perfect Day im Apple App Store \u00f6ffnen\">\n                        <img src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/perfectday-pages-plugin\/assets\/images\/icons\/badge-app-store.png\" alt=\"Im Apple App Store laden\" width=\"135\" height=\"40\" loading=\"lazy\" decoding=\"async\">\n                      <\/a>\n                                                              <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=koop.perfect.day&#038;utm_source=emea_Med\" class=\"app-badge\" target=\"_blank\" rel=\"noopener\" aria-label=\"Perfect Day im Google Play Store \u00f6ffnen\">\n                        <img src=\"https:\/\/deinperfectday.de\/wp-content\/plugins\/perfectday-pages-plugin\/assets\/images\/icons\/badge-play-store.png\" alt=\"Im Google Play Store laden\" width=\"135\" height=\"40\" loading=\"lazy\" decoding=\"async\">\n                      <\/a>\n                                      <\/div>\n                              <\/div>\n              <div class=\"footer-col\">\n                <h3>F\u00fcr Anbieter<\/h3>\n                <ul>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/stadtgutscheine\/\">Stadtgutscheine<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/online-ticketing\/\">Online-Ticketing<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/gutscheinbuecher\/\">Gutscheinb\u00fccher<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/coupons\/\">Coupons<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/mitarbeiter-benefits\/\">Mitarbeiter-Benefits<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/anbieter-shop-anbindung\/\">Shop-Anbindung<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/preise\/\">Preise &amp; Modelle<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/anbieter-werden\/\">Anbieter werden<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/buchen\/\">S\u00e4ulen buchen<\/a><\/li>\n                <\/ul>\n              <\/div>\n              <div class=\"footer-col\">\n                <h3>\u00dcber &amp; Kontakt<\/h3>\n                <ul>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/app\/\">App entdecken<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/app-versionen\/\">App-Versionen<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/roi-rechner\/\">ROI-Rechner<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/#prinzip\">Konzept<\/a><\/li>\n                  <li><a href=\"https:\/\/plattform.deinperfectday.de\/\">Plattform-Login<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/hilfe\/\">Hilfe &amp; Funktionen<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/support\/\">Support<\/a><\/li>\n                <\/ul>\n              <\/div>\n              <div class=\"footer-col\">\n                <h3>Rechtliches<\/h3>\n                <ul>\n                                    <li><a href=\"https:\/\/deinperfectday.de\/impressum\/\">Impressum<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/datenschutz\/\">Datenschutz (Webseite)<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/anbieter-agb\/\">Anbieter-AGB<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/agb\/terms-of-service\/\">App-Nutzungsbedingungen<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/datenschutzerklaerung\/\">App-Datenschutz<\/a><\/li>\n                  <li><a href=\"https:\/\/deinperfectday.de\/tr\/konto-loeschen\/\">Konto l\u00f6schen<\/a><\/li>\n                <\/ul>\n              <\/div>\n            <\/div>\n            <div class=\"footer-bottom\">\n              <span class=\"logo-text\">PERFECT <span class=\"teal\">DAY<\/span><\/span>\n              <span>\u00a9 2026 DigElite \u00b7 deinperfectday.de<\/span>\n            <\/div>\n            <p class=\"footer-cities\">Stadtgutschein aktuell live in: Garrel \u00b7 L\u00f6ningen \u00b7 Twistringen \u2014 weitere St\u00e4dte folgen 2026.<\/p>\n            <p class=\"footer-vat\">Alle genannten Preise verstehen sich zzgl. der gesetzlichen Mehrwertsteuer.<\/p>\n          <\/div>\n        <\/footer>\n        <\/div>\n        <\/div>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-template-blank.php","meta":{"_acf_changed":false,"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"class_list":["post-233292","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/deinperfectday.de\/tr\/wp-json\/wp\/v2\/pages\/233292","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/deinperfectday.de\/tr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/deinperfectday.de\/tr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/deinperfectday.de\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/deinperfectday.de\/tr\/wp-json\/wp\/v2\/comments?post=233292"}],"version-history":[{"count":0,"href":"https:\/\/deinperfectday.de\/tr\/wp-json\/wp\/v2\/pages\/233292\/revisions"}],"wp:attachment":[{"href":"https:\/\/deinperfectday.de\/tr\/wp-json\/wp\/v2\/media?parent=233292"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}