Giter VIP home page Giter VIP logo

woodroid's Introduction

Woocommerce Android SDK

This is an woocommerce api client for android

Built-based on the documentation: http://woocommerce.github.io/woocommerce-rest-api-docs/#introduction

Installation

Please note that files are still being moved around - the project should be stable before end Feb 2019

Maven dependency:

Step 1. Add the JitPack repository to your build file

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>

Step 2. Add the dependency

<dependency>
	<groupId>com.github.gilokimu</groupId>
	<artifactId>woodroid</artifactId>
	<version>0.2.0</version>
</dependency>

Gradle dependency:

Step 1. Add the JitPack repository to your build file

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Step 2. Add the dependency

dependencies {
	implementation 'com.github.gilokimu:woodroid:0.2.0'
}

Getting started

Generate API credentials (Consumer Key & Consumer Secret) following this instructions http://docs.woocommerce.com/document/woocommerce-rest-api/ .

Check out the WooCommerce API endpoints and data that can be manipulated in https://woocommerce.github.io/woocommerce-rest-api-docs/.

Demo

I have left consumer key and secret within the app, for you to test the app without an installation of wordpress. To use my installation of wordpress, here are the credentials:

username: demo password: demo2019 https://gilo.me/store/wp-admin

PS/ Do no harm

Setup

Setup for the new WP REST API integration (WooCommerce 2.6 or later):

val woocommerce = Woocommerce.Builder()
	.setSiteUrl("http://example.com")
	.setApiVersion(Woocommerce.API_V2)
	.setConsumerKey("ck_XXXXX")
	.setConsumerSecret("cs_XXXX")
	.build()

Usage

Getting products example

woocommerce.ProductRepository().products().enqueue(object : Callback<List<Product>> {
        override fun onResponse(call: Call<List<Product>>, response: Response<List<Product>>) {
            val productsResponse = response.body()
            for (product in productsResponse!!) {
                products.add(product)
            }

            adapter.notifyDataSetChanged()
        }

        override fun onFailure(call: Call<List<Product>>, t: Throwable) {

        }
    })

Supported resources

The sdk currently supports :

  1. Order Notes
  2. Refunds
  3. Attributes
  4. Attribute Terms
  5. Product Category
  6. Shipping Class
  7. Product Tags
  8. Variations
  9. Coupons
  10. Customers
  11. Orders
  12. Products
  13. Reports

Coming soon

  1. Settings
  2. Payment gateway

API Methods

The general resource method calls are

  1. Create - Pass the object to create
  2. List - a list of all items
  3. View single method - retries a single item
  4. Delete - deletes the resource
  5. Filter - provides a list that meets a criteria

Create Method

Create an instance of the resource then pass onto a .create() function on the resource repository

val coupon = Coupon()
coupon.code = code
coupon.description = description
        
woocommerce.CouponRepository().create(coupon).enqueue(object : Callback<Coupon> {
    override fun onResponse(call: Call<Coupon>, response: Response<Coupon>) {
        val couponResponse = response.body()
        finish()
    }

    override fun onFailure(call: Call<Coupon>, t: Throwable) {
        
    }
})

List Method

 woocommerce.CouponRepository().coupons().enqueue(object : Callback<List<Coupon>> {
    override fun onResponse(call: Call<List<Coupon>>, response: Response<List<Coupon>>) {
        val couponResponse = response.body()
        for (coupon in couponResponse!!) {
            coupons.add(coupon)
        }

        adapter.notifyDataSetChanged()
    }

    override fun onFailure(call: Call<List<Coupon>>, t: Throwable) {

    }
})

View single item

val couponId = intent.getIntExtra("couponId", 0)

woocommerce.CouponRepository().coupon(couponId).enqueue(object : Callback<Coupon> {
    override fun onResponse(call: Call<Coupon>, response: Response<Coupon>) {
        val coupon = response.body()!!

        etCode.setText(coupon.code.toUpperCase())
        etDescription.setText(coupon.description)

    }

    override fun onFailure(call: Call<Coupon>, t: Throwable) {
        
    }
})

Delete item

woocommerce.CouponRepository().delete(couponId).enqueue(object : Callback<Coupon> {
    override fun onResponse(call: Call<Coupon>, response: Response<Coupon>) {
        if (response.isSuccessful) {
            val coupon = response.body()!!
            finish()
        }else{
            Toast.makeText(this@CouponActivity, "" + response.code() + " : " + response.message(), Toast.LENGTH_SHORT).show()
        }

    }

    override fun onFailure(call: Call<Coupon>, t: Throwable) {
        stopShowingLoading()
    }
})

Filter item

val filter = CouponFilter()
filter.search = "FEB"

woocommerce.CouponRepository().coupons(filter).enqueue(object : Callback<List<Coupon>> {
    override fun onResponse(call: Call<List<Coupon>>, response: Response<List<Coupon>>) {
        val couponResponse = response.body()
        for (coupon in couponResponse!!) {
            coupons.add(coupon)
        }

        adapter.notifyDataSetChanged()
    }

    override fun onFailure(call: Call<List<Coupon>>, t: Throwable) {

    }
})

Sample app

The sample app implements an MVVM approach which would look slightly different from the above. The methods are the same though

Contribution

Contributions are highly welcomed, just create a PR

Slack

You can also reach out through slack in case of any issues with installation or feature request

woodroid's People

Contributors

gilokimu avatar bitsnaps avatar aroniez avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.