Lektionen6

Digital Downloads im Foodblogliebe Theme

Lerne, wie du im Foodblogliebe-Theme digitale Produkte verkaufst — mit Stripe Checkout, ohne WooCommerce, mit automatischem Datei-Versand per E-Mail. Produktanlage, Webhook, Danke-Seite und Käufe-Verwaltung Schritt für Schritt.

0% abgeschlossen

Theme

Was du in Stripe vorbereiten musst

Stripe ist ein mächtiges System, aber der Teil, den du für das Digital-Download-Feature brauchst, ist winzig: ein Konto, zwei Keys, ein Produkt mit einem Preis. Das ist alles...

Noch nicht gestartet

Stripe ist ein mächtiges System, aber der Teil, den du für das Digital-Download-Feature brauchst, ist winzig: ein Konto, zwei Keys, ein Produkt mit einem Preis. Das ist alles. Den Rest kannst du ignorieren, bis du irgendwann Abos oder mehrere Währungen verkaufst — was dieser Kurs nicht abdeckt.

Stripe-Konto anlegen oder öffnen

Wenn du noch kein Stripe-Konto hast, geh auf dashboard.stripe.com und leg eins an. Stripe fragt nach Land, Geschäftsart (für Foodbloggerinnen passt „Content/Verlage" oder „Digitale Produkte"), Rechtsform, Name bzw. Firmenname und einer deutschen Bankverbindung für Auszahlungen. Plan zehn Minuten ein.

Keine Panik, falls die vollständige Freischaltung für Live-Zahlungen ein paar Tage dauert. Der Testbetrieb, den wir hier durchspielen, läuft auch auf einem frisch angelegten, noch nicht verifizierten Konto. Du kannst sofort loslegen und dich erst um die Live-Freigabe kümmern, wenn dein Produkt bereit ist, echtes Geld entgegenzunehmen.

Testmodus zuerst — immer

Oben rechts im Stripe-Dashboard siehst du einen Schalter Testmodus. Den klickst du jetzt ein. Du erkennst den aktiven Testmodus an der gelb-orange eingefärbten Leiste am oberen Rand und dem Hinweis „TEST DATA" im Header.

Der komplette Kurs läuft im Testmodus. Das kostet dich nichts, du kannst mit offiziellen Testkarten beliebig oft kaufen, und du siehst am ID-Präfix sofort, in welchem Modus du gerade bist.

Die Testkarten:

  • 4242 4242 4242 4242 — Standard-Karte, läuft immer durch
  • 4000 0025 0000 3155 — triggert 3D-Secure, in Europa Pflicht
  • 4000 0000 0000 9995 — wird abgelehnt (Fehlerfälle testen)

Ablaufdatum in der Zukunft, CVC dreistellig, PLZ fünfstellig — Stripe prüft die Werte im Testmodus nicht.

Wichtig: Test-Keys und Live-Keys sind strikt getrennt. Ein Product aus dem Testmodus existiert im Live-Modus nicht, die beiden Modi haben komplett separate Datenbanken. Wenn du später live gehst, legst du Product und Webhook im Live-Modus neu an und trägst die neuen IDs ins Theme ein.

Die zwei API-Keys

Geh links auf Developers → API keys. Du siehst zwei Felder, die wir brauchen:

Der Publishable Key (pk_test_...) ist öffentlich. Er identifiziert deinen Account gegenüber Stripe, wie eine Kundennummer auf einem Briefkopf. Er darf im Frontend stehen — mit ihm allein kann niemand Geld bewegen.

Der Secret Key (sk_test_...) ist das Gegenteil. Mit ihm kann man Checkout-Sessions anlegen, Refunds auslösen, Kundendaten auslesen. Dieser Key gehört niemals in ein Git-Repository, niemals ins Frontend, niemals in eine E-Mail.

Publishable Key, Secret Key, Webhook Secret und Price ID im direkten Vergleich

Merk dir grob: Publishable = darf jeder sehen. Secret = darf niemand sehen. Unter dem Secret Key gibt es den Button Reveal test key — klick ihn nur, wenn du den Key gleich kopierst. Sollte ein Secret Key in falsche Hände geraten, klickst du Roll key, Stripe erzeugt einen neuen und invalidiert den alten.

Product und Price — der wichtigste Unterschied

Stripe trennt zwei Objekte, die auf den ersten Blick gleich aussehen:

  • Ein Product ist der Container. Name, Beschreibung, vielleicht ein Bild. ID beginnt mit prod_.
  • Ein Price ist der konkrete Preis. Er gehört zu einem Product und hält Betrag, Währung und Abrechnungsart. ID beginnt mit price_.

Das Theme bindet immer an einen Price, niemals an ein Product. Das ist keine Marotte von uns, sondern eine Anforderung der Stripe-Checkout-API: Bei der Erstellung einer Checkout-Session muss konkret stehen, welcher Price abgerechnet wird.

Wenn du eine Product ID (prod_...) ins Feld „Stripe Price ID" einträgst, bricht der Checkout später mit einem Fehler ab. Das ist in unserer Praxis der häufigste Einrichtungsfehler bei Digital Downloads überhaupt — vor falscher Datei, vor falschem Webhook.

ID-PräfixWas ist das?Gehört ins Theme?
prod_...Product (Container)Nein
price_...Price (Betrag + Währung)Ja — ins Feld „Stripe Price ID"
pk_test_... / pk_live_...Publishable KeyJa
sk_test_... / sk_live_...Secret KeyJa
whsec_...Webhook SecretJa, aber erst in Lektion 04

Ein Product mit Price anlegen

Klick im Stripe-Menü links auf Products, oben rechts auf + Add product.

Im Formular:

  • Name — nimm den echten Produktnamen, z. B. „Feierabendrezepte — 30 schnelle Alltags-Gerichte"
  • Beschreibung — optional, hilft nur dir zur Unterscheidung im Dashboard
  • Bild — nicht nötig, das Theme nutzt es ohnehin nicht

Unter Pricing:

  • One-off (Einmalzahlung) — richtig für PDFs, E-Books, Speisepläne. Recurring wäre für Abos, das verarbeitet das Theme nicht.
  • Amount: 9.90 (Punkt als Dezimaltrenner, nicht Komma)
  • Currency: EUR

Unter Tax behavior entscheidest du, ob der Preis inklusive oder exklusive Steuer verstanden wird. Für den Testlauf ist die Voreinstellung in Ordnung — Umsatzsteuer regelst du ohnehin in deinem Buchhaltungstool oder über Stripe Tax, nicht im Theme.

Klick Add product. Stripe legt gleichzeitig ein Product und einen Price an und landet auf der Produktdetailseite.

Die Price ID finden und kopieren

Auf der Produktdetailseite siehst du unten den Abschnitt Pricing mit einer Tabelle aller Prices (bei dir genau einer). Wenn du über die Preiszeile hoverst, erscheint rechts die Price ID im Format price_1Pn4aB....

Die Stripe Price ID in der Preis-Tabelle auf der Produktdetailseite

Klick das Kopier-Symbol oder markier die ID und kopier sie. Speicher sie in einem Notiz-Tab — gleich in Lektion 03 brauchen wir sie.

Kurze Gegenprobe: Deine kopierte ID muss mit price_ anfangen. Wenn sie mit prod_ anfängt, hast du dich verklickt (Product ID steht weiter oben auf der Seite).

Wenn du das Produkt später umpreisen willst, überschreibst du den bestehenden Price nicht, sondern legst in Stripe einen zweiten Price unter demselben Product an und setzt den alten auf „Archived". Die alten Käufe bleiben sauber an der alten ID, du trägst die neue price_... ID ins Theme ein — fertig.

Checkpunkte und Brücke zu Lektion 03

Nach dieser Lektion steht in deinem Stripe-Testmodus:

  • Stripe-Konto aktiv, Testmodus-Schalter an
  • Publishable Key und Secret Key notiert (beide mit _test_-Präfix)
  • Ein Product mit einem Einmalzahlungs-Price in EUR
  • Die zugehörige Price ID (price_...) kopierbereit

In Lektion 03 öffnen wir den Admin-Bereich des Theme-Features, tragen die Keys ein und legen das Produkt direkt im Theme an — mit genau dieser Price ID.

Wenn du diese Lektion gelesen hast, markiere sie als abgeschlossen.