MoMo), enabling easy swapping or extension if requirements evolve.momo.transaction.created) for post-transaction workflows (e.g., notifications, reconciliation).InsufficientFunds, InvalidPhone). May require custom exception mapping.MoMo facade and HTTP client.config/momo.php).momo_transactions).composer require roazagba/apimtnmomo
php artisan vendor:publish --provider="Roazagba\MoMo\MoMoServiceProvider"
.env with MTN API credentials (e.g., MOMO_API_KEY, MOMO_SECRET_KEY).MoMo::charge() or MoMo::disburse().
$response = MoMo::charge([
'amount' => 1000,
'phone' => '2348012345678',
'reference' => 'order_123',
]);
MoMo facade in unit tests (e.g., with Laravel’s MockFacade).momo.transaction.failed events).openssl, json).composer.json if stability is critical.InvalidPhoneNumber).momo_transactions table on reference and status for reconciliation queries.| **Failure Scenario
How can I help you explore Laravel packages today?