alvincoded/laravel-mtn-momo-ai

A Laravel package for integrating MTN Mobile Money API with AI capabilities

v1.2.0 2025-01-23 01:38 UTC

README

Latest Version on Packagist Code Style Security

A powerful Laravel package that integrates MTN Mobile Money API with AI capabilities, providing intelligent transaction analysis, fraud detection, and more!

Features ๐ŸŒŸ

  • ๐Ÿ’ณ Seamless integration with MTN MOMO API (Collections, Disbursements, Remittances)
  • ๐Ÿง  AI-powered transaction analysis using multiple LLM models (ChatGPT, Claude, Gemini)
  • ๐Ÿ•ต๏ธ Intelligent fraud detection
  • ๐Ÿ“Š Cash flow forecasting
  • ๐Ÿ”„ Smart retry mechanisms for failed transactions
  • ๐Ÿ“ Natural language command parsing
  • ๐Ÿ“ˆ Automated reporting
  • โฑ๏ธ Smart disbursement scheduling
  • ๐Ÿšจ Anomaly detection in transactions
  • ๐Ÿ”ง API call optimization

Prerequisites

Before getting started with the MTN MOMO AI package, you'll need:

MTN MOMO API Requirements

  1. MTN MOMO Developer Account

  2. API Subscription

    • Subscribe to one or more MTN MOMO products:
      • Collections
      • Disbursements
      • Remittances
    • Get your Subscription Key from your developer profile

AI Model Requirements

You'll need at least one of these API keys:

  • OpenAI API Key (for ChatGPT)
  • Anthropic API Key (for Claude)
  • Google Gemini API Key (for Gemini)
  • Deepseek API Key (for Deepseek)

System Requirements

  • PHP 8.1 or higher
  • Laravel 9.x|10.x|11.x
  • Composer

Environment Setup

Make sure your server/hosting environment:

  • Allows outbound HTTPS connections
  • Has sufficient memory for AI operations
  • Supports background job processing (for notifications)

Installation ๐Ÿ“ฆ

Requires PHP 8.1+

You can install the package via composer:

composer require alvincoded/laravel-mtn-momo-ai

After installation, run the package's installation command:

php artisan mtn-momo-ai:install

This command will guide you through the setup process, including publishing the configuration file and setting up your environment variables.

Configuration โš™๏ธ

The package configuration file will be published to config/mtn-momo-ai.php. You can modify the settings there or use environment variables in your .env file.

Environment Variables

# MTN MOMO API Configuration
MTN_MOMO_API_USER=your_api_user_id # Randomly generated UUID
MTN_MOMO_API_KEY=your_api_key
MTN_MOMO_SUBSCRIPTION_KEY=your_subscription_key
MTN_MOMO_PROVIDER_CALLBACK_HOST=http://localhost
MTN_MOMO_BASE_URL=https://sandbox.momodeveloper.mtn.com
MTN_MOMO_ENVIRONMENT=sandbox
MTN_MOMO_DEFAULT_CURRENCY=EUR

# AI Model API Keys
OPENAI_API_KEY=your_openai_key
ANTHROPIC_API_KEY=your_anthropic_key
GEMINI_API_KEY=your_gemini_key
DEEPSEEK_API_KEY=your_deepseek_key

# Default LLM Configuration
DEFAULT_LLM=ChatGPT
REPORTING_LLM=ChatGPT

# Alerting Configuration
MTN_MOMO_ALERT_EMAIL=alerts@example.com

Usage ๐Ÿ› ๏ธ

Basic Usage

use AlvinCoded\MtnMomoAi\Facades\MtnMomoAi;

// Analyze a transaction
$analysis = MtnMomoAi::analyzeTransaction('transaction123');

// Request to pay
$result = MtnMomoAi::requestToPay(100, 'EUR', 'ext123', 'party123', 'Payment', 'Note');

// Transfer (Disbursement)
$result = MtnMomoAi::transfer(100, 'EUR', 'ext123', 'party123', 'Payment', 'Note');

// Remittance
$result = MtnMomoAi::remit(100, 'EUR', 'ext123', 'party123', 'Payment', 'Note');

AI-Enhanced Features

// Detect fraud
$fraudAnalysis = MtnMomoAi::detectFraud($transactionData);

// Forecast cash flow
$forecast = MtnMomoAi::forecastCashFlow('1month');

// Parse natural language command
$result = MtnMomoAi::parseNaturalLanguageCommand('Send 100 EUR to John Doe');

// Generate report
$report = MtnMomoAi::generateReport($startDate, $endDate);

// Detect anomalies
$anomalies = MtnMomoAi::monitorTransactions();

Currency Configuration

// Using default currency
MtnMomoAi::scheduleDisbursement(100, 'recipient123');

// Specifying a different currency
MtnMomoAi::scheduleDisbursement(100, 'recipient123', 'EUR');

Transaction Analysis

// Detailed transaction analysis
$analysis = MtnMomoAi::analyzeTransaction('transaction123');
// Returns AI-powered insights about the transaction

// Fraud detection with custom parameters
$fraudAnalysis = MtnMomoAi::detectFraud([
    'amount' => 1000,
    'currency' => 'EUR',
    'recipient' => 'user123',
    'timestamp' => now(),
    'location' => 'GH'
]);

Smart Retry Mechanism

// Retry failed transaction with AI-optimized strategy
$retryResult = MtnMomoAi::smartRetry([
    'product' => 'collection',
    'amount' => 100,
    'currency' => 'EUR',
    'externalId' => 'ext123',
    'partyId' => 'party123',
    'payerMessage' => 'Payment',
    'payeeNote' => 'Note'
]);

Error Handling

The package includes comprehensive error handling:

try {
    $result = MtnMomoAi::requestToPay(100, 'EUR', 'ext123', 'party123', 'Payment', 'Note');
} catch (\AlvinCoded\MtnMomoAi\Exceptions\MtnMomoApiException $e) {
    // Handle API-specific errors
    $errorDetails = $e->getResponseBody();
} catch (\Exception $e) {
    // Handle general errors
}

AI Model Selection

// Use default model from config
$analysis = MtnMomoAi::analyzeTransaction('transaction123');

// Specify a particular model
$analysis = MtnMomoAi::analyzeTransaction('transaction123', 'Claude');
$fraudCheck = MtnMomoAi::detectFraud($transactionData, 'Gemini');
$forecast = MtnMomoAi::forecastCashFlow('1month', 'ChatGPT');

API Reference ๐Ÿ“š

MTN MOMO API Methods

  • requestToPay($amount, $currency, $externalId, $partyId, $payerMessage, $payeeNote)
  • getCollectionTransactionStatus($referenceId)
  • getAccountBalance()
  • getAccountHolder($accountHolderId, $accountHolderIdType)
  • transfer($amount, $currency, $externalId, $payee, $payerMessage, $payeeNote)
  • getDisbursementTransactionStatus($referenceId)
  • remit($amount, $currency, $externalId, $payee, $payerMessage, $payeeNote)
  • getRemittanceTransactionStatus($referenceId)

AI-Enhanced Methods

  • analyzeTransaction($transactionId)
  • detectFraud($transactionData)
  • smartRetry($failedTransaction)
  • forecastCashFlow($timeframe)
  • parseNaturalLanguageCommand($command)
  • generateReport($startDate, $endDate)
  • scheduleDisbursement($amount, $recipient)
  • monitorTransactions()
  • optimizeApiCalls($endpoint)
  • handleError($errorCode, $context)

Testing ๐Ÿงช

To run the package tests:

composer test

Contributing ๐Ÿค

Contributions are welcome! Please see CONTRIBUTING.md for details.

Security ๐Ÿ”’

Please review our security policy on how to report security vulnerabilities.

Changelog

Please see CHANGELOG for more information on what has changed recently.

Credits ๐Ÿ‘

License ๐Ÿ“„

The MIT License (MIT). Please see License File for more information.

Support ๐Ÿ’ฌ

For support, please open an issue in the GitHub repository.