Liquid, JavaScript, Themes
Hallo an Alle,
wir haben gerade neu einen Shopify Shop aufgesetzt und wollen zu den Shopify Payments noch Paypal und Vorkasse als Zahlungsarten mit aufnehmen. Nun soll bei Zahlungsartenwahl PayPal durch den Kunden auch auf der Bestellbestätigungsmail unter Zahlungsmethode "PayPal - Betrag von XX € bezahlt" erscheinen. Bei Auswahl von Vorkasse "Zahlung bitte an ......". Welche HTML Befehle benötige ich dafür um dies in die Transaktionsmails zu integrieren?
Vielen dank Vorab.
Hey @Nobody3
Erstmals ein herzliches Willkommen auf der Plattform!
In Shopify kann man den Inhalt von Transaktions-E-Mails im Bereich "Einstellungen" > "Benachrichtigungen" anpassen. Dabei kann man auf spezielle Variablen zugreifen, um relevante Informationen (wie z. B. die gewählte Zahlungsmethode) abzurufen.
Für die gewünschten Anpassungen navigiere zum Bereich "Einstellungen" -> "Benachrichtigungen" -> "Bestellbestätigung", um den HTML-Code der E-Mail zu bearbeiten.
Füge die benötigte Bedingungs-Logik mit Liquid-Code ein: Der Shopify E-Mail-Editor verwendet die Template-Sprache "Liquid", um Bedingungen und Variablen im Template darzustellen. Du kannst die gewünschte Logik mit der folgenden IF-Statement einfügen:
{% if transaction.payment_method.title == "PayPal" %}
Zahlungsmethode: PayPal - Betrag von {{ order.total_price | money }} bezahlt
{% elsif transaction.payment_method.title == "Vorkasse" %}
Zahlungsmethode: Vorkasse - Zahlung bitte an [Ihre Bankdaten oder Zahlungsanweisungen]
{% else %}
Zahlungsmethode: {{ transaction.payment_method.title }}
{% endif %}
Ersetze [Ihre Bankdaten oder Zahlungsanweisungen]
durch die benötigten Informationen. Klicke auf "Änderungen speichern", um die aktualisierte E-Mail-Benachrichtigung zu speichern.
Bitte beachte:
Hoffentlich hilft das weiter! 😉
Gabe | Social Care @ Shopify
- War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen!
- Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung
- Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog
Hallo Gabe,
vielen Dnak für deine Ausführliche Antwort.
Leider funzt es noch nicht.
Bei Auswahl der Möglichkeit von Vorkasse, wird einfach in der Mail nichts angezeigt.
Hier mal der Code Schnippsel aus der Vorlage, hast du dafür noch ien Lösung parat?
<td class="customer-info__item">
<h4>Zahlungsmethode</h4>
{% for transaction in transactions %}
{% if transaction.payment_method.title == "PayPal" %}
PayPal - Betrag von {{ order.total_price | money }} bezahlt
{% elsif transaction.payment_method.title == "Vorkasse" %}
Vorkasse - Zahlung bitte an [Ihre Bankdaten oder Zahlungsanweisungen]
{% else %}
{{ transaction.payment_method.title }}
{% endif %}
{% if (transaction.status == "success") and (transaction.kind == "authorization" or transaction.kind == "sale") %}
<p class="customer-info__item-content">
{% if transaction.payment_details.credit_card_company %}
{% capture credit_card_url %}notifications/{{ transaction.payment_details.credit_card_company | downcase }}.png{% endcapture %}
<img src="{{ credit_card_url | shopify_asset_url }}" class="customer-info__item-credit" height="24">
<span>Endet mit {{ transaction.payment_details.credit_card_last_four_digits }} — <strong>{{ total_price | money }}</strong></span>
{% else %}
{{ transaction.gateway | replace: "_", " " | capitalize }} — <strong>{{ transaction.amount | money }}</strong>
{% endif %}
</p>
{% endif %}
{% endfor %}
</td>
</tr>
</table>
Vielen dnak im Voraus.
Hey @Nobody3
Ja, das ist etwas knifflig! Und kommt darauf an wo genau du den Code platzierst, wie z. B. direkt unterhalb dem {% if total_discounts > 0 %} <p class="total-discount">
Abschnitt.
Hast du das mit einer Testbestellung mit Vorkasse ausprobiert und widerspiegelt der Code den genauen Titel deiner manuellen Vorkasse Zahlungsmethode?
Prüfe das nochmal mit einer Testbestellung. Man kann 3 Arten von Testbestellungen verwenden, um solche Szenarien zu testen.
Hier ist der Code nochmal zum testen:
<td class="customer-info__item">
<h4>Zahlungsmethode</h4>
{% for transaction in transactions %}
{% if transaction.payment_method.title == "PayPal" %}
PayPal - Betrag von {{ order.total_price | money }} bezahlt
{% elsif transaction.payment_method.title == "Vorkasse" %}
Vorkasse - Zahlung bitte an [Ihre Bankdaten oder Zahlungsanweisungen]
{% else %}
{{ transaction.payment_method.title }}
{% endif %}
{% if (transaction.status == "success") and (transaction.kind == "authorization" or transaction.kind == "sale") %}
<p class="customer-info__item-content">
{% if transaction.payment_details.credit_card_company %}
{% capture credit_card_url %}notifications/{{ transaction.payment_details.credit_card_company | downcase }}.png{% endcapture %}
<img src="{{ credit_card_url | shopify_asset_url }}" class="customer-info__item-credit" height="24">
<span>Endet mit {{ transaction.payment_details.credit_card_last_four_digits }} — <strong>{{ transaction.amount | money }}</strong></span>
{% else %}
{{ transaction.gateway | replace: "_", " " | capitalize }} — <strong>{{ transaction.amount | money }}</strong>
{% endif %}
</p>
{% endif %}
{% endfor %}
</td>
Gabe | Social Care @ Shopify
- War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen!
- Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung
- Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog
Vielen Dank für diene Hilfe.
Funktioniert jetzt.
M.f.G.
Hi, ich habe mehrere Foreneinträge zum Thema "Vorkasse Hinweis in der Bestellbestätigung" gefunden und ALLE Codes ausprobiert, es wird mir nur nie angezeigt. Bei diesem Code hier oben bekomme ich wenigstens "Zahlungsmethode" angezeigt, aber keinen Inhalt darunter. Ich brauche nur eine Funktion für Vorkasse, Paypal bieten wir gar nicht an. Ich komme leider nicht weiter, egal welchen Code ich teste. Ich habe die Zahlungsart Vorkasse manuell angelegt und Vorkasse genannt. Ich finde den Fehler einfach nicht. Könnte mir jemand weiterhelfen?
<td class="customer-info__item">
<h4>Zahlungsmethode</h4>
{% for transaction in transactions %}
{% if transaction.payment_method.title == "PayPal" %}
PayPal - Betrag von {{ order.total_price | money }} bezahlt
{% elsif transaction.payment_method.title == "Vorkasse" %}
Vorkasse - Zahlung bitte an [Ihre Bankdaten oder Zahlungsanweisungen]
{% else %}
{{ transaction.payment_method.title }}
{% endif %}
{% if (transaction.status == "success") and (transaction.kind == "authorization" or transaction.kind == "sale") %}
<p class="customer-info__item-content">
{% if transaction.payment_details.credit_card_company %}
{% capture credit_card_url %}notifications/{{ transaction.payment_details.credit_card_company | downcase }}.png{% endcapture %}
<img src="{{ credit_card_url | shopify_asset_url }}" class="customer-info__item-credit" height="24">
<span>Endet mit {{ transaction.payment_details.credit_card_last_four_digits }} — <strong>{{ transaction.amount | money }}</strong></span>
{% else %}
{{ transaction.gateway | replace: "_", " " | capitalize }} — <strong>{{ transaction.amount | money }}</strong>
{% endif %}
</p>
{% endif %}
{% endfor %}
</td>
oder den hier aus einem anderen Forum:
<table class="row section">
<tr>
<td class="section__cell">
<table class="container">
<tr>
<td>
{% for transaction in transactions %}
{% if transaction.gateway_display_name contains 'Vorkasse' %}
<br />
Please transfer the amound to the follwoing bank account:<br />
<br />
<strong>Company_Name</strong><br />
IBAN: xxxxxxxxxxxxxxxxx<br />
BIC: xxxxxxxxxxxxxx<br />
Bank: YYYYYYYYYYY<br /><br/>
Reference: ZZZZZZZZZZZZZ<br />
<p>As soon as amount is received the fulfillment will be carried out.<br>
</p>
{% break %}
{% endif %}
{% endfor %}
</td>
</tr>
</table>
</td>
</tr>
</table>
Hey @nadyylin
Es sieht so aus, als ob dein Hauptproblem darin besteht, dass die Bedingung für das Anzeigen der Vorkasse-Informationen nicht erfüllt wird, weil die title
- oder gateway_display_name
-Attribute nicht exakt mit den Werten übereinstimmen, die in den Bedingungen deiner Liquid-Templates verwendet werden. Hier sind einige Schritte, die du ausprobieren kannst, um das Problem zu lösen:
Überprüfung des Titels der Zahlungsmethode: Stelle sicher, dass der Titel der Zahlungsmethode genau "Vorkasse" lautet, wie er in deinem Shopify-Backend definiert ist. Manchmal können zusätzliche Leerzeichen oder Schreibfehler dazu führen, dass die Bedingung nicht erfüllt wird.
Debugging des Codes: Du könntest vorübergehend den Titel der Zahlungsmethode in der E-Mail ausgeben lassen, um zu sehen, was tatsächlich als Wert ankommt. Füge dazu einfach folgende FOR-Loop in deinem E-Mail-Template hinzu:
{% for transaction in transactions %}
{{ transaction.payment_method.title }}<br>
{% endfor %}
Diese Änderung zeigt dir alle Titel der Zahlungsmethoden an, die in den Transaktionen verwendet werden. Überprüfe, ob "Vorkasse" genau so erscheint, wie du es erwartest.
Anpassung der Bedingung: Wenn die Überprüfung zeigt, dass der Titel leicht abweicht (z.B. durch zusätzliche Leerzeichen), passe die Bedingung entsprechend an, z.B. mit dieser IF-Statement:
{% if transaction.payment_method.title contains "Vorkasse" %}
Alternative Abfragebedingungen: Versuche alternativ, andere Attribute zu verwenden, die möglicherweise konsistenter sind, wie gateway_display_name
:
{% if transaction.gateway_display_name contains 'Vorkasse' %}
Verwendung von Debug-Informationen: Es könnte hilfreich sein, mehr Informationen über die Transaktion auszugeben, um zu verstehen, was intern vor sich geht. Füge folgende FOR-Loop ein, um alle verfügbaren Details zu einer Transaktion zu sehen:
{% for transaction in transactions %}
<pre>{{ transaction | json }}</pre>
{% endfor %}
Diese Anweisung wandelt das Transaktionsobjekt in einen JSON-String um und zeigt ihn formatiert an, so dass du alle verfügbaren Eigenschaften und Werte sehen kannst.
Abschließende Tests: Nachdem du die Bedingung angepasst hast, führe eine Testbestellung mit Vorkasse im Checkout durch, um sicherzustellen, dass alles wie erwartet funktioniert.
Hoffe das hilft dir weiter - lass wissen falls nicht! 😉
---
Warum nicht etwas Gamification in das Shop einbauen, um deinen Kunden etwas Fun im Shop anzubieten? Gerne kann ich bei Interesse Tipps dazu geben!
Hast du weitere Fragen zum Shop? Gebe einfach ein Suchbegriff oben in der Suchleiste der Community Landingpage ein, denn das Thema haben wir sehr wahrscheinlich schon besprochen. Halte bitte Ausschau in deiner E-Mail auf Notifications zu Antworten auf deine Fragen in der Community.
Gabe | Social Care @ Shopify
- War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen!
- Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung
- Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog
Hi @Gabe
Erstmal vielen Dank für die ganzen Tipps! Es heißt eigentlich sicher "Vorkasse", es gibt auch keine Leerzeichen. Ich habe den ersten Code von dir eingebaut aber sehe nichts in der Email, es wird nichts angezeigt. Habe den Code einfach ab Zeile 668 eingefügt, also nach dem Gesamtbetrag. Mache ich hier schon etwas falsch? Hier der Code:
({% for transaction in transactions %}
{{ transaction.payment_method.title }}<br>
{% endfor %})
Dann habe ich rumprobiert, mit allen alternativen Abfragebedingungen, die du genannt hast, es wird nichts angezeigt.
Was ich nun auch gesehen habe, auf der Bestellabschluss-Seite wird die Zahlungsmethode angegeben mit Vorkasse, wenn ich den text untersuche sehe ich folgendes im Quellcode, kannst du daraus etwas schließen? Ich bin leider komplett überfragt aktuell.
Zu dem letzten Code in der Nachricht, wo genau baue ich den ein? Irgendwo im Email Template?
Hey @nadyylin
Beim Einbinden der Liquid-Variablen in dein E-Mail-Template gibt es einige Details, auf die du achten solltest:
Einfügen an der richtigen Stelle: Der Block, den du hinzufügst, sollte an einer Stelle in deinem E-Mail-Template platziert werden, wo du sicher bist, dass er auch ausgeführt wird. Das bedeutet, er sollte nicht innerhalb von Bedingungen stehen, die eventuell nicht erfüllt werden.
Überprüfung der Variablen: Es ist möglich, dass die Variable transaction.payment_method.title
nicht das enthält, was du erwartest, oder dass sie unter Umständen sogar leer ist. Das könntest du testen, indem du vorübergehend einen statischen Text ausgibst, um sicherzustellen, dass der Codeblock überhaupt erreicht wird:
{% for transaction in transactions %}
TEST: {{ transaction.payment_method.title }}<br>
{% endfor %}
Es wird oft vorgeschlagen, nach dem Teil der Vorlage zu suchen, der den Betrag der Transaktion zeigt, und dort deine spezifischen Anweisungen einzufügen. Der Code könnte so aussehen:
{% if transaction.gateway_display_name == "Vorkasse" %}
Bitte überweise den offenen Betrag an:
...
Nach Geldeingang versenden wir umgehend deine Bestellung
{% endif %}
Denk daran, "Vorkasse" durch den genauen Namen zu ersetzen, den du deiner manuellen Zahlungsmethode gegeben hast, und deine eigenen Bankdetails einzufügen.
Wenn du den Debug-Code einfügst ({{ transaction | json }}
), solltest du ihn an einer Stelle platzieren, die definitiv erreicht wird, zum Beispiel ganz am Anfang oder Ende des Templates. Beachte, dass dieser Code viel Text produzieren kann, weil er alle Informationen des Transaktionsobjekts ausgibt.
Zum Quellcode auf deinem Screenshot: Daraus geht hervor, dass die Zahlungsmethode im Frontend korrekt als "Vorkasse" dargestellt wird. Die Frage ist, ob dieses Label auch in den Datenstrukturen so hinterlegt ist, die dein E-Mail-Template verwendet.
Was du tun könntest:
Überprüfe, ob es eine Konsolenausgabe gibt, die von einer Javascript-Funktion erzeugt wird. Es könnte sein, dass der Text "Vorkasse" dynamisch über Javascript und nicht über die Liquid-Template-Engine eingefügt wird. Wenn das der Fall ist, musst du sicherstellen, dass die Daten auch serverseitig für das E-Mail-Template zur Verfügung stehen.
Versuche, den Debug-Code in deinem E-Mail-Template zu platzieren, um die Struktur des Transaktionsobjekts zu sehen. Da es sich um ein E-Mail-Template handelt, könnten große Mengen an Debug-Informationen jedoch nicht ideal sein. Vielleicht ist es besser, diese Art von Debugging in deinem Shopify-Adminbereich zu tun, wo du das Template bearbeiten kannst, um temporär Ausgaben zu erzeugen.
Wenn du weiterhin Schwierigkeiten hast, kann es auch hilfreich sein, direkt bei Shopify nach spezifischer Unterstützung zu fragen oder jemanden zu beauftragen, der sich mit Shopify Liquid-Templates auskennt und direkt in deinem System nachsehen kann.
Hoffe das hilft dir weiter - lass wissen falls nicht! 😉
Gabe | Social Care @ Shopify
- War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen!
- Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung
- Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog
Hallo Gabe,
ich habe das gleiche Problem. Bei mir wird keine Zahlungsmethode angezeigt.
{{ transaction.gateway_display_name }}
Das ist bei mir leer.
{% for transaction in transactions %}
{{ transaction.payment_method.title }}<br>
{% endfor %}
Ist bei mir ebenfalls leer.
{% for transaction in transactions %}
<pre>{{ transaction | json }}</pre>
{% endfor %}
Dabei erhalte ich die Meldung:
{"error":"json not allowed for this object"} |
{% for transaction in transactions %}
TEST: {{ transaction.payment_method.title }}<br>
{% endfor %}
Aus dem Snippet kommt bei mir zwar zweimal "TEST:" aber nicht mehr.
Ich bin ratlos. Wie komme ich nun an meine Zahlungsmethoden für die Benachrichtigungen an Kunden?
Viele Grüße
Nick
Hey @Nick_Wy
Das Problem, dass Zahlungsmethoden in deinen Shopify-Benachrichtigungen nicht angezeigt werden, kann verschiedene Ursachen haben. Hier sind einige Schritte, die du zur Fehlerbehebung durchführen kannst:
{% for transaction in transactions %}
Transaction ID: {{ transaction.id }}<br>
Payment Method: {{ transaction.gateway }}<br>
Status: {{ transaction.status }}<br>
{% endfor %}
Dieser Code gibt Basisinformationen jeder Transaktion aus, die helfen können, den Kontext besser zu verstehen. Wenn die Zahlungsmethode konsequent fehlt, könnte es sein, dass die Transaktionen nicht vollständig sind oder die Daten aufgrund der Art, wie die Zahlungen verarbeitet werden (z.B. manuelle Zahlungsmethoden oder bestimmte integrierte Apps), nicht verfügbar sind.
Hoffe das hilft dir weiter - lass wissen falls nicht! 😉
---
Warum nicht etwas Gamification in das Shop einbauen, um deinen Kunden etwas Fun im Shop anzubieten? Gerne kann ich bei Interesse Tipps dazu geben!
Hast du weitere Fragen zum Shop? Gebe einfach ein Suchbegriff oben in der Suchleiste der Community Landingpage ein, denn das Thema haben wir sehr wahrscheinlich schon besprochen. Halte bitte Ausschau in deiner E-Mail auf Notifications zu Antworten auf deine Fragen in der Community.
Gabe | Social Care @ Shopify
- War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen!
- Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung
- Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog
Hallo @Gabe,
vielen Dank für die schnelle und ausführliche Antwort.
Mit dem Code-Snippet in deiner Antwort hat es nun funktioniert.
Damit kann ich nun meine Bestellbestätigung anpassen.
Vielen lieben Dank.
Viele Grüße
Nick
Gabe | Social Care @ Shopify
- War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen!
- Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung
- Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog
Hi Gabe,
ich habe scheinbar das gleiche Problem wie Nick, allerdings ist mir die Lösung als kompletter Code-Laie nicht ganz schlüssig.
Ich habe alles möglich hier genannte ausgetestet:
Hier ist der Code zum Anzeigen der Bankdaten:
{% if transaction.gateway_display_name == "Vorkasse" %}
<p>
Bitte überweise den offenen Betrag an:
<br>
Empfänger: ...
<br>
IBAN: DE...
<br>
BIC: ...
<br>
Bank: Commerzbank AG
<br>
Verwendungszweck: Gib hier bitte Deine Bestellnummer an (#XXXX)
<br>
Nach Geldeingang versenden wir umgehend Deine Bestellung
</p>
{% endif %}
Die Zahlungsmethode "Vorkasse" ist korrekt geschrieben und eingepflegt.
--> Man kann damit einen Kauf abschließen und die Bankdaten werden auf der Thank-you-page
Das folgende wurde als Bedingung getestet:
transaction.payment_method.title --> hier erscheint nichts in der E-Mail
transaction.gateway_display_name --> hier erscheint nichts in der E-Mail
Der Code wurde direkt am Anfang der E-Mail platziert, damit er sicher ausgeführt wird
{% for transaction in transactions %}
{{ transaction.payment_method.title }}<br>
{% endfor %}
--> hier wird ebenfalls nichts angezeigt in der E-Mail
Bei:
{% for transaction in transactions %}
<pre>{{ transaction | json }}</pre>
{% endfor %}
Kommt:
{"error":"json not allowed for this object"}
{"error":"json not allowed for this object"}
Bei:
{% for transaction in transactions %}
TEST: {{ transaction.payment_method.title }}<br>
{% endfor %}
Kommt:
TEST:
TEST:
Bei:
{% for transaction in transactions %}
Transaction ID: {{ transaction.id }}<br>
Payment Method: {{ transaction.gateway }}<br>
Status: {{ transaction.status }}<br>
{% endfor %}
Kommt:
Transaction ID: 7473544528219
Payment Method: Vorkasse
Status: pending
Transaction ID: 7473558323547
Payment Method: Vorkasse
Status: success
Hast Du vielleicht eine Idee, wie ich das Problem lösen kann?
Vielen Dank im Voraus! 🙂
LG Tim
Hey Tim! @TiSo
Super lass uns das mal weiter troubleshooten! 💪
Vieles kommt auf deine gesamte Bestellbestätigungs-Vorlage drauf an, und wie du sie bearbeitet hast (siehe einen Thread dazu hier). Jegliche weitere Code Ergänzungen zu dieser Vorlage können die obigen Code Lösungen daran hindern korrekt zu exekutieren, die bei den anderen oben bereits geklappt haben, wie du oben lesen kannst. In meiner Vorlage hat es auch geklappt. Ich habe allerdings die Vorlage vor dem Einsetzen der obigen und funktionieren Lösung, die gesamt Vorlage auf den Standard zurückgesetzt:
<div>
- oder <p>
-Tags zu finden ist. Dort wird der dynamische Inhalt für den Kunden eingefügt.{{ order_number }}
, {{ customer.first_name }}
, usw. Das zeigt an, wo der dynamische Inhalt in der E-Mail angezeigt wird.<p>
-Tags oder einer anderen HTML-Struktur eingefügt werden, die zu deinem Design passt, damit sie sich nahtlos in den Rest des Inhalts einfügt.Hier ist ein einfaches Beispiel, wo du die bedingte Logik für SEPA einfügen könntest samt meinen Kommentaren:
<p>Vielen Dank für deinen Einkauf, {{ customer.first_name }}!</p>
<p>Deine Bestellnummer lautet: {{ order_number }}.</p>
<p>Details zu deiner Bestellung:</p>
<!-- Bestelldetails -->
<!-- Hier fügst du deine bedingte Logik für die Zahlungsmethode ein -->
{% if transaction.gateway == 'Vorkasse per SEPA Banküberweisung' %}
<p>Bitte überweise den Gesamtbetrag auf unser Bankkonto mit den folgenden Details...</p>
{% elsif transaction.gateway == 'PayPal' %}
<p>Deine Zahlung wurde über PayPal abgewickelt. Du musst nichts weiter tun.</p>
{% endif %}
<!-- Fortsetzung des restlichen Inhalts -->
<p>Vielen Dank, dass du bei uns eingekauft hast!</p>
Ein wiederkehrendes Problem ist, dass bestimmte Transaktionsdaten, wie transaction.payment_method.title
oder transaction.gateway_display_name
, in E-Mails nicht immer verfügbar sind vielleicht weil Shopify aus Sicherheitsgründen den Zugriff auf bestimmte Transaktionsdaten in E-Mails einschränkt. Einige Stack Overflow Nutzer berichteten, dass die Daten nur teilweise oder gar nicht verfügbar sind, was insbesondere bei manuellen Zahlungsarten wie "Vorkasse" problematisch ist (Stack Overflow) (Shopify).
Ein weiterer Punkt, der von Entwicklern bemerkt wurde, ist, dass Zahlungsdaten von Shopify in separate Transaktionsobjekte verschoben wurden. Das bedeutet, dass der direkte Zugriff auf die Zahlungsmethode über die bisherigen Variablen in manchen Fällen nicht mehr funktioniert. Die Daten müssen nun über eine tiefere Verschachtelung in den Transaktionsdetails abgerufen werden (Stack Overflow).
Einige Nutzer in der Community fanden heraus, dass sie erfolgreich auf die Zahlungsdetails zugreifen konnten, indem sie order.transactions
anstelle der direkten Transaktionsvariablen verwendeten. Beispielsweise wurde der folgende Code vorgeschlagen, um auf die Zahlungsdetails zuzugreifen:
{% for transactions_item in order.transactions %}
{{ transactions_item.gateway }}
{% endfor %}
Dieser Code gibt die Zahlungs-Gateway-Daten aus, die für die Bestellung verwendet wurden (Shopify Community) (Shopify Community).
Ein häufiges Problem trat bei Wallet-Zahlungen (z. B. Apple Pay) auf, wo die wallet
-Daten in den E-Mails oft leer waren, obwohl die Transaktionen korrekt verarbeitet wurden. Dies deutet darauf hin, dass bestimmte Zahlungsinformationen nur in bestimmten Kontexten verfügbar sind und eventuell über andere Variablen oder APIs abgerufen werden müssen (Shopify Community).
Es konnte auch sein, dass die Liquid-Variablen transaction.payment_method.title
und transaction.gateway_display_name
in der E-Mail-Benachrichtigung nicht korrekt abgerufen werden. Nicht vergessen, man kann auch die Bestellinformationen oder die Zahlungsmethode als order attributes
während des Checkout-Prozesses zu speichern und sie dann in den E-Mails abzurufen als alternativen Weg, um die Informationen in die E-Mail zu bekommen:
{% assign payment_method = transaction.payment_method.title %}
{% if payment_method == "Vorkasse" %}
{% assign order.payment_method = "Vorkasse" %}
{% endif %}
Das Abrufen in der E-Mail:
{% if order.payment_method == "Vorkasse" %}
<p>
Bitte überweise den offenen Betrag an:
<br>
Empfänger: ...
<br>
IBAN: DE...
<br>
BIC: ...
<br>
Bank: Commerzbank AG
<br>
Verwendungszweck: Gib hier bitte Deine Bestellnummer an (#{{ order.name }})
<br>
Nach Geldeingang versenden wir umgehend Deine Bestellung
</p>
{% endif %}
Bei weitere Problemen damit kann ich gerne einen Experten empfehlen!
Hoffe das hilft dir weiter - lass wissen falls nicht! 😉
---
Warum nicht etwas Gamification in das Shop einbauen, um deinen Kunden etwas Fun im Shop anzubieten? Gerne kann ich bei Interesse Tipps dazu geben!
Hast du weitere Fragen zum Shop? Gebe einfach ein Suchbegriff oben in der Suchleiste der Community Landingpage ein, denn das Thema haben wir sehr wahrscheinlich schon besprochen. Halte bitte Ausschau in deiner E-Mail auf Notifications zu Antworten auf deine Fragen in der Community.
Gabe | Social Care @ Shopify
- War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen!
- Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung
- Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog
Hallo Gabe, vielen Dank für die ausführliche Antwort und die ganzen Infos! 🙂
Mein E-Mail Template hat wahrscheinlich nicht mehr viel mit der Standard-Version von Shopify zu tun, da ich es vor mehreren Jahren von einem YouTube Tutorial übernommen hatte.
Ich habe nun wieder viele Varianten ausgetestet, doch leider ohne das gewünschte Ergebnis.
Vielleicht ist es das einfachste, wenn ich den Code hier teile, evtl. findest Du ja einen groben Fehler 🙂
(Der Abschnitt bezüglich der Vorkasse wurde bei Zeile 7-23 eingefügt)
{% capture email_title %}Vielen Dank für Deinen Einkauf! {% endcapture %}
{% capture email_body %}
{% if requires_shipping %}
Hallo {{ customer.first_name }}! Wir bereiten Deine Bestellung gerade für den Versand vor.
Wir benachrichtigen Dich, sobald Deine Bestellung verschickt wurde.<br><br>
{% if transaction.gateway_display_name == "Vorkasse" %}
<p>
Bitte überweise noch den offenen Betrag an:
<br>
Empfänger: ....
<br>
IBAN: ...
<br>
BIC: ...
<br>
Bank: ...
<br>
Verwendungszweck: Gib hier bitte Deine Bestellnummer an (#XXXX)
<br>
Nach Geldeingang versenden wir umgehend Deine Bestellung
</p>
{% endif %}
<b>Auftragsabwicklung:</b><br>
Aktuell haben wir eine unerwartet hohe Nachfrage. Dennoch versenden wir unsere
Bestellungen so schnell wie möglich.<br>
Die aktuelle Auftragsbearbeitungszeit beträgt ... Tage.<br><br>
<b>Versandzeit:</b><br>
Die Versandzeit beträgt <u>... Werktage</u> nach der Bearbeitung Deiner
Bestellung. Das Warten auf Deine Bestellung lohnt sich. Unsere Kunden sind begeistert und
kaufen gerne wieder ein!<br><br>
<b>BONUS: Wir schenken Dir ein eBook!</b><br>
Das eBook mit vielen praktischen Tipps zu ..., kannst Du Dir unter dem folgenden Link herunterladen:
<p>
<a href="https://drive.google.com/file/d/1Y-6bQ...">eBook ...</a>
</p>
{% endif %}
{% endcapture %}
<!DOCTYPE html>
<html lang="de">
<head>
<title>{{ email_title }}</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width">
<link rel="stylesheet" type="text/css" href="/assets/notifications/styles.css">
<style>
.button__cell { background: {{ shop.email_accent_color }}; }
a, a:hover, a:active, a:visited { color: {{ shop.email_accent_color }}; }
</style>
</head>
<body>
<table class="body">
<tr>
<td>
<table class="header row">
<tr>
<td class="header__cell">
<center>
<table class="container">
<tr>
<td>
<table class="row">
<tr>
<td class="shop-name__cell">
{%- if shop.email_logo_url %}
<img src="{{shop.email_logo_url}}" alt="{{ shop.name }}" width="{{
shop.email_logo_width }}">
{%- else %}
<h1 class="shop-name__text">
<a href="{{shop.url}}">{{ shop.name }}</a>
</h1>
{%- endif %}
</td>
<td class="order-number__cell">
<span class="order-number__text">
Bestellung {{ order_name }}
</span>
</td>
</tr>
</table>
</td>
</tr>
</table>
</center>
</td>
</tr>
</table>
<table class="row content">
<tr>
<td class="content__cell">
<center>
<table class="container">
<tr>
<td>
<h2>{{ email_title }}</h2>
<p>{{ email_body }}</p>
{% if order_status_url %}
<table class="row actions">
<tr>
<td class="empty-line"> </td>
</tr>
<tr>
<td class="actions__cell">
<table class="button main-action-cell">
<tr>
<td class="button__cell"><a href="{{ order_status_url }}"
class="button__text">Bestellung ansehen</a></td>
</tr>
</table>
{% if shop.url %}
<table class="link secondary-action-cell">
<tr>
<td class="link__cell">oder <a href="{{ shop.url }}">zu unserem Shop</a></td>
</tr>
</table>
{% endif %}
</td>
</tr>
</table>
{% else %}
{% if shop.url %}
<table class="row actions">
<tr>
<td class="actions__cell">
<table class="button main-action-cell">
<tr>
<td class="button__cell"><a href="{{ shop.url }}" class="button__text">zu unserem
Shop</a></td>
</tr>
</table>
</td>
</tr>
</table>
{% endif %}
{% endif %}
</td>
</tr>
</table>
</center>
</td>
</tr>
</table>
<table class="row section">
<tr>
<td class="section__cell">
<center>
<table class="container">
<tr>
<td>
<h3>Bestellübersicht</h3>
</td>
</tr>
</table>
<table class="container">
<tr>
<td>
<table class="row">
{% for line in subtotal_line_items %}
<tr class="order-list__item">
<td class="order-list__item__cell">
<table>
<td>
{% if line.image %}
<img src="{{ line | img_url: 'compact_cropped' }}" align="left" width="60" height="60"
class="order-list__product-image"/>
{% endif %}
</td>
<td class="order-list__product-description-cell">
{% if line.product.title %}
{% assign line_title = line.product.title %}
{% else %}
{% assign line_title = line.title %}
{% endif %}
{% if line.quantity < line.quantity %}
{% capture line_display %} {{ line.quantity }} of {{ line.quantity }} {% endcapture %}
{% else %}
{% assign line_display = line.quantity %}
{% endif %}
<span class="order-list__item-title">{{ line_title }} × {{ line_display }}</span><br/>
{% if line.variant.title != 'Default Title' %}
<span class="order-list__item-variant">{{ line.variant.title }}</span><br/>
{% endif %}
{% if line.refunded_quantity > 0 %}
<span class="order-list__item-refunded">Refunded</span>
{% endif %}
{% if line.discount_allocations %}
{% for discount_allocation in line.discount_allocations %}
{% if discount_allocation.discount_application.target_selection != 'all' %}
<span class="order-list__item-discount-allocation">
<img src="{{ 'notifications/discounttag.png' | shopify_asset_url }}" width="18"
height="18" class="discount-tag-icon" />
<span>
{{ discount_allocation.discount_application.title | upcase }}
(-{{ discount_allocation.amount | money }})
</span>
</span>
{% endif %}
{% endfor %}
{% endif %}
</td>
<td class="order-list__price-cell">
{% if line.original_line_price != line.final_line_price %}
<del class="order-list__item-original-price">{{ line.original_line_price | money
}}</del>
{% endif %}
<p class="order-list__item-price">
{% if line.final_line_price > 0 %}
{{ line.final_line_price | money }}
{% if line.unit_price_measurement %}
<div class="order-list__unit-price">
{{ line.unit_price | money }}/
{%- if line.unit_price_measurement.reference_value != 1 -%}
{{- line.unit_price_measurement.reference_value -}}
{%- endif -%}
{{ line.unit_price_measurement.reference_unit }}
</div>
{% endif %}
{% else %}
Kostenlos
{% endif %}
</p>
</td>
</table>
</td>
</tr>{% endfor %}
</table>
<table class="row subtotal-lines">
<tr>
<td class="subtotal-spacer"></td>
<td>
<table class="row subtotal-table">
{% for discount_application in discount_applications %}
{% if discount_application.target_selection == 'all' %}
{% capture discount_title %}
{% if discount_application.title %}
{{ discount_application.title | upcase }}
{% else %}
Rabatt
{% endif %}
{% endcapture %}
<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Rabatt</span>
<span class="subtotal-line__discount">
<img src="{{ 'notifications/discounttag.png' | shopify_asset_url }}" width="18"
height="18" class="discount-tag-icon" />
<span class="subtotal-line__discount-title">{{ discount_title }}</span>
</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>-{{ discount_application.total_allocated_amount | money }}</strong>
</td>
</tr>
{% endif %}
{% endfor %}
<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Zwischensumme</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>{{ subtotal_price | money }}</strong>
</td>
</tr>
<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Versand</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>{{ shipping_price | money }}</strong>
</td>
</tr>
{% if total_duties %}
<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Aufgaben</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>{{ current_total_duties | money }}</strong>
</td>
</tr>
{% endif %}
<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Steuern</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>{{ tax_price | money }}</strong>
</td>
</tr>
{% if total_tip and total_tip > 0 %}
<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Tip</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>{{ total_tip | money }}</strong>
</td>
</tr>
{% endif %}
</table>
<table class="row subtotal-table subtotal-table--total">
<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Gesamt</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>{{ total_price | money_with_currency }}</strong>
</td>
</tr>
</table>
{% if total_discounts > 0 %}
<p class="total-discount">
Du sparst <span class="total-discount--amount">{{ total_discounts | money }}</span>
</p>
{% endif %}
{% assign transaction_size = 0 %}
{% assign transaction_amount = 0 %}
{% for transaction in transactions %}
{% if transaction.status == "success" %}
{% unless transaction.kind == "authorization" or transaction.kind == "void" %}
{% assign transaction_size = transaction_size | plus: 1 %}
{% assign transaction_amount = transaction_amount | plus: transaction.amount %}
{% endunless %}
{% endif %}
{% endfor %}
{% if transaction_size > 1 or transaction_amount < total_price %}
<table class="row subtotal-table">
<tr><td colspan="2" class="subtotal-table__line"></td></tr>
<tr><td colspan="2" class="subtotal-table__small-space"></td></tr>
{% for transaction in transactions %}
{% if transaction.status == "success" and transaction.kind == "capture" or
transaction.kind == "sale" %}
{% if transaction.payment_details.credit_card_company %}
{% capture transaction_name %}{{
transaction.payment_details.credit_card_company }} (ending in {{
transaction.payment_details.credit_card_last_four_digits }}){% endcapture %}
{% else %}
{% capture transaction_name %}{{ transaction.gateway_display_name }}{%
endcapture %}
{% endif %}
<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>{{transaction_name}}</span>
</p>
</td>
<td class="subtotal-line__value">
<strong>{{ transaction.amount | money }}</strong>
</td>
</tr>
{% endif %}
{% if transaction.kind == 'refund' %}
{% if transaction.payment_details.credit_card_company %}
{% assign refund_method_title =
transaction.payment_details.credit_card_company %}
{% else %}
{% assign refund_method_title = transaction.gateway %}
{% endif %}
<tr class="subtotal-line">
<td class="subtotal-line__title">
<p>
<span>Zurückerstatten</span>
<br>
<small>{{ refund_method_title | capitalize }}</small>
</p>
</td>
<td class="subtotal-line__value">
<strong>- {{ transaction.amount | money }}</strong>
</td>
</tr>
{% endif %}
{% endfor %}
</table>
{% endif %}
</td>
</tr>
</table>
</td>
</tr>
</table>
</center>
</td>
</tr>
</table>
<table class="row section">
<tr>
<td class="section__cell">
<center>
<table class="container">
<tr>
<td>
<h3>Kundeninformationen</h3>
</td>
</tr>
</table>
<table class="container">
<tr>
<td>
<table class="row">
<tr>
{% if requires_shipping and shipping_address %}
<td class="customer-info__item">
<h4>Lieferadresse</h4>
{{ shipping_address | format_address }}
</td>
{% endif %}
{% if billing_address %}
<td class="customer-info__item">
<h4>Rechnungsadresse</h4>
{{ billing_address | format_address }}
</td>
{% endif %}
</tr>
</table>
<table class="row">
<tr>
{% if requires_shipping and shipping_address %}
<td class="customer-info__item">
<h4>Versand</h4>
<p>{{ shipping_method.title }}</p>
</td>
{% endif %}
{% assign transaction_count = transactions | size %}
{% if transaction_size > 0 %}
<td class="customer-info__item">
<h4>Zahlung</h4>
{% for transaction in transactions %}
{% if transaction.status == "success" or transaction.status == "pending" %}
{% if transaction.kind == "capture" or transaction.kind == "sale" %}
<p class="customer-info__item-content">
{% if transaction.payment_details.credit_card_company %}
{% capture credit_card_url %}notifications/{{
transaction.payment_details.credit_card_company | downcase | replace: " ", "_" }}.png{%
endcapture %}
<img src="{{ credit_card_url | shopify_asset_url }}"
class="customer-info__item-credit" height="24">
<span>Zahlung </span>
{% else %}
{{ transaction.gateway_display_name }} — <strong>{{ transaction.amount |
money }}</strong>
{% endif %}
</p>
{% endif %}
{% endif %}
{% endfor %}
</td>
{% endif %}
</tr>
</table>
</td>
</tr>
</table>
</center>
</td>
</tr>
</table>
<table class="row footer">
<tr>
<td class="footer__cell">
<center>
<table class="container">
<tr>
<td>
<p class="disclaimer__subtext">Falls Du Fragen hast, antworte einfach auf diese
E-Mail oder kontaktiere uns unter <a href="mailto:{{ shop.email }}">{{ shop.email }}</a>.</p>
</td>
</tr>
</table>
</center>
</td>
</tr>
</table>
<img src="{{ 'notifications/spacer.png' | shopify_asset_url }}" class="spacer" height="1" />
</td>
</tr>
</table>
</body>
</html>
{%- if shop.terms_of_service.body != blank -%}
{{ shop.terms_of_service | attach_as_pdf: "AGB" }}
{%- endif -%}
{%- if shop.refund_policy.body != blank -%}
{{ shop.refund_policy | attach_as_pdf: "Widerrufsbelehrung" }}
{%- endif -%}
Ich wäre Dir sehr dankbar, wenn Du einmal drüber schauen könntest ob Dir etwas auffällt und woran es liegen könnte. 🙂
Vielen Dank im Voraus
LG Tim
Hey Tim! @TiSo
Ich habe jetzt deinen Code in Spoiler Tags eingebettet da man ansonsten viel zu weit scrollen muss:
Da deine Vorlage komplett geändert wurde wird es allerdings sehr schwer das einzubauen da Shopify dann die Liquid Filter ggf. nicht mehr korrekt im Code erkennen und einlesen kann wie es beispielsweise mit der Standardvorlage es macht.
Beispielsweise könnte in deinem angepassten Code die Variable transaction.gateway_display_name
in deinem E-Mail-Kontext nicht mehr verfügbar sein und somit diese Daten nicht in den Transaktionsobjekten enthalten, besonders wenn mehrere Zahlungsarten oder manuelle Zahlungsoptionen verwendet werden.
Es kann hilfreich sein, die FOR-Loop über die Transaktionsobjekte wie folgt zu iterieren, um sicherzustellen, dass die Daten für jede Transaktion korrekt abgerufen werden, um sicherzustellen, dass der Code für jede Transaktion überprüft wird, falls mehrere Transaktionen vorhanden sind.:
{% for transaction in transactions %}
{% if transaction.gateway_display_name == "Vorkasse" %}
<p>Bitte überweise noch den offenen Betrag an:</p>
<p>IBAN: DE...</p>
<p>BIC: ...</p>
<p>Nach Geldeingang versenden wir umgehend Deine Bestellung.</p>
{% endif %}
{% endfor %}
Falls die Variable transaction.gateway_display_name
nicht verfügbar ist, könntest du eine Fallback-Strategie implementieren. Beispielsweise könntest du versuchen, eine spezifische Variable wie transaction.payment_method
oder order.gateway
zu verwenden, oder alternativ die Zahlungsinformationen direkt im Bestellprozess als Attribut speichern und dann in der E-Mail abrufen:
{% if order.payment_method == "Vorkasse" %}
<p>Bitte überweise den Betrag an unser Konto:</p>
<p>IBAN: DE...</p>
{% endif %}
Debug-Strategie
Falls die Bedingung weiterhin nicht greift, könnte es daran liegen, dass die Daten entweder leer oder nicht korrekt an die E-Mail übergeben werden. Du kannst eine Debug-Zeile einfügen, um die Ausgabe der Transaktionsvariablen zu überprüfen:
{% for transaction in transactions %}
{{ transaction.gateway_display_name }} <!-- Zum Debuggen anzeigen lassen -->
{% endfor %}
So kannst du sehen, ob die Transaktionsdaten korrekt geladen werden.
Hoffe das hilft dir weiter - lass wissen falls nicht! 😉
Gabe | Social Care @ Shopify
- War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen!
- Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung
- Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog
Super freut mich! 😉
Gabe | Social Care @ Shopify
- War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen!
- Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung
- Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog
Teil 2 - Wie die Prinzipien des UX-Designs dir dabei helfen können einen großartigen Shop ...
By Kai Sep 16, 2024Teil 1 - Wie die Prinzipien des UX-Designs dir dabei helfen können einen großartigen Shop ...
By Kai Sep 9, 2024Anpassungen des benutzerdefinierten Codes an Shopify-Themes (CSS) leicht gemachtIn diesem...
By Gabe Aug 28, 2024