/laravel-mtn-momo

Laravel MTN Momo API Integration

Primary LanguagePHPMIT LicenseMIT

Laravel MTM MOMO API Integration

Total Downloads Latest Stable Version License Build Status Scrutinizer Code Quality Code Coverage StyleCI Documentation

Introduction

This package helps you integrate the MTN MOMO API into your Laravel application. It provides a wrapper around the core MTN Momo API services, leaving you to worry about other parts of your application.

To get started, install the package via the Composer package manager:

Laravel Package Installation
5.3 1.3 composer require bmatovu/laravel-mtn-momo 1.3.*
5.4 1.4 composer require bmatovu/laravel-mtn-momo 1.4.*
5.5 1.5 composer require bmatovu/laravel-mtn-momo 1.5.*
5.6 1.6 composer require bmatovu/laravel-mtn-momo 1.6.*
5.7 1.7 composer require bmatovu/laravel-mtn-momo 1.7.*
5.8 1.8 composer require bmatovu/laravel-mtn-momo 1.8.*
6.0 master composer require bmatovu/laravel-mtn-momo

The service provider will be auto-discovered for Laravel 5.5 and above. You may manually register the service provider in your configuration config/app.php file:

'providers' => array(
   // ...
   Bmatovu\MtnMomo\MtnMomoServiceProvider::class,
),

Configuration customization

If you wish to customize the default configurations, you may export the default configuration using

php artisan vendor:publish --provider="Bmatovu\MtnMomo\MtnMomoServiceProvider" --tag="config"

Database Migration

The package service provider registers it's own database migrations with the framework, so you should migrate your database after installation. The migration will create a tokens tables your application needs to store access tokens from MTN MOMO API.

php artisan migrate

Prerequisites

You will need the following to get started with you integration...

  1. Create a developer account with MTN MOMO.
  2. Subscribe to a product/service that you wish to consume.

If you already subscribed to a product, the subscription key can be found in your profile.

Getting started

Register you client details.

php artisan mtn-momo:init

Next you need to register your client app ID.

php artisan mtn-momo:register-id

You may want to verify your client ID at this stage

php artisan mtn-momo:validate-id

Then request for a client secret (key).

php artisan mtn-momo:request-secret

Usage

use Bmatovu\MtnMomo\Products\Collection;

$collection = new Collection();

// Request a user to pay
$momoTransactionId = $collection->transact('transactionId', '07XXXXXXXX', 100);

See test numbers

Exception handling

use Bmatovu\MtnMomo\Products\Collection;
use Bmatovu\MtnMomo\Exceptions\CollectionRequestException;

try {
    $collection = new Collection();
    
    // Request a user to pay
    $momoTransactionId = $collection->transact('transactionId', '07XXXXXXXX', 100);
} catch(CollectionRequestException $e) {
    do {
        printf("\n\r%s:%d %s (%d) [%s]\n\r", 
            $e->getFile(), $e->getLine(), $e->getMessage(), $e->getCode(), get_class($e));
    } while($e = $e->getPrevious());
}

Collection

  1. Collect money

    $collection->transact($transactionId, $partyId, $amount)
  2. Check transaction status

    $collection->getTransactionStatus($momoTransactionId)
  3. Check account balance

    $collection->getAccountBalance()
  4. Check account status

    $collection->isActive($partyId)
  5. Get OAuth token

    $collection->getToken()

Disbursement

  1. Disburse money

    $disbursement->transfer($transactionId, $partyId, $amount)
  2. Check transaction status

    $disbursement->getTransactionStatus($momoTransactionId)
  3. Check account balance

    $disbursement->getAccountBalance()
  4. Check account status

    $disbursement->isActive($partyId)
  5. Get OAuth token

    $disbursement->getToken()

Remittance

  1. Remit money

    $remittance->transfer($transactionId, $partyId, $amount)
  2. Check transaction status

    $remittance->getTransactionStatus($momoTransactionId)
  3. Check account balance

    $remittance->getAccountBalance()
  4. Check account status

    $remittance->isActive($partyId)
  5. Get OAuth token

    $remittance->getToken()

I Need help!

Feel free to open an issue. Please be as specific as possible if you want to get help.

Reporting bugs

If you've stumbled across a bug, please help us by leaving as much information about the bug as possible, e.g.

  • Steps to reproduce
  • Expected result
  • Actual result

This will help us to fix the bug as quickly as possible, and if you wish to fix it yourself feel free to fork the package and submit a pull request!