https://github.com/chrisaydat/ussddevelopment.git
Unstructured Supplementary Service Data (USSD) is a protocol that allows basic feature phones to interact with backend systems. In this article, we will go through a USSD code sample developed by Aydat, Inc. to understand how such applications are built.
Overview
The USSD application developed by (chris) Aydat, Inc for Dyrect. provides the following capabilities:
- User registration
- Balance inquiry
- P2P money transfers
- Purchases
We will understand how the code implements these features.
Application Flow
The high-level flow is:
- User dials USSD code on their phone
- Main handler is invoked which displays menu
- User input is processed to navigate menu options
- Relevant actions like transactions, queries are performed
This is enabled by PHP code and USSD protocol features.
Main Handler
The ussd.php file handles the USSD session:
//ussd.php
$text = $_GET['text']; 
$data = explode("*", $text);
//determine menu level
$level = count($data);
//route user input  
switch($data[1]){
  case 1: 
    registration();
    break;  
  case 2:
    balance();
    break; 
    //...other cases
}
It receives user input, parses it to identify menu level, and routes it accordingly.
Registration Flow
Registration prompts user for details one by one:
//functions.php
function registration(){
  if($level == 1){
    askFirstName();
  }  
  if($level == 2){
    askLastName();
  }
  //...other fields
  if($level == 9){
    saveToDB();
    confirmRegistration(); 
  }
}
ussd_proceed() is used to prompt for next field.
Session Control
ussd_proceed() & ussd_stop() are used to manage session:
function ussd_proceed($text){
  echo "CON $text";
  exit(0);
}
function ussd_stop($text){
  echo "END $text";
  exit(0); 
}
Database Integration
connection.php sets up database connectivity:
//connection.php
$host = "localhost";
$username = "ussd";
$password = "123456";
$db = new mysqli($host, $username, $password, "ussdApp");
//execute queries
Used for registration, balance check etc.
Conclusion
The Next Version of this Article Will explore Database Connections and Final Deployment
 
 
              
 
    
Top comments (0)