PHP code example of almesery / laravel-geidea

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
]
bash
php artisan vendor:publish --tag=geidea-config