Orderanlage mit Zahlungsstatus und Lieferstatus via API

Hallo Zusammen,

ich habe über die Suchfunktion jetzt nichts finden können und hoffe, das landet jetzt auch in der richtigen Kategorie, falls nicht, schon einmal Entschuldigung für mein Unwissen.

Aktuell versuche ich eine Schnittstelle für die Orderanlage via API zu bauen und renne in das Problem, dass ich via Post Request zwar eine Order angelegt bekomme, allerdings ohne Zahlungs- und Lieferstatus. 

Wie wäre denn der korrekte Weg über die API den Liefer- und Zahlungsstatus in eine via API erstellte Order initial hineinzubekommen?

Vllt hat ja jemand einmal ein anonymisiertes Beispiel. Das wäre super!

Viele Grüße,

Christian

 

Hi Christian,

für den Zahlungsstatus musst du eine transaction mit einer passenden StateId und beim Lieferstatus eine delivery mit einer passenden StateId angeben.
Solch ein Request kannst du dir z.B. selbst beim Erstellen im Admin anschauen und nachbauen, oder in die Swagger-API-Dokumentation dir das Schema des Requests anschauen. (Swagger-API ist auch online einzusehen: https://api-doc.friendsofshopware.com/#/Order/createOrder)

Ich hoffe das hilft dir erstmal weiter.

Gruß

Krispin

1 „Gefällt mir“

Hallo Krispin,

danke für deine Antwort, genau das hatte ich versucht. Als Beispiel für den Lieferstatus: Leider bekomme ich permanent den Fehler:

Vermutlich habe ich einen Denkfehler. Gibts da einen Kniff?

Das order_delivery Objekt schaut so aus:

 {'shippingOrderAddressId': 'd07f814907814942aa8f36049f8afa97', 'shippingMethodId': '48ab4fff5d454c079611d2129f078de9', 'stateId': '78e6db1e89024c1f85c8a0383bb55adb', 'stateMachineState': {'technicalName': 'open', 'stateMachineId': '277c6700ddf64e1eb34af7298775f314', 'translated': {'name': 'Offen', 'customFields': []}, 'id': '78e6db1e89024c1f85c8a0383bb55adb'}, 'orderId': '25178a73d7bc40b2b4fad8959ad885e8'}

Um es vorweg zu nehmen: selbst, wenn ich ‚stateId‘ oder ‚stateMachineState‘ weglasse, bekomme ich immernoch selbige Meldung.

Wo gucke ich denn falsch?

Vielen Dank für die Hilfe!

 

 

Hi Christian,

okay, per POST über die API bist du in einem falschen Context und kannst somit den State nicht ändern.
Hierfür nutze die Transition-Routes: https://docs.shopware.com/en/shopware-platform-dev-en/admin-api-guide/action-routes
Hier wird dann überprüft, ob die Transition valide ist und ändert dann den State.

Hoffe das hilft dir weiter.

Gruß

Krispin

1 „Gefällt mir“

Hallo Krispin,

da bin ich auch schon einmal vorbei gekommen. Wenn ich allerdings per Post meinen Auftrag anlege, hat dieser ja zunächst weder Zahlungsstatus noch Lieferstatus. Die müssten dann ja irgendwie erst eingepflegt werden. Die Action Route erwartet ja die ID  der Order Delivery. 

Da der Status ja noch nicht existiert, kann ich diesen ja auch nicht ändern. 

Ein initiales Anlegen des Lieferstatus über die Order oder auch separat überd die order_deliveries Route führt bei mir wiederum zu obigem Problem. Hast du vielleicht einen Beispielrequest - oder kannst mir meinen Order Request so zusammenbauen, dass es geht? 

 

Meine funktionierende Order Anlage per POST auf Order sieht so aus:

 {'orderNumber': 'testOrder123', 'billingAddressId': 'd07f814907814942aa8f36049f8afb97', 'currencyId': 'b7d2554b0ce847cd82f3ac9bd1c0dfba', 'salesChannelId': 'e4d589d07f814942aa8f360b9f8bfa97', 'addresses': [{'firstName': 'Max', 'lastName': 'Musterkunde', 'zipcode': '27498', 'salutationId': '57b054f197a948e2800dc0111b7b272b', 'city': 'Helgoland', 'street': 'Große Aal Str. 1337', 'countryId': 'f4b4d28afe5a47a3acb90dabe29831b6', 'id': 'd07f814907814942aa8f36049f8afab7'}], 'orderDateTime': '2020-08-10T09:39:36+00:00', 'stateId': '2cc826373f4d4a859d81b1cd664d7fb3', 'currencyFactor': 1, 'price': {'positionPrice': 2345.95, 'netPrice': 5345.76, 'totalPrice': 5124.95, 'taxStatus': 'gross', 'calculatedTaxes': [{'tax': 79.19, 'taxRate': 19}], 'taxRules': [{'taxRate': 19, 'percentage': 100}]}, 'shippingCosts': {'unitPrice': 0, 'quantity': 1, 'totalPrice': 0, 'calculatedTaxes': [{'tax': 0}], 'taxRules': [{'taxRate': 19, 'percentage': 100.00}]}, 'lineItems': [{'identifier': 'TestIdentifier213', 'quantity': 1, 'label': 'Hauptprodukt mit erweiterten Preisen', 'price': {'unitPrice': 800, 'quantity': 1, 'totalPrice': 800, 'calculatedTaxes': [{'tax': 127.73}], 'taxRules': [{'taxRate': 19}]}}], 'orderCustomer': {'id': '635c4db68fff4dca92399b11711ddfb5', 'salutationId': '57b054f197a948e2800dc0111b7f27bb', 'email': 'max.musterkunde@trallala.com', 'lastName': 'Musterkunde', 'firstName': 'Max'}, 'stateMachineState': {'technicalName': 'open', 'stateMachineId': 'c70eb789357f40f2af4bf2831bceffbe', 'translated': {'name': 'Offen', 'customFields': []}, 'id': '6a0f64aa34194356ad9fa262c0bae7bd'}} 

tausend Dank!

Christian

Hallo Zusammen,

hat hier vllt. noch jemand eine Idee, wie ich den Zahlungs- und Lieferstatus initial in meine Order bekomme? Ich bin nach zahllosen erfolglosen Tests bereits leicht verzweifelt.

Beste Grüße,

Christian

Hallo Zusammen,

ich pinge einfach nochmal in den Raum.

Gibt es hier denn mittlerweile eine Lösung/Workaround?

beste Grüße,

Christian