This library makes it easy for PHP developers to integrate with One4All TPP online service.
It's supported on PHP 5.5+
use MyOne4All\TppClient;
use MyOne4All\Exceptions\TppException;
use MyOne4All\Models\DataBundle;
use MyOne4All\NetworkCodes;
$tppClient = new TppClient("apikey", "apisecret", "retailer");
# ecredit balance
echo $tppClient->getBalance(); # 0.0
# mobile money collection balance
echo $tppClient->getBalance(TppClient::WALLET_TYPE_MOBILE_MONEY_COLLECTION); # 0.0
# mobile money credit balance
echo $tppClient->getBalance(TppClient::WALLET_TYPE_MOBILE_MONEY_CREDIT); # 0.0
// send airtime implementation
$airtime_response = $tppClient->sendAirtime("0245667942", 1, "trans03423423", NetworkCodes::AUTO_DETECT);
if($airtime_response->isSuccessful()){
echo "airtime sent";
}else{
echo "Failed: ".$airtime_response->getErrorMessage();
}
// send internet data implementation
$data_code = "DAILY_20MB";
$transaction_reference = "trans03423423";
$bundle_response = $tppClient->sendDataBundle("0245667942", $data_code, $transaction_reference, NetworkCodes::MTN_GH);
if($bundle_response->isSuccessful()){
echo "internet bundle sent";
}else{
echo "Failed: ".$bundle_response->getErrorMessage();
}
// send internet data implementation
$data_code = "flexi_data_bundle";
$transaction_reference = "trans03423423";
$amount = 10;
$bundle_response = $tppClient->sendFlexiDataBundle("0245667942", $amount, $data_code, $transaction_reference, NetworkCodes::MTN_GH);
if($bundle_response->isSuccessful()){
echo "internet bundle sent";
}else{
echo "Failed: ".$bundle_response->getErrorMessage();
}
// send mobile money implementation
$transaction_reference = "trans03423423";
$amount = 1;
$momo_response = $tppClient->sendMobileMoney("0245667942", $amount, $transaction_reference);
if($momo_response->isSuccessful()){
echo "mobile money sent";
}else if($momo_response->isPending()){
// this is very important, do not treat as an error.
// you must check transaction status later to know if it was successful or not
echo "mobile money request is being processed.";
}else{
echo "Failed: ".$momo_response->getErrorMessage();
}
// receive mobile money implementation
$transaction_reference = "trans03423423";
$amount = 1;
$payer_number = "0245667XXX";
$momo_response = $tppClient->receiveMobileMoney($payer_number, $amount, $transaction_reference);
if($momo_response->isSuccessful()){
// check transaction status later to confirm receipt
echo "mobile money payment request initiated";
}else{
echo "Failed: ".$momo_response->getErrorMessage();
}
When working with USSD sessions, it is important there is a delay between the closing of the current session and the payment prompt. Use the delay parameter to specify the number of seconds to delay the payment prompt after the current USSD session ends.
// receive mobile money implementation
$transaction_reference = "trans03423423";
$amount = 1;
$payer_number = "0245667XXX";
$narration = "Food Purchase";
$delay = 5;
// the last parameter represents the number of seconds to delay the payment prompt
$momo_response = $tppClient->receiveMobileMoney($payer_number, $amount, $transaction_reference, $delay, $narration);
if($momo_response->isSuccessful()){
// check transaction status later to confirm receipt
echo "mobile money payment request initiated";
}else{
echo "Failed: ".$momo_response->getErrorMessage();
}
$sms_message = "hello world";
$sms_sender_id = "One4All";
$transaction_reference = "sms11";
$sms_response = $tppClient->sendSms("0572180376", $sms_message, $sms_sender_id, $transaction_reference);
if($sms_response->isSuccessful()){
echo "sms message queued";
}else{
echo "Failed: ".$sms_response->getErrorMessage();
}
We recommend you cache this list for at least 24 hours to avoid unnecessary API calls.
echo NetworkCodes::AUTO_DETECT; # 0
echo NetworkCodes::MTN_GH; # 4
echo NetworkCodes::AIRTEL_DRC; # 2
// fetch available data packages for all networks
$data_packages = $tppClient->getDataBundleList();
// only fetch data packages for mtn
$data_packages = $tppClient->getDataBundleList(NetworkCodes::MTN_GH);
foreach($data_pages as $data_package){
echo $data_package->plan_id; # DAILY_20MB
echo $data_package->plan_name; # DAILY_20MB
echo $data_package->category; # DAILY
echo $data_package->network_id; # 4
echo $data_package->volume; # 20 MB
}
$transaction_reference = "trans03423423";
$transaction_status = $tppClient->getTransactionStatus($transaction_reference);
if($transaction_status == TppClient::TRANSACTION_STATUS_COMPLETED){
echo "transaction successful";
}
Install package using Composer
composer require jilenloa/tppmyone4all-php
After installing, you need to require Composer's autoloader:
require 'vendor/autoload.php';
You can then later update the package later using composer:
composer update
In order to run unit tests for this package
npm install -g mockserver