India is starting to pay for apps, not just download them
Back to Tutorials
techTutorialbeginner

India is starting to pay for apps, not just download them

July 31, 202640 views4 min read

Learn to build a basic app monetization system that tracks user purchases using Python and Firebase, similar to India's growing paid app market.

Introduction

In India's rapidly growing digital economy, app monetization is shifting from free downloads to paid applications. This tutorial will teach you how to create a simple app monetization system using Python and Firebase, which mirrors the real-world payment processing systems that Indian developers are implementing. You'll learn to build a basic payment processing framework that handles user purchases and tracks transactions.

Prerequisites

  • Basic understanding of Python programming
  • Python 3.6 or higher installed on your computer
  • Firebase account (free tier available)
  • Basic knowledge of JSON data structures
  • Internet connection for API access

Step-by-step instructions

Step 1: Set up your development environment

Install required Python packages

First, you'll need to install the Firebase Admin SDK and other required packages. Open your terminal or command prompt and run:

pip install firebase-admin requests

This installs the Firebase Admin SDK, which allows Python applications to interact with Firebase services, and requests for making HTTP calls.

Step 2: Create Firebase project and get credentials

Set up Firebase project

Visit Firebase Console and create a new project. Once created, navigate to Project Settings → Service Accounts → Generate New Private Key. Download the JSON file and save it as firebase_credentials.json in your project directory.

Why: This JSON file contains your Firebase project's authentication credentials, allowing your Python application to securely communicate with Firebase services.

Step 3: Initialize Firebase in your Python application

Create the main Python file

Create a file named app_monetization.py and add the following code:

import firebase_admin
from firebase_admin import credentials, firestore
import uuid

# Initialize Firebase
cred = credentials.Certificate('firebase_credentials.json')
firebase_admin.initialize_app(cred)

# Get a reference to the Firestore database
db = firestore.client()

print("Firebase initialized successfully!")

Why: This code initializes your Firebase connection and sets up the Firestore database reference, which will store all transaction data.

Step 4: Create a user purchase function

Implement purchase tracking

Add this function to your app_monetization.py file:

def record_purchase(user_id, app_name, price, currency="INR"):
    """Record a user purchase in Firestore"""
    purchase_id = str(uuid.uuid4())
    
    purchase_data = {
        'purchase_id': purchase_id,
        'user_id': user_id,
        'app_name': app_name,
        'price': price,
        'currency': currency,
        'timestamp': firestore.SERVER_TIMESTAMP,
        'status': 'completed'
    }
    
    # Add to Firestore
    db.collection('purchases').add(purchase_data)
    
    print(f"Purchase recorded: {app_name} - ₹{price}")
    return purchase_id

Why: This function creates a unique purchase ID, stores transaction details, and saves them to Firestore. The timestamp helps track when purchases occur, which is essential for analytics.

Step 5: Create a purchase simulation

Test your monetization system

Add this code to test your system:

# Simulate user purchases
user_id = "user_12345"

# Record some purchases
purchase1 = record_purchase(user_id, "Photo Editor Pro", 199)
purchase2 = record_purchase(user_id, "Fitness Tracker", 99)
purchase3 = record_purchase(user_id, "Music Player", 49)

print("\nAll purchases recorded successfully!")

Why: This simulates real user behavior by creating sample purchases, allowing you to verify that your system works correctly before implementing real payment processing.

Step 6: Query purchase history

Retrieve user transaction data

Add this function to view purchase history:

def get_user_purchases(user_id):
    """Retrieve all purchases for a specific user"""
    purchases_ref = db.collection('purchases').where('user_id', '==', user_id)
    purchases = purchases_ref.stream()
    
    print(f"\nPurchase history for user {user_id}:")
    total_spent = 0
    
    for purchase in purchases:
        data = purchase.to_dict()
        print(f"App: {data['app_name']} - ₹{data['price']}")
        total_spent += data['price']
    
    print(f"\nTotal spent: ₹{total_spent}")
    return total_spent

Why: This function demonstrates how you can query and analyze user spending patterns, which is crucial for understanding user behavior and optimizing app pricing strategies.

Step 7: Run your monetization system

Execute the complete program

Add this final code block to run your complete system:

# Run the complete system
if __name__ == "__main__":
    # Test user purchases
    user_id = "user_12345"
    
    # Record some purchases
    record_purchase(user_id, "Photo Editor Pro", 199)
    record_purchase(user_id, "Fitness Tracker", 99)
    record_purchase(user_id, "Music Player", 49)
    
    # View purchase history
    get_user_purchases(user_id)

Why: This final block executes your complete monetization system, demonstrating the full workflow from recording purchases to retrieving transaction history.

Step 8: View your data in Firebase

Check Firestore database

After running your Python script, go to Firebase Console → Firestore Database → Collections. You should see a new collection called 'purchases' with your transaction data. Each document represents a user purchase with all the details you recorded.

Why: Firebase Firestore provides a real-time database where you can visualize and analyze your monetization data, helping you understand user spending patterns and app performance.

Summary

In this tutorial, you've built a basic app monetization system that simulates how Indian developers are transitioning from free app downloads to paid applications. You learned to:

  • Set up Firebase for app data storage
  • Create purchase records with unique identifiers
  • Store transaction data in Firestore
  • Query user purchase history

This foundation mirrors the payment processing systems that Indian app developers are implementing to monetize their applications, similar to the $345 million generated in Q2 as reported by TechCrunch. The system you've built can be extended with actual payment gateways, user authentication, and more sophisticated analytics to match real-world app monetization platforms.

Related Articles