bmatovu/laravel-mtn-momo

Laravel MTN MOMO integration.

v4.3.1 2024-01-18 11:25 UTC

README

Total Downloads Latest Stable Version License Code Quality Code Coverage Tests 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.

Installation

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

Laravel Package Installation
^6.0 2.0 composer require bmatovu/laravel-mtn-momo ^2.0
^7.0 3.0 composer require bmatovu/laravel-mtn-momo ^3.0
^8.0 ... ^10.0 master composer require bmatovu/laravel-mtn-momo

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 (Sandbox)

Register your 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();

$referenceId = $collection->requestToPay('yourTransactionId', '46733123454', 100);

See test numbers

Exception handling

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

try {
    $collection = new Collection();
    
    $referenceId = $collection->requestToPay('yourTransactionId', '46733123453', 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());
}

Available methods

Collection

  1. Collect money

    $collection->requestToPay($yourTransactionId, $partyId, $amount)
  2. Check transaction status

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

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

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

    $collection->getToken()
  6. Get Account Holder Info

    $collection->getAccountHolderBasicInfo($partyId)

Disbursement

  1. Disburse money

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

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

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

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

    $disbursement->getToken()
  6. Get Account Holder Info

    $disbursement->getAccountHolderBasicInfo($partyId)

Remittance

  1. Remit money

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

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

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

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

    $remittance->getToken()
  6. Get Account Holder Info

    $remittance->getAccountHolderBasicInfo($partyId)

Go live

You will need to make some changes to your setup before going live. Read more.

Support Groups

Join MTN's Skype & WhatsApp support groups. Here

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!