Forum: PC-Programmierung Frage Bezüglich Woocommerce Restful API


von Fred R. (Firma: www.ramser-elektro.at/shop) (fred_ram)


Lesenswert?

Hallo Leute,

Habe eine Frage bezüglich der Restfull API von Woocommerce.
Die Doku ist hier zu finden:
https://woocommerce.github.io/woocommerce-rest-api-docs/wp-api-v1.html#list-all-orders

Verbindung steht.
Nun will ich aber z.Bsp. nur alle Items mit dem Status "pending" zurück 
haben.

Wie lautet dann die Abfrage?

https://example.com/wp-json/wc/v1/orders?"status":"pending";
liefert mir alle zurück :-(

von Imonbln (Gast)


Lesenswert?

Fred R. schrieb:
> Habe eine Frage bezüglich der Restfull API von Woocommerce.
> Die Doku ist hier zu finden:
> 
https://woocommerce.github.io/woocommerce-rest-api-docs/wp-api-v1.html#list-all-orders
>

Die API 1 wird dort als Veraltet angegeben. Ich würde dir daher abraten
nach der neues zu schreiben.

> Wie lautet dann die Abfrage?
>
> https://example.com/wp-json/wc/v1/orders?"status":"pending";

die Anführungszeichen irritieren mich der Doppelpunkt auch ich würde ein 
gleich erwarten. Probiere es mal mit:

https://example.com/wp-json/wc/v2/orders?status=pending

das würde mehr dem entsprechen was ich von einer REST API erwarte.

von Fred R. (Firma: www.ramser-elektro.at/shop) (fred_ram)


Lesenswert?

Imonbln schrieb:
> https://example.com/wp-json/wc/v2/orders?status=pending

Hat funktioniert :-) Danke :-)

Imonbln schrieb:
> Die API 1 wird dort als Veraltet angegeben. Ich würde dir daher abraten
> nach der neues zu schreiben.

Ich kann von Woocommerce V3 derzeit noch abraten.
Schwerste Fehler drinnen. Jede Woche ein Update.
Daher teilweise wochenweise nicht brauchbar und Existenzgefährdend.

von Fred R. (Firma: www.ramser-elektro.at/shop) (fred_ram)


Lesenswert?

Und wie can ich mit einem PUT den Status einer Bestellung ändern?

So?
https://example.com/wp-json/wc/v1/orders/1234/Status=Complete

von Imonbln (Gast)


Lesenswert?

Fred R. schrieb:
> https://example.com/wp-json/wc/v1/orders/1234/Stat...

das ist ein GET Request du musst ein PUT Request mit JSON im Body senden
wie das geht hängt von der Libary ab die du nutzt. mit curl geht das so
1
curl -X PUT https://example.com/wp-json/wc/v1/orders/1234 \
2
    -u consumer_key:consumer_secret \
3
    -H "Content-Type: application/json" \
4
    -d '{
5
  "status": "completed"
6
}'

der Request den Curl Daraus Bastellt ist der:
1
PUT /wp-json/wc/v1/orders/1234 HTTP/1.1
2
Host: example.com
3
Authorization: Basic Y29uc3VtZXJfa2V5OmNvbnN1bWVyX3NlY3JldA==
4
User-Agent: curl/7.54.0
5
Accept: */*
6
Content-Type: application/json
7
Content-Length: 27
8
9
{
10
  "status": "completed"
11
}

Achte auf das PUT in der ersten Zeile. Bei dir kommt da ein GET.

HTH Imonbln

btw. neue Frage in einen alten Thread ist unschön.

von Fred R. (Firma: www.ramser-elektro.at/shop) (fred_ram)


Lesenswert?

Jetzt hätte ich noch eine Frage:

Wie kann ich z.Bsp. Komplette Bestellungen ab einem gewissen Datum 
anzeigen?
Oder ab einer gewissen ID?

orders?filter[after]=2017-05-21T10:10:10Z&filter[status]=completed
Liefert leider die falschen Ergebnisse zurück (nämlich alle)

Was ich auch nicht hinbekomme:
Mehrere Statuscodes abfragen.
z:Bsp Status ist complete ODER cancelled
orders?filter[status]=on-hold&filter[status]=cancelled
Geht auch wieder nicht.Liefert wieder alle zurück.

orders?status=completed&status=on-hold
Liefert nur die on-hold zurück :-(

: Bearbeitet durch User
von imonbln (Gast)


Lesenswert?

Fred R. schrieb:
> orders?filter[after]=2017-05-21T10:10:10Z&filter[status]=completed

Ohne Jetzt ein Target zu haben mit welchen ich testen kann, kann ich nur 
raten. Erster Verdächtiger wäre der Doppelpunkt im URL String. 
Üblicherweise würde man den als %3A Codiert in den Get Request packen. 
Keine Ahnung wie Tolerant das Framework sonst ist.

Ausserdem warum eigentlich das "filter[after]="

ich würde immer noch erwarten:

orders?after=2017-05-21T10%3A10%3A10Z&status=completed

Fred R. schrieb:
> Imonbln schrieb:
>> https://example.com/wp-json/wc/v2/orders?status=pending
>
> Hat funktioniert :-) Danke :-)

Hier hast du ja bestätigt das es ohne das Filer['XXX'] geht. Probiere es 
als mal ohne.

Fred R. schrieb:
> orders?status=completed&status=on-hold
> Liefert nur die on-hold zurück :-(

das gibt ggf. das Framework nicht her. Je nach dem wie das Codiert ist 
wird der zweite filter den ersten überschreiben. Hier wirst du wohl oder 
übel zwei requests machen müssen und das Ergebnis selbst zusammen 
mergen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.