Getting started with Android

1

Install the Android SDK

These lines should be added to your application’s gradle file:

— THEN —

Once complete, add the .aar file into your libs folder from Moltin

— THEN —

Finally, you can instantiate the Android SDK inside your main activity file

repositories {
        flatDir {
          dirs 'libs'
        }
      }
      
      dependencies {
        compile(name:'android-sdk-[debug|release]', ext:'aar')
      }

 

[moltin lib root folder]/build/outputs/aar/

 

Moltin moltin = new Moltin(this);

2

Authenticate

Initialize the Moltin SDK.

You will need a public ID to authenticate with our API. You can find your store keys in your store dashboard.

Observable response = moltin.requestAuthentication();
      response.subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .doOnError(throwable -> handleError(throwable))
        .doOnNext(accessTokenResponse -> moltin.setAccessToken(accessTokenResponse))
        .subscribe();

A simple checkout flow

1

Get products

Now that we’ve authenticated with the Moltin API lets get one of our sample products. Please note you will need to create a product first via the API or store management dashboard.

This API call should contain an array of products. A good place to display this data is on a product or listing page.

Observable response = moltin.products.all();
      response.subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .doOnError(throwable -> handleError(throwable))
        .doOnNext(productsResponse -> printProducts(productsResponse))
        .subscribe();

2

Add to cart

Using a product ID we can insert a quantity of this product into the cart with one simple request. The first parameter passed is the product ID, the second the quantity to be added to the cart. A third parameter can be added for modifiers and variations (e.g. size and color) if these are set up.

This response should contain an array of the individual cart item data e.g. title, quantity, price. A good example of integrating this would be to add a simple button or form to the product page that posts the product ID and quantity to this endpoint.

Observable response = moltin.cart.addProduct(product_id, 1, cart_id);
      response.subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .doOnError(throwable -> handleError(throwable))
        .doOnNext(cartResponse -> confirmCartItems(cartResponse))
        .subscribe();

3

Get cart contents

Now that there is at least one product in the cart let’s get the full cart contents.

This response should contain an array of all cart items and cart totals. A good place to show this data would be on the cart or orders page, or even a widget in the header of your website.

Observable response = moltin.cart.items(cart_id);
      response.subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .doOnError(throwable -> handleError(throwable))
        .doOnNext(cartResponse -> printCartItems(cartResponse))
        .subscribe();

4

Convert to order

When the customer is ready to checkout we need to convert the cart to an order. This call lets you define the payment gateway and conditional order parameters such as customer, billing and shipping addresses.

This call will return an object containing data for the newly created order.

Customer customer = new Customer("Jon Doe", "jon.doe@moltin.com");
      
      BillingAddress billingAddress = new BillingAddress(
        "Jon",
        "Doe",
        "Moltin",
        "123 Sunny Street",
        "Sunnycreek",
        "CA94040",
        "California",
        "US"
      );
      ShippingAddress shippingAddress = new ShippingAddress(
        "Jon",
        "Doe",
        "Moltin",
        "123 Sunny Street",
        "Sunnycreek",
        "CA94040",
        "California",
        "US",
        "Leave with neighbour"
      );
      Observable response = moltin.cart.checkout(cart_id, customer, billingAddress, shippingAddress);
      response.subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .doOnError(throwable -> handleError(throwable))
        .doOnNext(orderResponse -> displayOrder(orderResponse))
        .subscribe();
      

5

Process payment

Once we’ve converted a cart into an order we’re now ready to process a payment. In this example, we’ve used the dummy gateway so we just need to provide some card details. The data you need to provide in this step depends on your chosen gateway.

Congratulations, if you made it this far you’ve implemented a simple step by step checkout!

StripePaymentMethod paymentMethod = PaymentMethodBuilder.stripeCard(
        "Jon",
        "Doe",
        "4242424242424242",
        "02",
        "2020",
        "123"
      );
      Observable response = moltin.checkout.pay(order.getId(), paymentMethod);
      response.subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .doOnError(throwable -> handleError(throwable))
        .doOnNext(stripePaymentResponse -> Toast.makeText(this, "Order Complete", Toast.LENGTH_SHORT).show())
        .subscribe();
       

Ready to get started?

It always starts with a conversation.