2017-12-20 12 views
0

Wie bekommt man eine Liste von Bestellungen von der shopify Graphql api? Ich kann nicht einmal herausfinden, wie man eine einzelne Bestellung bekommt. Der nächste ich sagen kann, ist, dass meine Frage wie folgt aussehen sollte:Shopify Graphql Liste der Bestellungen erhalten

query{ 
    node(id:$id){ 
    __typename 
    ... on Order{ 
     id 
     email 
    } 
    } 
} 

Wo $id ist „Ein Objekt mit einer ID zu unterstützen globale Identifikation“ nach der Dokumentation, aber es ist nicht klar, was das bedeutet. Für ein Produkt, können Sie die ID wie so abrufen:

shop { 
    productByHandle(handle: "red-bicycle") { 
     id 
    } 
    } 

die dann einen Hash zurückgeben, wie folgt aus:

Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0Lzk4OTUyODE0NzU=

Sie können dann ein Produkt abfragen, um den Knoten Schnittstelle wie folgt aus :

node(id: "Z2lkOi8vc2hvcGlmeS9Qcm9kdWN0Lzk4OTUyODE0NzU=") { 
    id 
    ... on Product { 
     title 
    } 
    } 

Aber wie ist das für eine Bestellung getan? Für eine Liste der letzten 5 Bestellungen? Warum müssen Sie überhaupt die Node-Schnittstelle benutzen? Warum nicht einfach nach Handle oder ID oder etwas suchen, anstatt den Hash zu verwenden?

Antwort

0

Ich habe mein Projekt mit GraphQL shopify apis gemacht, um Bestellungen in Verbindung mit einer E-Mail abzurufen. Verwenden Sie customers/search.json mit der Kunden-E-Mail-Adresse, um die Kunden-ID zu erhalten, und verwenden Sie orders.json, um alle mit dieser Kunden-ID verknüpften Bestellungen zu erhalten.

https://help.shopify.com/api/reference/order

+0

Ich muss die GraphQL API verwenden, um Daten über Produkte zu erhalten, die innerhalb bestimmter Datumsbereiche bestellt wurden. Dies erfordert viel zu viele REST-API-Anfragen, die graphQL lösen soll. Wenn ich den ordinates.json-REST-Endpunkt verwende und eine beliebige Bestell-ID aus dem Ergebnis als '$ id'-Argument auswähle, gibt es immer noch die 'Argument'-ID auf Feld' Knoten 'hat einen ungültigen Wert. Erwarteter Typ' ID! "." – hamncheez

+0

Nur weil GraphQL die Aufrufe von API-Endpunkten über REST-Anforderungen verbessern soll, heißt das nicht, dass Shopify (oder ein Anbieter) eine ausgereifte Implementierung hat, mit der Sie einfach herumspielen können. Shopify hat sich bemüht, einige GraphQL-Zugriffe bereitzustellen, aber es ist noch nicht fertig. Sie müssen selbst herausfinden, welche Teile funktionieren und was nicht, und wundern Sie sich nicht, wenn Sie auf Abfragen stoßen, die nicht wie erwartet funktionieren. Beachten Sie, dass niemand gesagt hat, dass GraphQL produktionsbereit ist, nur dass Sie es auf eigenes Risiko verwenden können, um Ihre Sache voranzutreiben. –

+0

Ich stimme mit David Lazar überein, deshalb habe ich ältere shopify apis zum Abrufen von Bestellungen verwendet. –

0

können Sie diese Abfrage verwenden für Ihre Benutzer Aufträge holen Liste

let query = Storefront.buildQuery { $0 
      .customer(customerAccessToken: token) { $0 
       .orders(first: 20) { $0 
        .edges { $0 
         .node { $0 
          .id() 
          .orderNumber() 
          .totalPrice() 
          .currencyCode() 
          .customerLocale() 
          .customerUrl() 
          .email() 
          .phone() 
          .processedAt() 
          .subtotalPrice() 
          .totalRefunded() 
          .totalShippingPrice() 
          .totalTax() 
          .shippingAddress({ $0 
           .address1() 
           .address2() 
           .city() 
           .company() 
           .country() 
           .countryCode() 
           .firstName() 
           .formatted() 
           .formattedArea() 
           .lastName() 
           .latitude() 
           .longitude() 
           .name() 
           .phone() 
           .province() 
           .provinceCode() 
           .zip() 
          }) 
          .lineItems(first: 50) { $0 
           .edges { $0 
            .cursor() 
            .node { $0 
             .quantity() 
             .title() 
             .variant{ $0 
              .id() 
              .image({ $0 
               .altText() 
               .id() 
               .src() 
              }) 
              .price() 
              .sku() 
             } 
             .customAttributes{ $0 
              .key() 
              .value() 
             } 

            } 
           } 
          } 
         } 
        } 
       } 
      } 
     } 

Diese Abfrage Auftragsliste Rückkehr Benutzer in iOS, Hoffentlich wird es für Sie zu arbeiten.

+0

Danke, aber ich brauche ALLE Bestellungen für einen bestimmten Zeitraum, nicht nur für einen einzelnen Kunden. Ich muss Verkäufe nach Abholung wirklich verfolgen, aber mit der REST-API müssen Sie alle Aufträge in Ihrem Datumsbereich abrufen, dann die Einzelposten in jeder Bestellung durchlaufen und eine separate GET-Anforderung für jedes Einzelpostenelement erstellen seine Sammlungen, die schnell Ihr API-Anfrage-Limit erreicht – hamncheez

Verwandte Themen