Code Monkey home page Code Monkey logo

register's Introduction

Build Status

Register Logo

Register is an Android library for easier testing of Google Play's In-app Billing.

Blog Post

The Problems:

  • In-app Billing implementations on Android are hard to get right
  • When payments are involved, developers sleep better having a way to test their functionality prior to release
  • Before an app is promoted to Alpha in the Play Store, we do not have an offical way to test payments

The New York Times Android Team developed a fake implementation of Google Play Store's In-app Billing called Register, which can be used as a companion app for testing In-app Billing purchases and subscriptions.

Similar to a mock web server, you can point your app to use Register rather than the real Play Store In-app Billing implementation. Using Register, you'll be able to validate in-advance whether your purchasing flows work correctly.

Register has been used to test purchasing flows of our Flagship Reader App and NYT Crosswords App for three years and counting.

Register Sample

Overview

Register is a library and companion app that allows seamless mocking of responses from Google Play's In-app Billing. Register works by implementing the same interface as Google's In-app Billing library InApp Billing Service.

From a client's perspective, there is no difference in how you work with Google's In-app Billing or Register's implementation.

If you've used Amazon's IAP Tester Utility, you'll find Register's workflow to be very familiar.

Using Register

Step 0: Register needs a configuration file that declares the mock purchases, subscriptions and users that you will be testing against.

Here's a sample that we use at NYTimes. The format needs to be the same as below when creating your own fake purchases. This JSON file (register.json) will be pushed to your device's SDCard on installation of the companion app.

{
	"skus": {
	    "register.sample.iap": {
			"type": "inapp",
			"price" : "1.00",
			"title" : "Sample In App Purchase Item",
			"description" : "This is an in app purchase item for use with Register sample app",
			"package" : "com.nytimes.android.external.register"
	    },
		"register.sample.sub": {
			"type": "subs",
			"price" : "10.00",
			"title" : "Sample Subscription Item1",
			"description" : "This is a subscription item for use with Register sample app",
			"package" : "com.nytimes.android.external.register"
		}
	},
	"users": [
		"[email protected]",
		"[email protected]"
	]
}

For Register to find the aforementioned configuration file (in case you change name or location), you need to change the data contained in the configuration\configuration.properties file:

ide.json.path=subfolder/from/root
file.json.name=newFileName.json

Step 1: Install RegisterCompanion onto the device where you want to mock In-app Billing. You can find the latest version in the Releases Tab.

Step 2: Add Register as a dependency to your client app:

compile 'com.nytimes.android:register:0.0.3'

or, on Android Gradle Plugin 3.0 or later:

implementation 'com.nytimes.android:register:0.0.3'

Step 3: Create a test Google Services provider (or a real provider):

 private void initGoogleServiceProvider() {
        if (prefsManager.isUsingTestGoogleServiceProvider()) {
            googleServiceProvider = new GoogleServiceProviderTesting();
        } else {
            googleServiceProvider = new GoogleServiceProviderImpl();
        }
    }

Step 4: Make a purchase, similar to how you would with the regular In-app Billing API.

Register Sample

Step 5: Go to your companion app to view the purchase.

Register Sample

Fully Configurable (Configuration App)

Register's companion app allows you to view both successful and unsuccessful purchases directly on your Android device. Additionally, you can control responses back to your client app for values such as getSkuDetails.

See the image below for all configurable options on a response.

Register Sample

Sample App

SampleApp is a client app that showcases working with Register. See SampleActivity for a demo of the purchasing flow.

Gradle

For Android Gradle Plugin 3.0

implementation 'com.nytimes.android:register:0.0.3'

For projects using older versions of the plugin

compile 'com.nytimes.android:register:0.0.3'

register's People

Contributors

goldstei avatar digitalbuddha avatar wdziemia avatar tiwiz avatar ramonaharrison avatar alexio avatar benoberkfell avatar pedrocarrillo avatar ultrah avatar rharter avatar dextorer avatar

Watchers

Pedro Marques da Silva 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.