2014-12-15 23 views
7

Ich plane eine native mobile Android App für WooCommerce Shops zu entwickeln.WooCommerce API für mobile App

hatte ich einen Blick auf ihre REST-API-Dokumentation hier: http://docs.woocommercev2.apiary.io/ ich es bereits damit begonnen, zu testen, aber wenn ich verschiedene Anrufe tun

GET /orders lassen Sie uns sagen, dass es alle Aufträge des Ladens zurück.

Hat jemand eine Idee, wie ich eine Endanwender-Anwendung mit ihrer API entwickeln kann.

zum Beispiel:

GET /products 

PUT /order (erstellen, einen Auftrag für die angemeldeten Benutzer)

GET /order (Aufträge von dem angemeldeten Benutzer erhalten)

Jede Idee ist willkommen :)

Vielen Dank im Voraus.

+0

U keine Lösungen erhalten? –

+1

@DilipRajkumar die einzige Lösung ist es, alles selbst zu schreiben, indem Sie Woocommerce-Haken verwenden, wenn Sie können, habe ich keine andere Lösung gefunden:/ –

+0

Hay Ich fand die Antwort mit oAuth .. Ich werde aktualisieren, sobald ich nach Hause gehe .. nicht die ganze Funktionalität .. aber wir können die meisten von uns dann brauchen wir. –

Antwort

0

Gemäß der Dokumentation ist das erwartete Datenformat nur JSON (im Gegensatz zum vorherigen XML oder Json), aber es gibt leider keine weitere Erklärung, welche Datenstruktur für jeden Endpunkt erwartet wird.

Hier ist das einzige Beispiel für ein POST-Request-Format von der aktuellen Dokumentation zur Erstellung einen Coupon:

REST Anfrage URI

POST http://private-anon-0fe404a22-woocommercev2.apiary-mock.com/coupons?fields=id,code&filter=filter[limit]=100&page=2 

Java-Code (aus der Dokumentation geklebt)

Client client = ClientBuilder.newClient(); 
Entity payload = Entity.json("{ 'coupon': { 'code': 'autumn-is-coming', 'type': 'fixed_cart', 'amount': '4.00', 'individual_use': true, 'description': '' }}"); 
Response response = client.target("http://private-anon-0fe404a22-woocommercev2.apiary-mock.com") 
    .path("/coupons{?fields,filter,page}") 
    .request(MediaType.APPLICATION_JSON_TYPE) 
    .post(payload); 

System.out.println("status: " + response.getStatus()); 
System.out.println("headers: " + response.getHeaders()); 
System.out.println("body:" + response.readEntity(String.class)); 

Json Antwort

{ 
    "coupon": { 
    "id": 21548, 
    "code": "augustheat", 
    "type": "fixed_cart", 
    "created_at": "2014-08-30T19:25:48Z", 
    "updated_at": "2014-08-30T19:25:48Z", 
    "amount": "5.00", 
    "individual_use": false, 
    "product_ids": [], 
    "exclude_product_ids": [], 
    "usage_limit": null, 
    "usage_limit_per_user": null, 
    "limit_usage_to_x_items": 0, 
    "usage_count": 0, 
    "expiry_date": "2014-08-30T21:22:13Z", 
    "apply_before_tax": true, 
    "enable_free_shipping": false, 
    "product_category_ids": [], 
    "exclude_product_category_ids": [], 
    "exclude_sale_items": false, 
    "minimum_amount": "0.00", 
    "maximum_amount": "0.00", 
    "customer_emails": [], 
    "description": "Beat the August heat with $5 off your purchase!" 
    } 
} 

Wenn man annimmt, dass die API POST-Anfragen für alle relevanten Endpunkte akzeptiert, sollte dies mit einem Einkaufsauftrag möglich sein.

+0

Es sieht auch so aus wie die Dokumentation ist im Aufbau, so könnte es andere Beispiele in der nahen Zukunft. Ich denke auch über die REST-API aus und werde meine Antwort aktualisieren, wenn ich Fortschritte mache. Dies ist mehr als Kommentar geeignet, aber ich kann noch nicht kommentieren. – TNTanuki

+0

TNTanuki Danke für die Antwort, aber ich habe darauf hingewiesen, dass es sich um eine API für den Endbenutzer handelt, da Sie auf diese Weise Zugriff auf alle Ressourcen des Systems haben. Ich dachte an eine API, die ein einzelner Benutzer bei der Verwendung seiner Einkaufskarte und seiner Details anmelden und kaufen kann. –

+0

Meinst du, dass die Anmeldeinformationsschlüssel nicht auf der Clientseite verfügbar sein sollen? Wenn es Ihr Anliegen ist, eingeloggt zu sein, müssen Sie nicht eingeloggt sein, wenn Sie die API verwenden - ich habe es gerade versucht -. Ich bin mir nicht sicher, was Ihre ursprüngliche Frage jetzt ist. Vielleicht kannst du es jetzt anders formulieren, nachdem du ein paar Tage damit verbracht hast, daran zu arbeiten? Ich lerne selbst diese API und mache einige Fortschritte. – TNTanuki

0

Ich würde vorschlagen, diese

Das erste, was die Schritte Sie Api für WooCommerce aus dem Backend aktivieren kann - http://docs.woothemes.com/document/woocommerce-rest-api/

https://www.npmjs.com/package/woocommerce Verwendung dieser Verbindung, die die Interaktion mit WooCommerce alle Methoden hat. Andernfalls mit Hilfe von Lightweight Middleware, hilft es, Woocommerce-Server & JSON-Daten an Ihre App zurück zu verbinden.

Schreiben Sie einen Service mit ionischen Rahmen und sprechen Sie mit Ihrem Thin Middleware-Client. Vergessen Sie nicht, die Daten zwischenzuspeichern (mit lokalem Speicher), damit Sie nicht ständig auf den Server treffen. - Contus M Comm

1

Für http (und nicht ssl-Protokoll wie https) Anfrage, müssen Sie verwenden, um von OAthu 1.0a beglaubigen Rahmen. Es gibt viele Bibliotheken für oauth 1.0a in java, ich bin Gebrauch von scribeJava

Also, gehen Sie wie folgt vor:

  1. In app/build.gradle in Abhängigkeit scop hinzufügen:

    compile 'org.scribe:scribe:1.3.5'

  2. Neue Klasse als Woocom merceApi für Anbieter von OAuth Service. wichtig. Sie müssen eine
    public Klasse in DefaultApi10a verwenden für die Umsetzung oauth Anbieter

    public static class WooCommerceApi extends org.scribe.builder.api.DefaultApi10a { 
    
        @Override 
        public org.scribe.model.Verb getRequestTokenVerb() 
        { 
         return org.scribe.model.Verb.POST; 
        } 
    
        @Override 
        public String getRequestTokenEndpoint() { 
         return "http://www.your-domain.com/wc-auth/authorize"; 
        } 
    
        @Override 
        public String getAccessTokenEndpoint() { 
         return "none"; 
        } 
    
        @Override 
        public String getAuthorizationUrl(org.scribe.model.Token requestToken) { 
         return "none"; 
        } 
    } 
    
  3. Und Sie müssen Antrag stellen in Thread oder AsyncTask

    String restURL = "http://www.your-domain.com/wp-json/wc/v1/products/"; 
    OAuthService service = new ServiceBuilder() 
        .provider(WooCommerceApi.class) 
        .apiKey(CONSUMER_KEY) //Your Consumer key 
        .apiSecret(CONSUMER_SECRET) //Your Consumer secret 
        .scope("API.Public") //fixed 
        .signatureType(SignatureType.QueryString) 
        .build(); 
    OAuthRequest request = new OAuthRequest(Verb.GET, restURL); 
    Token accessToken = new Token("", ""); //not required for context.io 
    service.signRequest(accessToken, request); 
    Response response = request.send(); 
    Log.d("OAuthTask",response.getBody()); 
    
+0

Ihre obige Antwort war perfekt und auf den Punkt. Noch eine Sache, die ich fragen muss: Sie haben die obige Lösung nur für die GET-Methode geschrieben. Was sollten wir tun, wenn wir einen Parameter POST hinzufügen und hinzufügen wollen? Jede Hilfe wäre willkommen. –

Verwandte Themen