Skip to content

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

License

Notifications You must be signed in to change notification settings

AlvinCoded/laravel-mtn-momo-ai

Repository files navigation

Laravel MTN MOMO AI

Latest Version on Packagist Tests 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)

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.

Key configurations include:

  • MTN MOMO API credentials
  • AI model settings (ChatGPT, Claude, Gemini)
  • Default LLM selection
  • Alerting settings

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

# 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.

About

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

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages