laravel-mtn-momo-ai maintained by alvincoded
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
-
MTN MOMO Developer Account
- Sign up at MTN MOMO Developer Portal
- Complete the verification process
- Store your API credentials safely
-
API Subscription
- Subscribe to one or more MTN MOMO products:
- Collections
- Disbursements
- Remittances
- Get your Subscription Key from your developer profile
- Subscribe to one or more MTN MOMO products:
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 👏
- OpenAI PHP by Nuno Maduro
- Anthropic Laravel by Mozex
- Gemini PHP for Laravel by Fatih AYDIN
- DeepSeek PHP Client by Omar AlAlwi
License 📄
The MIT License (MIT). Please see License File for more information.
Support 💬
For support, please open an issue in the GitHub repository.