This tutorial will cover how to implement a Wallet using PayUmoney with Firebase as your backend. We will also deep dive on how to add customization to the Payment Activity.

Create a PayUmoney account. Get your Merchant Key, Merchant Salt (secret) and your Merchant ID.

Merchant Salt should be kept confidential and should always reside on your server. Never put the Merchant Salt in your app.

Here is a sample of how these look:

Merchant ID: 6392590
Merchant Key: oVWDEmPK
Merchant Salt:

Add this to your app level gradle file:

implementation 'com.payumoney.sdkui:plug-n-play:1.6.0'

Update to the latest version.

CameraX is a Jetpack support library, built to help you make camera app development easier. While it leverages the capabilities of camera2, it uses a simpler, use case-based approach that is lifecycle-aware.


CameraX introduces use cases, which allow you to focus on the task you need to get done instead of spending time managing device-specific nuances. There are several use cases:

Preview: get an image on display.

Image Analysis: access a buffer seamlessly for use in your algorithms, such as to pass into MLKit.

Image capture: save high-quality images.

It support the basic features like aspect ratio, orientation, rotation, preview…

Primary Mentor: Fawwaz Yusran (Maharaj Fawwaz A. Yusran)

Secondary Mentor: Chathuranga Muthukuda

Student: Deepak Prasad

Project Link: OpenMRS Android Client v2.8+


This project solely targets the development of the OpenMRS Android Client. It aims to add new features, fix bugs and improve the UI and performance of the app.

One of the biggest feature that was added was the Provider module. The Provider relationships still needs to be worked upon. Material design was followed as much as it could be, Settings page has be enhanced, Privacy Policy has been added.

The app now has a Dark Mode to save us…

This week was great. Got to learn about deployment of OpenMRS for both production as well as testing.

For developing, we have to follow some steps to set up the environment for OpenMRS. Lets go through it step by step:

  1. Install and run Tomcat. Tomcat helps in deployment of .war packages.
  2. Install MySQL. This will help us connect to the Database of OpenMRS.
  3. Download OpenMRS.war and Add-on Modules. Better follow this page to get the latest version.
  4. Start mysqld from Task Manager > Services > Start mysqld.
  5. Copy openmrs.war package in tomcat (C:\Program Files\Apache Software Foundation\Tomcat8.5\webapps).
  6. Restart Tomcat. Openmrs.war package…

Nothing much happened this week.

Plan for implementation of Password Reset

This week was mainly attributed to gathering information for Password Reset. The actual problem was getting the API and reading about how to implement it because the API endpoint wasn’t available on the official site.

The Password Reset requires an email tied to the User’s account. The reset link will be shared to that email id. But the blocker is that the WebApp still does not has a field to enter the email of the user.

To get over this obstacle, we need to configure the WebApp locally and through MySQL, we need to create…

Milestones completed this week

Provider dashboard was added where we can see the details of the Provider. Currently his name and designation is shown.

In future, the Provider Dashboard will have the Patient-Provider relationships and Provider-Provider relationships.

Time has flew so fast and more than half of GSoC’s coding period is over.

This was one of the features that to took so much effort. I though it would be easy to add “just another theme” to the app but I was wrong.

It took me more than 5–6 days of continuous work to get it working. Although it is currently experimental, we can be sure that the next additions to the app will be compatible with multiple themes.

Some of the common pitfalls to look for while adding a dark theme to your app are:

  • Assuming that…

Not much happened this week.

While adding a new Provider, we need to check if any matching Providers are present or not.

The biggest feature request by the community — Provider Module, was implemented fully this week.

Milestones Completed

Using the REST API, now we can add Providers. The REST call is

Call<Provider> addProvider(@Body Provider provider);

Inputs required for creating a Provider — First name, last name and provider identifier. Provider identifier can be anything like nurse, clerk, doctor etc.

REST call —

Call<Provider> editProvider(@Path("uuid") String uuid,
@Body Provider provider);

REST call —

Call<ResponseBody> deleteProvider(@Path("uuid") String uuid);

Setting up your own OpenMRS server for testing on Mobile Phone

Due to parallel developments going on during GSoC, sometimes the Demo server for OpenMRS will be down and that will hamper the development pace.

This week was full of learning and enriching experiences. The biggest blocker since the 3rd week was removed and eventually a the Provider’s Module (FETCH) was merged.

Milestones completed

Last week we saw how the LiveData’s onChange() method’s testing so much trouble. Let’s see how I got to solve it.

I figured out that onChange() is triggered on an asynchronous thread but testing runs on a single main thread. Therefore the following error always popped up.

at androidx.arch.core.executor.DefaultTaskExecutor.isMainThread(
at androidx.arch.core.executor.ArchTaskExecutor.isMainThread(
at androidx.lifecycle.LiveData.assertMainThread(

Found out that using the following rule will help in running the test on a single thread.


Deepak Prasad

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store