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"