1. Go to this page and download the library: Download almesery/laravel-geidea 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/ */
almesery / laravel-geidea example snippets
use Almesery\LaravelGeidea\Facades\Geidea;
// Create payment session
$result = Geidea::createSession([
'amount' => 100.00,
'currency' => 'SAR',
'merchant_reference_id' => 'INV123',
'callback_url' => route('payment.callback'),
'return_url' => route('payment.return'),
'customer' => [
'email' => '[email protected]',
'name' => 'John Doe',
'phone_number' => '+966501234567',
],
]);
if ($result['success']) {
$sessionId = $result['session_id'];
$orderId = $result['order_id'];
// Redirect to checkout page with sessionId
} else {
// Handle error
$errorMessage = $result['message'];
}
// Get order details
$orderResult = Geidea::getOrder($orderId);
if ($orderResult['success']) {
$order = $orderResult['order'];
$status = $order['status']; // Success, Failed, etc.
}
// Get HPP script URL
$scriptUrl = Geidea::getHppScriptUrl();
// Get merchant public key
$merchantKey = Geidea::getMerchantPublicKey();
// Get service instance
$geidea = geidea();
// Get service with custom config
$geidea = geidea([
'merchant_public_key' => 'custom_key',
'api_password' => 'custom_password',
'environment' => 'egypt',
'currency' => 'EGP',
'language' => 'en',
]);
// Generate merchant reference
$ref = geidea_merchant_reference('INV', 123); // Returns: INV123
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Almesery\LaravelGeidea\Facades\Geidea;
class PaymentController extends Controller
{
public function checkout(Request $request)
{
$amount = $request->input('amount');
$orderId = $request->input('order_id');
// Create payment session
$result = Geidea::createSession([
'amount' => $amount,
'currency' => 'SAR',
'merchant_reference_id' => geidea_merchant_reference('ORDER', $orderId),
'callback_url' => route('payment.callback'),
'return_url' => route('payment.return'),
'customer' => [
'email' => auth()->user()->email,
'name' => auth()->user()->name,
'phone_number' => auth()->user()->phone,
],
]);
if (!$result['success']) {
return redirect()->back()->with('error', $result['message']);
}
return view('payment.checkout', [
'sessionId' => $result['session_id'],
'amount' => $amount,
'currency' => 'SAR',
]);
}
public function callback(Request $request)
{
$orderId = $request->query('orderId');
if (!$orderId) {
return redirect()->route('payment.failed')
->with('error', 'Invalid callback request');
}
// Get order details
$orderResult = Geidea::getOrder($orderId);
if (!$orderResult['success']) {
return redirect()->route('payment.failed')
->with('error', $orderResult['message']);
}
$order = $orderResult['order'];
$status = $order['status'];
if ($status === 'Success') {
// Update your order status
// Send confirmation email
// etc.
return redirect()->route('payment.success')
->with('order', $order);
}
return redirect()->route('payment.failed')
->with('error', 'Payment was not successful');
}
}
use App\Http\Controllers\PaymentController;
Route::middleware(['auth'])->group(function () {
Route::post('payment/checkout', [PaymentController::class, 'checkout'])->name('payment.checkout');
Route::get('payment/callback', [PaymentController::class, 'callback'])->name('payment.callback');
Route::get('payment/success', function () {
return view('payment.success');
})->name('payment.success');
Route::get('payment/failed', function () {
return view('payment.failed');
})->name('payment.failed');
});
[
'success' => true|false,
'session_id' => 'xxx',
'order_id' => 'xxx',
'payment_link' => 'xxx',
'data' => [...], // Full API response
'message' => 'error message' // Only on failure
]
[
'success' => true|false,
'order' => [...], // Order details
'data' => [...], // Full API response
'message' => 'error message' // Only on failure
]