PHP code example of triverla / laravel-monnify

1. Go to this page and download the library: Download triverla/laravel-monnify library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

triverla / laravel-monnify example snippets


'providers' => [
    ...
    Triverla\LaravelMonnify\MonnifyServiceProvider::class,
    ...
]

'aliases' => [
    ...
    'Monnify' => Triverla\LaravelMonnify\Facades\Monnify::class,
    ...
]



return [

    'base_url' => env('MONNIFY_BASE_URL', 'https://sandbox.monnify.com'),

    'api_key' => env('MONNIFY_API_KEY', ''),

    'secret_key' => env('MONNIFY_SECRET_KEY', ''),

    'contract_code' => env('MONNIFY_CONTRACT_CODE', ''),

    'source_account_number' => env('MONNIFY_SOURCE_ACCOUNT_NUMBER', ''),

    'default_split_percentage' => env('MONNIFY_DEFAULT_SPLIT_PERCENTAGE', 20),

    'default_currency_code' => env('MONNIFY_DEFAULT_CURRENCY_CODE', 'NGN'),

    'redirect_url' => env('MONNIFY_DEFAULT_REDIRECT_URL', env('APP_URL')),

];

MONNIFY_BASE_URL=https://sandbox.monnify.com
MONNIFY_API_KEY=xxxxxxxxxx
MONNIFY_SECRET_KEY=xxxxxxxxxx
MONNIFY_CONTRACT_CODE=xxxxxxxxxx
MONNIFY_SOURCE_ACCOUNT_NUMBER=xxxxxxxxxx
MONNIFY_DEFAULT_SPLIT_PERCENTAGE=20
MONNIFY_DEFAULT_CURRENCY_CODE=NGN
MONNIFY_DEFAULT_REDIRECT_URL=http://localhost:8000/payment/callback

$data = [
'redirectUrl' => 'http://localhost:8000/payment/callback'
];

Route::post('/pay', [
    'uses' => 'PaymentController@redirectToMonnifyGateway',
    'as' => 'pay'
]);

// Laravel 8+
Route::post('/pay', [App\Http\Controllers\PaymentController::class, 'redirectToMonnifyGateway'])->name('pay');

// Laravel 5.0+
Route::get('payment/callback', [
    'uses' => 'PaymentController@handlePaymentCallback'
]);

// Laravel 8+
Route::get('/payment/callback', [App\Http\Controllers\PaymentController::class, 'handlePaymentCallback']);



namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Redirect;
use Triverla\LaravelMonnify\Facades\Monnify;

class PaymentController extends Controller
{

    /**
     * Redirect the Customer to Monnify Payment Page
     * @return Url
     */
    public function redirectToMonnifyGateway()
    {
        try{
            return Monnify::payment()->makePaymentRequest()->redirectNow();
        }catch(\Exception $e) {
            return Redirect::back()->withMessage(['message'=>'The Monnify token has expired. Please refresh the page and try again.', 'type'=>'error']);
        }        
    }

    /**
     * Get payment information
     * @return void
     */
    public function handleGatewayCallback()
    {
        $paymentDetails = Monnify::payment()->getPaymentData();

        dd($paymentDetails);
        // Now you have the payment details,
        // you can then redirect or do whatever you want
    }
}

/**
 *  In the case where you need to pass the data from your 
 *  controller instead of a form
 *  Make sure to send:
 *   "customerName" => 'John Doe',
        "customerEmail" => '[email protected]',
        "paymentReference" => 'abcd12345678efghi',
        "paymentDescription" => 'Payment for goods & services',
        "currencyCode" => "NGN",
        "redirectUrl" => 'http://localhost:8000/payment/callback',
        "paymentMethods" => ['CARD', 'ACCOUNT_TRANSFER']
    );

return  Monnify::payment()->makePaymentRequest($data)->redirectNow();


    ...
    
    use Triverla\LaravelMonnify\Facades\Monnify;
    use Triverla\LaravelMonnify\Exceptions\FailedRequestException;
    
    ...


    use Triverla\LaravelMonnify\Facades\Monnify;
    
    //Banks
    $response = Monnify::bank()->getBanks();
    $response = Monnify::bank()->getBanksWithUSSDShortCode();
    $response = Monnify::bank()->validateBankAccount(BankAccount $bankAccount);
    
    
    //Reserved Accounts
    $response = Monnify::reservedAccount()->getAllTransactions(array $queryParams);
    $response = Monnify::reservedAccount()->reserveAccount(string $accountReference, string $accountName, string $customerEmail, string $customerName = null, string $customerBvn = null, string $currencyCode = null, bool $restrictPaymentSource = false, AllowedPaymentSources $allowedPaymentSources = null, IncomeSplitConfig $incomeSplitConfig = null);
    $response = Monnify::reservedAccount()->getAccountDetails(string $accountReference);
    $response = Monnify::reservedAccount()->updateSplitConfig(string $accountReference, IncomeSplitConfig $incomeSplitConfig);


    //Disbursements
    $response = Monnify::disbursement()->initiateTransferSingle(float $amount, string $reference, string $narration, BankAccount $bankAccount, string $currencyCode = null);
    $response = Monnify::disbursement()->initiateTransferSingleWithMonnifyTransaction(Tranx $tranx);
    $response = Monnify::disbursement()->initiateTransferBulk(string $title, string $batchReference, string $narration, OnFailureValidate $onFailureValidate, int $notificationInterval, TranxList $tranxList);
    $response = Monnify::disbursement()->authorizeTransfer2FA(string $authorizationCode, string $reference, string $path);
    
    
    //Invoices
    $response = Monnify::invoice()->getAllInvoices();
    $response = Monnify::invoice()->createAnInvoice(float $amount, $expiryDateTime, string $customerName, string $customerEmail, string $invoiceReference, string $invoiceDescription, string $redirectUrl, PaymentMethods $paymentMethods, IncomeSplitConfig $incomeSplitConfig = null, string $currencyCode = null);
    $response = Monnify::invoice()->viewInvoiceDetails(string $invoiceReference);
    $response = Monnify::invoice()->cancelInvoice();
    $response = Monnify::invoice()->reservedAccountInvoicing(string $accountName, string $customerName, string $customerEmail, string $accountReference, string $currencyCode = null);
    $response = Monnify::invoice()->attachReservedAccountToInvoice(float $amount, $expiryDateTime, string $customerName, string $customerEmail, string $invoiceReference, string $accountReference, string $invoiceDescription, IncomeSplitConfig $incomeSplitConfig = null, string $currencyCode = null);


    //SubAccounts
    $response = Monnify::subAccount()->createSubAccount(string $bankCode, string $accountNumber, string $email, string $currencyCode = null, string $splitPercentage = null);
    $response = Monnify::subAccount()->createSubAccounts(array $accounts);
    $response = Monnify::subAccount()->getSubAccounts();
    $response = Monnify::subAccount()->deleteSubAccount(string $subAccountCode);


    //Refunds
     $response = Monnify::refund()->initiateRefund(string $transactionReference, string $refundReference, float $refundAmount, string $refundReason, string $customerNote, string $destinationAccountNumber, string $destinationAccountBankCode);
     $response = Monnify::refund()->getRefundStatus(string $refundReference);
     $response = Monnify::refund()->getAllRefunds(int $pageNo = 0, int $pageSize = 10);


    //Transactions
    $response = Monnify::transaction()->getAllTransactions(array $queryParams);
    $response = Monnify::transaction()->initializeTransaction(float $amount, string $customerName, string $customerEmail, string $paymentReference, string $paymentDescription, string $redirectUrl, PaymentMethods $paymentMethods, IncomeSplitConfig $incomeSplitConfig = null, string $currencyCode = null);
    $response = Monnify::transaction()->calculateHash(string $paymentReference, $amountPaid, string $paidOn, string $transactionReference);
    $response = Monnify::transaction()->getTransactionStatus(string $transactionReference);
    $response = Monnify::transaction()->getTransactionStatusByPaymentReference(string $paymentReference);
    $response = Monnify::transaction()->payWithBankTransfer(string $transactionReference, string $bankCode);


    //Verification APIs
     $response = Monnify::verify()->bvn(string $bvnNo, string $accountName, string $dateOfBirth, string $mobileNo);
     $response = Monnify::verify()->bvnAccountMatch(string $bvnNo, string $accountNumber, string $bankCode);
     $response = Monnify::verify()->validateBankAccount(string $accountNumber, string $bankCode);

    // and many more
bash
php artisan vendor:publish --provider="Triverla\LaravelMonnify\MonnifyServiceProvider"