Bestellun auslösen per API

Ich möchte Bestellungen per API auslösen und verarbeiten.

Um eine Bestellung zu erstellen erfordert der POST request an /api/orders einige Daten welche extern nicht verfügbar sind.

  • paymentId
  • dispatchId
  • paymentStatusId
  • orderStatusId

Woher soll man diese Fremdschlüssel beziehen(oder generieren) wenn man diese nicht über die API beziehen kann?

Fehlt die Dokumentation für Rresourcen wie payment / dispatch oder orderStatus in der API Doku? Gibt es eine möglichkeit diese zu beziehen?

Alle anderen Felder die benötigt werden kann man entweder selbst über das Frontend generieren (z.B. Order/Shipping) oder über die API Abrufen (z.B. customerId).

 

Hallo,

 

also das meiste deiner angesprochenen IDs sollten recht leicht zu finden sein:

  • paymentId: Mit welcher Währung willst du zahlen?

  • paymentStatusId: Welchen Bezahlstatus hat deine Bestellung?

  • orderStatusId: Welchen Sfatus hat die Bestellung selbst? In deinem Fall dürfte das entweder “offen” oder “vollständig bezahlt” sein.

 

Kann man sich aber auch alles über die Controller im Modul API heraus suchen. Zur Zeit ist leider die API Doku down wegen Überarbeitung.

 

 

MFG

 

derwunner

Da für die genannten Punkte keine API Endpoints (noch?) existieren, könnte man ja die IDs initial aus dem Shop exportieren (aus der Datenbank). Ja, man muss die Liste aktualisieren, wenn sich was ändert (neuer Bestellstatus, neue Zahlungsart usw).

Alternativ könnte man ein kleines Plugin schreiben, welches über API diese Informationen zurück gibt.

paymentId gibt anscheinend nicht die Währung an sondern die Bezahlart, also Vorkasse, Paypal usw… denn das feld currency regelt die Währung.

die orderStatus ID ist bei allen neu anzulegenden Bestellungen erstmal 0 (bei mir bildet die id den status offen ab, ich denke das ist überall so), denn beim anlegen ist das ja der initiale wert. 

die paymentStatusId ist entweder offen (bei Vorkasse) oder vollständig Bezahlt (bei abwicklung über Paypal) -  also das lässt sich auch durch logik festlegen.

Habe folgende Zusammenhänge herausgefunden: (key - beschreibung - tabelle wo man daten her bekommt)

  • paymentId - ID der Zahlungsart - s_core_paymentmeans
  • dispatchId - ID der Versandart - s_premium_dispatch
  • paymentStatusId - ID des Zahlungsstatus - s_core_states
  • orderStatusId - ID des Status des gesammten Bestellvorgangs -  s_core_states

Da man die Bestellung ja beim anlegen erstmal nur initieren muss reichen dort einige Grundwerte aus die sich nicht ändern. Also man kann Sie in der Tat einfach aus der Datenbank rausnehmen und einfach pauschal verwenden - in der hoffnung dass die ID’s nicht geändert werden -  es wäre natürlich schöner wenn man die Status IDs und verfügbaren Zahlungs- und Versandarten auch auslesen könnte über die API. 

Dann könnte man auch die Verfügbarkeit einer Zahlungsart über die API herausfinden. 

 

Die API Doku ist doch online (hier), ist die nicht aktuell oder gab es mal eine andere? 

Ja in der API gibt es anscheinend nur die Basis-Dinger. Ist leider recht beschränkt auf wesentliche Shop Funktionen. Wenn man mehr will, ist man hier falsch…

Ich habe nur den URL gefunden und hatte mich gewundert, wohin denn die von dir gepostete API Doku hin ist: https://developers.shopware.com/labs/api/

Schreibe dir doch deine eigenen APi Endpoints, die alle IDs aus der Datenbank auslesen und es dementsprechend zurück geben. Dürfte nicht allzu schwierig sein, zumal das ja immer nur eine Tabelle ist, die ausgelesen werden muss.

Wie gesagt ich möchte keine Endpoints schreiben da mein System out of the box mit jeder Shopware Installation laufen soll. Habe aber herausgefunden dass die ID’s bei jeder Shopware Installation gleich sind und sich nicht ändern. Also es reicht mir wenn ich Sie fest setze. 

Wo ist man denn richtig wenn man mehr will über eine gute JSON API?