2014-12-15 17 views
7

sto pianificando di sviluppare un'app Android mobile nativa per i negozi WooCommerce.API WooCommerce per app mobile

ho dato un'occhiata al loro riposo documentazione API qui: http://docs.woocommercev2.apiary.io/ ho già cominciato a testarlo, ma quando lo faccio diverse chiamate

GET /orders diciamo che restituisce tutti gli ordini del negozio.

Qualcuno ha idea di come si possa sviluppare un'app di enduser utilizzando la propria API.

ad esempio:

GET /products 

PUT /order (creare un ordine per l'utente collegato)

GET /order (ottenere gli ordini di utenti registrati)

Qualsiasi idea è apprezzata :)

Grazie in anticipo.

+0

U got alcuna soluzione? –

+1

@DilipRajkumar l'unica soluzione è scrivere tutto da solo usando woocommerce hooks quando puoi, non ho trovato alcuna altra soluzione:/ –

+0

Hay Ho trovato la risposta usando oAuth .. Aggiornerò appena vado a casa .. non tutte le funzionalità .. tuttavia possiamo ottenere la maggior parte di allora di cui abbiamo bisogno. –

risposta

0

Secondo la documentazione, il formato dei dati previsti è solo JSON (in contrasto con il precedente XML o Json) ma purtroppo non vi sono ulteriori spiegazioni su quale struttura di dati è prevista per ciascun endpoint.

Ecco l'unico esempio di un formato di richiesta POST dalla documentazione corrente per la creazione di un coupon:

richiesta REST URI

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

codice Java (incollato dalla documentazione)

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)); 

Risposta Json

{ 
    "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!" 
    } 
} 

http://docs.woocommercev2.apiary.io/#reference/coupons/coupons-collection/create-a-coupon

Considerando che l'API è richiesta per accettare le richieste POST per tutti gli endpoint pertinenti, ciò dovrebbe essere possibile con un ordine di acquisto.

+0

Sembra anche che la documentazione sia in costruzione, quindi potrebbero esserci altri esempi nel prossimo futuro. Sto anche cercando di capire l'API REST e aggiornerò la mia risposta se avrò qualche progresso. Questo è più adatto come commento ma non posso ancora commentare. – TNTanuki

+0

TNTanuki Grazie per la risposta, ma quello che stavo rilevando era un'API per l'utente finale perché in questo modo si ha accesso a tutte le risorse del sistema. Stavo pensando ad una API che un singolo utente può accedere e acquistare utilizzando la sua shopping card e i suoi dettagli. –

+0

Vuoi dire che non vuoi che le chiavi credenziali siano disponibili sul lato client? Se la preoccupazione riguarda l'accesso, non è necessario effettuare l'accesso quando si utilizza l'API -I appena provato-. Non sono sicuro di quale sia la tua domanda originale ora. Forse puoi riformulare ora che hai passato qualche giorno a lavorarci? Io stesso sto imparando questa API e ho fatto dei progressi. – TNTanuki

0

Direi che questo passi

La prima cosa è possibile abilitare Api per woocommerce dal backend - http://docs.woothemes.com/document/woocommerce-rest-api/

https://www.npmjs.com/package/woocommerce uso questo link, che ha tutti i metodi per interagire con woocommerce. Altrimenti, utilizzando il middleware leggero, aiuta a connettere il server woocommerce & restituendo i dati JSON alla tua app.

Scrivere un servizio utilizzando framework ionico e parlare con il proprio client middleware sottile. Non dimenticare di memorizzare i dati nella cache (usando la memoria locale), in modo da non colpire il server tutto il tempo. - Contus M Comm

1

Per http (e non il protocollo SSL, come https) richiesta, è necessario utilizzare da OAthu 1.0a quadro autenticazione. Ci sono molte librerie per oauth 1.0a in java, io sono uso da scribeJava

Quindi, effettuare le seguenti operazioni:

  1. In app/build.gradle in dipendenza scop aggiungere questo:

    compile 'org.scribe:scribe:1.3.5'

  2. Nuova classe come Woocom merceApi per il provider di Servizio OAuth. importante. È necessario utilizzare una classe
    public in DefaultApi10a per l'attuazione di fornitore di OAuth

    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. E deve fare richiesta in Thread o 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

La tua risposta sopra era perfetta e al punto. Un'altra cosa che devo chiederlo, hai scritto la soluzione di cui sopra solo per Metodo GET. Cosa dovremmo fare se vogliamo POST e aggiungere qualche parametro? Qualsiasi aiuto sarebbe apprezzato. –

Problemi correlati