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)