Shopify Variablen in HTTP Post Request verwenden

Hallo,

ich möchte die Automatisierung verwenden, um nach einer Bestellung die Produkte in der Bestellung an unseren Server zu senden. Allerdings stoße ich auf Probleme, wenn über die LineItems gelooped wird:

Muss ich da was umschreiben? Oder wird es wegen des Loops nicht klappen? Die E-Mail wird korrekt mitgesendet.

Hey @Yannick_neowake

Ggf. kann auch @Finer oder @byteriver was dazu sagen.

VG,

Hallo @Yannick_neowake , danke für die interessante Frage.

Hierbei handelt es sich um die App “Shopify Flow” (für alle anderen Community-Teilnehmer), bitte denke beim den nächsten Posts daran zu erwähnen, um welches Thema es konkret geht und welche Tools du im Einsatz hast, somit finden sich auch andere “Leser” besser zurecht, die deine Lösung nachbauen möchten.

In deinem Beispiel befinden sich zu viele END Tags.

Hier ein Beispiel von einer funktionsfähigen Webhook:

{
"orderMail": "{{order.email}}",
"orderName": "{{order.name}}",
"lineItems": [
{% for lineItems_item in order.lineItems %}
{
  "lineItemName": "{{lineItems_item.name}}"
}
{% endfor %}
]
}

Hier noch ein Bild vom eingehenden Request auf dem Server:

Wir empfehlen immer die native Shopify Admin API Webhook zu verwenden, da du hier alle Daten zu deiner Bestellung sauber aufgelistet hast. Ich hoffe das konnte dir weiterhelfen, berichte gerne ob es geklappt hat.

Hallo @byteriver ,

vielen Dank für die ausführliche Antwort!

Ich habe die Lösung übernommen, allerdings klappt es nur, solange der Kunde 1 Produkt kauft. Sobald mehrere Produkte im Warenkorb waren, klappt es jedoch nicht mehr

Meine Vermutung ist, dass es an der Position von der For - Schleife liegt, aber ich habe es nicht hinbekommen diese korrekt zu platzieren. Oder liegt es doch an etwas anderem?

Das liegt daran das mehrere JSON Objekte in einem Array durch ein Komma getrennt werden müssen, mit dem unten stehenden Code geschieht dies.

{
"orderMail": "{{order.email}}",
"orderName": "{{order.name}}",
"lineItems": [
{% for lineItems_item in order.lineItems %}
{
  "lineItemName": "{{lineItems_item.name}}"
}{% unless forloop.last %}, {% endunless -%}
{% endfor %}
]
}

Gib gerne Bescheid ob es geklappt hat. Finde es gut, dass du Heroku im Einsatz hast.

Hallo @byteriver ,

das klappt 1A, vielen Dank für deine Hilfe! Ich habe anschließend einfach noch die Values hinzugefügt, welche ich für meine Bedürfnisse brauche:

{
"orderMail": "{{order.email}}",
"orderName": "{{order.name}}",
"lineItems": [
{% for lineItems_item in order.lineItems %}
{
  "lineItemName": "{{lineItems_item.name}}",
  "lineItemUrl":"{{lineItems_item.product.onlineStoreUrl}}",
  "lineItemImage":"{{lineItems_item.product.featuredImage.url}}"
}{% unless forloop.last %}, {% endunless -%}
{% endfor %}
]
}

Mega, freut mich, dass du weiter gekommen bist. Das hilft sicher auch anderen UserInnen die diesen Thread entdecken (werden). :blush: