A Laravel package for integrating with Areeba Payment Gateway.
The package supports two Areeba products:
- IXOPAY (default) — the transaction-based gateway hosted at
gateway.areebapayment.com. - MPGS / ePayment — Areeba's hosted-checkout product on
epayment.areeba.com, backed by MasterCard Payment Gateway Services. See Using the MPGS / ePayment Driver below.
This flow requires you to redirect the end-user to the payment page as advised in the redirectUrl response.
- Initiate the payment with the appropriate API call.
- Upon success, the Gateway responds with a result containing
returnTypeasREDIRECTand the URL inredirectUrl. - You redirect the user to the given URL (usually via a
Locationheader). - The user completes the payment process on the payment page.
- The Gateway sends an asynchronous status notification to the URL provided in the initial API call.
- The user will be redirected to the
successUrl,errorUrl, orcancelUrlbased on the transaction status. The URL will contain thetransactionIdas a query parameter:url?transactionId={{$transactionId}}.
You can install the package via Composer:
composer require thejano/areeba-payment-laravelPublish the configuration file:
php artisan vendor:publish --provider="TheJano\AreebaPayment\Providers\AreebaPaymentServiceProvider"This will create a config/areeba.php file.
Set your environment variables in .env:
AREEBA_API_KEY=your_api_key
AREEBA_USERNAME=your_username
AREEBA_PASSWORD=your_password
AREEBA_BASE_URL=https://gateway.areebapayment.com/api/v3
AREEBA_LANGUAGE=en
AREEBA_TRANSACTION_PREFIX=MYAPP-
AREEBA_SUCCESS_REDIRECT_URL=https://yourapp.com/payment/success
AREEBA_ERROR_REDIRECT_URL=https://yourapp.com/payment/error
AREEBA_CANCEL_REDIRECT_URL=https://yourapp.com/payment/cancel
AREEBA_CALLBACK_REDIRECT_URL=https://yourapp.com/payment/callbackuse TheJano\AreebaPayment\Services\AreebaPayment;
$paymentData = AreebaPayment::make()->initiatePayment('TXN123456', '100.00', 'John Doe');
$paymentUrl = $paymentData->redirectUrl;
return redirect($paymentUrl);use TheJano\AreebaPayment\Facades\AreebaPayment;
$paymentData = AreebaPayment::initiatePayment('TXN123456', '100.00', 'John Doe');
$paymentUrl = $paymentData->redirectUrl;
return redirect($paymentUrl);The AreebaPaymentRequestData contains the following properties:
success(bool) - Indicates if the request was successful.uuid(string|null) - Unique identifier for the transaction.purchaseId(string|null) - The purchase reference ID.returnType(string|null) - Type of return response (e.g.,REDIRECT).redirectUrl(string|null) - URL where the user should be redirected to complete payment.paymentMethod(string|null) - Payment method used by the user.errorMessage(string|null) - Error message in case of failure.errorCode(int|null) - Error code if the transaction failed.
Based on the transaction status, the user will be redirected to the appropriate URL with ?transactionId={{$transactionId}} appended.
use TheJano\AreebaPayment\Facades\AreebaPayment;
$checkResponse = AreebaPayment::checkPaymentStatus('TXN123456');This will return a JSON response including transactionStatus with possible values:
SUCCESS- Transaction was successful.REDIRECT- Transaction has not been processed yet.ERROR- Transaction failed.
Areeba also offers a hosted-checkout product (MPGS / ePayment) on https://epayment.areeba.com. It uses a different API than the IXOPAY gateway above: you create a checkout session, redirect the user to a hosted page (or embed checkout.js), and later query the order resource for the final payment status.
Set AREEBA_DRIVER=mpgs in your .env to make app(PaymentGateway::class) resolve to the MPGS driver. Leaving it unset keeps the default IXOPAY behavior unchanged.
AREEBA_DRIVER=mpgsAlternatively, you can call the MPGS service directly without changing the default driver — the IXOPAY service remains available either way.
The MPGS credentials are namespaced under AREEBA_MPGS_* so they do not collide with the IXOPAY keys:
AREEBA_MPGS_BASE_URL=https://epayment.areeba.com
AREEBA_MPGS_API_VERSION=100
AREEBA_MPGS_MERCHANT_ID=your_merchant_id
AREEBA_MPGS_USERNAME=merchant.your_merchant_id
AREEBA_MPGS_PASSWORD=your_password
AREEBA_MPGS_CURRENCY=USD
AREEBA_MPGS_CHECKOUT_VERSION=1.0.0
AREEBA_MPGS_RETURN_REDIRECT_URL=https://yourapp.com/payment/return
AREEBA_MPGS_CANCEL_REDIRECT_URL=https://yourapp.com/payment/cancel
AREEBA_MPGS_TIMEOUT_REDIRECT_URL=https://yourapp.com/payment/timeoutThe three redirect URLs are sent to MPGS as the interaction.returnUrl, interaction.cancelUrl, and interaction.timeoutUrl fields when a checkout session is created. MPGS will land the user on returnUrl whether the payment succeeded or failed — inspect the resulting order.status (see Checking Payment Status) to decide how to render the page.
use TheJano\AreebaPayment\Services\AreebaMpgsPayment;
$paymentData = AreebaMpgsPayment::make()->initiatePayment('ORDER-123', '100.00', 'John Doe');
// $paymentData->purchaseId → MPGS session id (use it with checkout.js)
// $paymentData->redirectUrl → hosted-checkout URL (use it for a plain redirect flow)
return redirect($paymentData->redirectUrl);Or via the facade:
use TheJano\AreebaPayment\Facades\AreebaMpgsPayment;
$paymentData = AreebaMpgsPayment::initiatePayment('ORDER-123', '100.00', 'John Doe');If you don't need the full AreebaPaymentRequestData object, two convenience methods return the value you want as a plain string (or null if the gateway call fails — the failure is already logged via Laravel's logger):
use TheJano\AreebaPayment\Facades\AreebaMpgsPayment;
// Hosted-checkout redirect URL
$paymentLink = AreebaMpgsPayment::getPaymentLink('ORDER-123', '100.00', 'John Doe');
if ($paymentLink === null) {
abort(502, 'Payment gateway unavailable');
}
return redirect($paymentLink);
// MPGS session ID (for embedded checkout.js)
$sessionId = AreebaMpgsPayment::getSessionId('ORDER-123', '100.00', 'John Doe');
return view('checkout', ['sessionId' => $sessionId]);Both methods accept the same arguments as initiatePayment() and call it internally — they are pure projections of its result, so there is no extra network round-trip. Use initiatePayment() directly when you also need the error message or other fields on failure.
The purchaseId returned from initiatePayment is the MPGS session.id. With it you can either:
-
Redirect the user to
$paymentData->redirectUrl(the hosted checkout page), or -
Embed
checkout.json your own page and call:<script src="https://epayment.areeba.com/static/checkout/checkout.min.js"></script> <script> Checkout.configure({ session: { id: '<?= $paymentData->purchaseId ?>' } }); Checkout.showPaymentPage(); </script>
use TheJano\AreebaPayment\Facades\AreebaMpgsPayment;
$response = AreebaMpgsPayment::checkPaymentStatus('ORDER-123');
// Inspect $response['status'] — values include CAPTURED, AUTHORIZED, FAILED, DECLINED, EXPIRED, CANCELLED.checkPaymentStatus returns the raw decoded JSON from MPGS so your application can map gateway-specific statuses to its own payment states.
This package is open-source and licensed under the MIT License.
For more details, visit the official API documentation:
https://www.areeba.com/projects/areeba_gateway/integration
https://www.areeba.com/documentations/areeba_docs.integration.html