Laravel (New)
Source Files
Install the MyFatoorah Laravel package via myfatoorah/laravel-package composer.
composer require myfatoorah/laravel-package
Installation steps
- Publish the MyFatoorah provider using the following CLI command.
php artisan vendor:publish --provider="MyFatoorah\LaravelPackage\MyFatoorahServiceProvider" --tag="myfatoorah"
- To test the payment cycle, type the below URL onto your browser. Replace only the {example.com} with your site domain. You can use the test cards listed on the Test Cards page.
https://{example.com}/myfatoorah
- Customize the app/Http/Controllers/MyFatoorahController.php file as per your site needs.
<?php
namespace App\Http\Controllers;
use MyFatoorah\Library\PaymentMyfatoorahApiV2;
class MyFatoorahController extends Controller {
public $mfObj;
/**
* create MyFatoorah object
*/
public function __construct() {
$this->mfObj = new PaymentMyfatoorahApiV2(config('myfatoorah.api_key'), config('myfatoorah.country_iso'), config('myfatoorah.test_mode'));
}
/**
* Create MyFatoorah invoice
*
* @return \Illuminate\Http\Response
*/
public function index() {
try {
$paymentMethodId = 0; // 0 for MyFatoorah invoice or 1 for Knet in test mode
$data = $this->mfObj->getInvoiceURL($this->getPayLoadData(), $paymentMethodId);
return response()->json(['IsSuccess' => 'true', 'Message' => 'Invoice created successfully.', 'Data' => $data]);
} catch (\Exception $e) {
return response()->json(['IsSuccess' => 'false', 'Message' => $e->getMessage()]);
}
}
/**
*
* @param int|string $orderId
* @return array
*/
private function getPayLoadData($orderId = null) {
$callbackURL = route('myfatoorah.callback');
return [
'CustomerName' => 'FName LName',
'InvoiceValue' => '10',
'DisplayCurrencyIso' => 'KWD',
'CustomerEmail' => '[email protected]',
'CallBackUrl' => $callbackURL,
'ErrorUrl' => $callbackURL,
'MobileCountryCode' => '+965',
'CustomerMobile' => '12345678',
'Language' => 'en',
'CustomerReference' => $orderId,
'SourceInfo' => 'Laravel ' . app()::VERSION . ' - MyFatoorah Package ' . MYFATOORAH_LARAVEL_PACKAGE_VERSION
];
}
/**
* Get MyFatoorah payment information
*
* @return \Illuminate\Http\Response
*/
public function callback() {
try {
$data = $this->mfObj->getPaymentStatus(request('paymentId'), 'PaymentId');
if ($data->InvoiceStatus == 'Paid') {
$msg = 'Invoice is paid.';
} else if ($data->InvoiceStatus == 'Failed') {
$msg = 'Invoice is not paid due to ' . $data->InvoiceError;
} else if ($data->InvoiceStatus == 'Expired') {
$msg = 'Invoice is expired.';
}
return response()->json(['IsSuccess' => 'true', 'Message' => $msg, 'Data' => $data]);
} catch (\Exception $e) {
return response()->json(['IsSuccess' => 'false', 'Message' => $e->getMessage()]);
}
}
}
MyFtoorah Library
MyFatoorah Laravel-Package uses the MyFatoorah Library composer package. Check the PHP library to help you Customize your Laravel website.
Merchant Configurations
Edit the config/myfatoorah.php file with your correct vendor data.
- Live Configuration: set "test_mode" with "false" and use your live token.
- Test Configuration: set "test_mode" with "true" and use the test token. Also, use the list of test cards to explore the payment process.
<?php
return [
/**
* API Token Key
* Live Token: https://myfatoorah.readme.io/docs/live-token
* Test Token: https://myfatoorah.readme.io/docs/test-token
*/
'api_key' => '',
/**
* Test Mode
* Accepted value: 'true' for the test mode or 'false' for the live mode
*/
'test_mode' => 'true',
/**
* Country ISO Code
* Accepted value: KWT, SAU, ARE, QAT, BHR, OMN, JOD, or EGY.
*/
'country_iso' => 'KWT'
];
Updated 10 months ago