A powerful Laravel package that integrates MTN Mobile Money API with AI capabilities, providing intelligent transaction analysis, fraud detection, and more!
- π³ 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
Before getting started with the MTN MOMO AI package, you'll need:
-
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:
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)
- PHP 8.1 or higher
- Laravel 9.x|10.x|11.x
- Composer
Make sure your server/hosting environment:
- Allows outbound HTTPS connections
- Has sufficient memory for AI operations
- Supports background job processing (for notifications)
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.
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
# 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
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');
// 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();
// Using default currency
MtnMomoAi::scheduleDisbursement(100, 'recipient123');
// Specifying a different currency
MtnMomoAi::scheduleDisbursement(100, 'recipient123', 'EUR');
// 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'
]);
// Retry failed transaction with AI-optimized strategy
$retryResult = MtnMomoAi::smartRetry([
'product' => 'collection',
'amount' => 100,
'currency' => 'EUR',
'externalId' => 'ext123',
'partyId' => 'party123',
'payerMessage' => 'Payment',
'payeeNote' => 'Note'
]);
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
}
// 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');
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)
analyzeTransaction($transactionId)
detectFraud($transactionData)
smartRetry($failedTransaction)
forecastCashFlow($timeframe)
parseNaturalLanguageCommand($command)
generateReport($startDate, $endDate)
scheduleDisbursement($amount, $recipient)
monitorTransactions()
optimizeApiCalls($endpoint)
handleError($errorCode, $context)
To run the package tests:
composer test
Contributions are welcome! Please see CONTRIBUTING.md for details.
Please review our security policy on how to report security vulnerabilities.
Please see CHANGELOG for more information on what has changed recently.
- OpenAI PHP by Nuno Maduro
- Anthropic Laravel by Mozex
- Gemini PHP for Laravel by Fatih AYDIN
The MIT License (MIT). Please see License File for more information.
For support, please open an issue in the GitHub repository.