2017 © Pedro Peláez
 

library hubtel-ussd

An unofficial php library for processing Hubtel USSD requests

image

norris1z/hubtel-ussd

An unofficial php library for processing Hubtel USSD requests

  • Friday, January 19, 2018
  • by Norris1z
  • Repository
  • 1 Watchers
  • 0 Stars
  • 2 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 2 Versions
  • 0 % Grown

The README.md

Hubtel USSD

Based on Hubtel's USSD API, (*1)

About

This package helps you to build maintainable and scalable USSD applications by breaking down your "long switch" statement USSD application into modules, (*2)

Getting Started

Check out this link to know how you can acquire a USSD code from Hubtel., (*3)

Installing

Install the package from composer, (*4)

composer require norris1z/hubtel-ussd

Usage

Setup a route to respond to all Hubtel's requests., (*5)

Note that Hubtel sends no csrf tokens hence disable csrfprotection for that route., (*6)

For Laravel, add the route to the except array in the VerifyCsrfToken middleware., (*7)

Hubtel\USSD\Request::class is a class which represents the request from Hubtel. It has methods for all the parameters listed on Hubtel's Documentation Page., (*8)

View Source Request.php, (*9)

Hubtel\USSD\Response::class is a class which represents the response sent to Hubtel. It has methods for all the parameters listed on Hubtel's Documentation Page., (*10)

View Source Response.php, (*11)

RequestTypes::class has two properties, RESPONSE and RELEASE for indicating the type of response in a sequence., (*12)

    $response = Response::createInstance('Hello Hubtel, i want a response',RequestTypes::RESPONSE);
    $response = Response::createInstance('Hello Hubtel, end the sequence',RequestTypes::RELEASE);

USSD::class is a class with one static method process which takes two parameters a Request (an instance of Hubtel\USSD\Reqeust) and an array of sequence (any class that implements the Hubtel\USSD\SequenceInterface);, (*13)

     USSD::process(/** An instance of Hubtel\USSD\Request **/,[
        new Sequence1(),
        new Sequence2(),
        new Sequence3()
    ])->toArray();

All seqeunces must have implement the SequenceInterface and hence have a handle method and must return an instance of Hubtel\USSD\Response (Response). The USSD::process method automagically injects a Request parameter into the handle method of each sequence. This Request is an instace of Hubtel\USSD\Request which grants access to all properties and methods in the request., (*14)

    //Sequence1.php
    use Hubtel\USSD\Request;
    use Hubtel\USSD\RequestTypes;
    use Hubtel\USSD\Response;
    use Hubtel\USSD\SequenceInterface;

    class Sequence1 implements SequenceInterface
    {

        public function handle(Request $request)
        {
            return Response::createInstance('Welcome to Freebie Service.\n1. Free Food\n2. Free Drink\n3. Free Airtime',RequestTypes::RESPONSE);
        }
    }

Visit Hubtel's USSD Api documentation page for the list of methods on the request and response classes, (*15)

Examples

  1. Laravel
  2. Lumen

Feel free to submit pull-requests for examples with other frameworks :blush:, (*16)

Running the tests

composer test, (*17)

Authors

License

This project is licensed under the MIT License, (*18)

The Versions

19/01 2018

dev-master

9999999-dev

An unofficial php library for processing Hubtel USSD requests

  Sources   Download

MIT

The Requires

  • php >=5.6.4

 

The Development Requires

php ussd hubtel

19/01 2018

1.0.0

1.0.0.0

An unofficial php library for processing Hubtel USSD requests

  Sources   Download

MIT

The Requires

  • php >=5.6.4

 

The Development Requires

php ussd hubtel