PHPackages                             elryad/payments - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. elryad/payments

ActiveLibrary[Payment Processing](/categories/payments)

elryad/payments
===============

Multi-gateway payment package for Laravel - Paymob, Moyasar, Tap

01PHP

Since Feb 2Pushed 3mo agoCompare

[ Source](https://github.com/EngMahmoudHafez/payments)[ Packagist](https://packagist.org/packages/elryad/payments)[ RSS](/packages/elryad-payments/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

Elryad Payments - Multi-Gateway Laravel Package
===============================================

[](#elryad-payments---multi-gateway-laravel-package)

حزمة Laravel لبوابات الدفع - Paymob، Moyasar، Tap - قابلة لإعادة الاستخدام في أي مشروع.

البوابات المدعومة
-----------------

[](#البوابات-المدعومة)

البوابةالدولة/المنطقةالنطاق**Paymob**مصر، السعوديةتكامل كامل داخل الحزمة**Moyasar**السعوديةتكامل كامل داخل الحزمة**Tap**السعودية، الخليجتكامل كامل داخل الحزمة**Stripe**عالميAdapter + Handler من المشروع**Tamara**السعودية/الخليجAdapter + Handler من المشروع**Hyperpay**السعودية/الخليجAdapter + Handler من المشروع**Paytabs**السعودية/الخليجAdapter + Handler من المشروعالتثبيت
-------

[](#التثبيت)

```
composer require elryad/payments

```

### مزود الخدمة (Service Provider)

[](#مزود-الخدمة-service-provider)

- **Laravel Auto-Discovery** يعمل تلقائياً.
- إن كنت تعطل الـ auto-discovery، أضف المزود يدوياً في `bootstrap/providers.php`:

```
Elryad\Payments\PaymentsServiceProvider::class,
```

### نشر الإعدادات (اختياري)

[](#نشر-الإعدادات-اختياري)

```
php artisan vendor:publish --tag=payments-config

```

### نشر الـ Views (اختياري)

[](#نشر-الـ-views-اختياري)

```
php artisan vendor:publish --tag=payments-views

```

هيكل الحزمة
-----------

[](#هيكل-الحزمة)

```
Elryad\Payments\
├── Gateways\
│   ├── Paymob\      # مصر / السعودية
│   │   ├── PaymobService.php
│   │   ├── Contracts\PaymobPaymentHandlerInterface.php
│   │   └── Http\Controllers\
│   ├── Moyasar\     # السعودية
│   │   ├── MoyasarService.php
│   │   ├── Contracts\MoyasarPaymentHandlerInterface.php
│   │   └── Http\Controllers\
│   └── Tap\         # السعودية / الخليج
│       ├── TapService.php
│       ├── Contracts\TapPaymentHandlerInterface.php
│       └── Http\Controllers\
├── config\payments.php
└── resources\views\moyasar\

```

الإعداد
-------

[](#الإعداد)

### Paymob

[](#paymob)

```
PAYMOB_API_KEY=
PAYMOB_INTEGRATION_ID=
PAYMOB_HMAC_SECRET=
PAYMOB_IFRAME_ID=
PAYMOB_HANDLER=App\Http\Services\Payment\GiftCardPaymobHandler

```

### Moyasar

[](#moyasar)

```
MOYASAR_SECRET_KEY=
MOYASAR_PUBLISHABLE_KEY=
MOYASAR_WEBHOOK_SECRET=
MOYASAR_HANDLER=App\Http\Services\Payment\MoyasarHandler
MOYASAR_SUCCESS_REDIRECT=
MOYASAR_FAILED_REDIRECT=

```

### Tap

[](#tap)

```
TAP_SECRET_KEY=
TAP_HANDLER=App\Http\Services\Payment\TapHandler
TAP_SUCCESS_REDIRECT=
TAP_FAILED_REDIRECT=

```

### Stripe

[](#stripe)

```
STRIPE_SECRET_KEY=
STRIPE_WEBHOOK_SECRET=
STRIPE_CURRENCY=USD
STRIPE_HANDLER=App\Http\Services\Payment\StripeHandler

```

### Tamara

[](#tamara)

```
TAMARA_BASE_URL=
TAMARA_API_KEY=
TAMARA_WEBHOOK_SECRET=
TAMARA_HANDLER=App\Http\Services\Payment\TamaraHandler

```

### Hyperpay

[](#hyperpay)

```
HYPERPAY_BASE_URL=
HYPERPAY_ENTITY_ID=
HYPERPAY_ACCESS_TOKEN=
HYPERPAY_HANDLER=App\Http\Services\Payment\HyperpayHandler

```

### Paytabs

[](#paytabs)

```
PAYTABS_BASE_URL=
PAYTABS_PROFILE_ID=
PAYTABS_SERVER_KEY=
PAYTABS_HANDLER=App\Http\Services\Payment\PaytabsHandler

```

تنفيذ Handler للمشروع
---------------------

[](#تنفيذ-handler-للمشروع)

كل بوابة تحتاج Handler يطبق الواجهة الخاصة بها:

### Paymob

[](#paymob-1)

`PaymobPaymentHandlerInterface` - initiatePayment, initiatePaymentAndSend, checkPaymentStatus, getPaymentByOrderId, ...

### Moyasar

[](#moyasar-1)

`MoyasarPaymentHandlerInterface` - initiatePayment, getPaymentViewData, handleCallback, handlePaidWebhook, handleFailedWebhook

### Tap

[](#tap-1)

`TapPaymentHandlerInterface` - initiatePayment, handleCallback, handleWebhook

### Stripe

[](#stripe-1)

`StripePaymentHandlerInterface` - initiatePayment, handleCallback, handleWebhook

### Tamara

[](#tamara-1)

`TamaraPaymentHandlerInterface` - initiatePayment, handleCallback, handleWebhook

### Hyperpay

[](#hyperpay-1)

`HyperpayPaymentHandlerInterface` - initiatePayment, handleCallback, handleWebhook

### Paytabs

[](#paytabs-1)

`PaytabsPaymentHandlerInterface` - initiatePayment, handleCallback, handleWebhook

اختيار البوابة ديناميكياً (Gateway Manager)
-------------------------------------------

[](#اختيار-البوابة-ديناميكياً-gateway-manager)

يمكنك اختيار البوابة أثناء التشغيل:

```
use Elryad\Payments\GatewayManager;
use Elryad\Payments\Support\GatewayActions;

$gateway = app(GatewayManager::class)->driver('moyasar'); // أو config('payments.default')

return $gateway->perform(GatewayActions::INITIATE, [
    'amount' => 100,
    'metadata' => ['order_id' => 123],
]);
```

تغيير البوابة الافتراضية:

```
PAYMENTS_DEFAULT_GATEWAY=moyasar

```

الوثائق التفصيلية
-----------------

[](#الوثائق-التفصيلية)

راجع ملفات الوثائق لكل بوابة:

- `docs/gateways/paymob.md`
- `docs/gateways/moyasar.md`
- `docs/gateways/tap.md`
- `docs/gateways/stripe.md`
- `docs/gateways/tamara.md`
- `docs/gateways/hyperpay.md`
- `docs/gateways/paytabs.md`

مثال Handler لـ Moyasar (مشروع الاشتراكات)
------------------------------------------

[](#مثال-handler-لـ-moyasar-مشروع-الاشتراكات)

```
// app/Http/Services/Payment/MoyasarSubscriptionHandler.php
class MoyasarSubscriptionHandler implements MoyasarPaymentHandlerInterface
{
    public function initiatePayment(array $validatedData): mixed
    {
        return redirect()->route('payment.view', [
            'amount' => $validatedData['amount'],
            'subscriptionId' => $validatedData['subscription_id'],
        ]);
    }

    public function getPaymentViewData(float $amount, array $metadata = []): array
    {
        $moyasar = app(MoyasarService::class);
        return [
            'amount' => (int) round($amount * 100), // halala
            'publishable_key' => $moyasar->getPublishableKey(),
            'callback_url' => route('payments.moyasar.callback', $metadata),
            'metadata' => $metadata,
        ];
    }

    public function handleCallback(string $paymentId, string $status, array $queryParams): mixed
    {
        $subscriptionId = $queryParams['subscription_id'] ?? null;
        $payment = app(MoyasarService::class)->verifyPayment($paymentId);
        if ($payment && $payment['status'] === 'paid') {
            $this->processSuccessfulPayment($subscriptionId, $payment);
            return redirect(config('app.frontend_url').'/payment/success');
        }
        return redirect(config('app.frontend_url').'/payment/failed');
    }

    public function handlePaidWebhook(array $paymentData): \Illuminate\Http\JsonResponse
    {
        $subscriptionId = $paymentData['metadata']['subscription_id'] ?? null;
        if ($subscriptionId) {
            $this->processSuccessfulPayment($subscriptionId, $paymentData);
        }
        return response()->json(['status' => 'success']);
    }

    public function handleFailedWebhook(array $paymentData): \Illuminate\Http\JsonResponse
    {
        // mark as failed
        return response()->json(['status' => 'updated']);
    }
}
```

Routes للمشاريع
---------------

[](#routes-للمشاريع)

```
// Paymob
Route::post('/payments/paymob/webhook', [PaymobWebhookController::class, 'callback']);
Route::get('/payments/paymob/webhook', [PaymobWebhookController::class, 'redirect']);

// Moyasar
Route::post('/payments/moyasar/initiate', [MoyasarController::class, 'initiate']);
Route::get('/payments/moyasar/view', [MoyasarController::class, 'paymentView']);
Route::get('/payments/moyasar/callback', [MoyasarWebhookController::class, 'callback']);
Route::post('/payments/moyasar/webhook', [MoyasarWebhookController::class, 'webhook']);

// Tap
Route::post('/payments/tap/initiate', [TapController::class, 'initiate']);
Route::get('/payments/tap/callback', [TapController::class, 'callback']);
Route::post('/payments/tap/webhook', [TapWebhookController::class, 'webhook']);
```

التطوير والاختبارات محليًا
--------------------------

[](#التطوير-والاختبارات-محليًا)

```
composer install
vendor\bin\phpunit

```

License
-------

[](#license)

MIT

###  Health Score

18

—

LowBetter than 8% of packages

Maintenance54

Moderate activity, may be stable

Popularity1

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity12

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/d3efb9dcbdf35ef54fe690a855bd1f18ee2770cf80e97408b7601749b32289b7?d=identicon)[EngMahmoudHafez](/maintainers/EngMahmoudHafez)

---

Top Contributors

[![EngMahmoudHafez](https://avatars.githubusercontent.com/u/97672919?v=4)](https://github.com/EngMahmoudHafez "EngMahmoudHafez (2 commits)")

### Embed Badge

![Health badge](/badges/elryad-payments/health.svg)

```
[![Health](https://phpackages.com/badges/elryad-payments/health.svg)](https://phpackages.com/packages/elryad-payments)
```

###  Alternatives

[omnipay/paypal

PayPal gateway for Omnipay payment processing library

3156.8M53](/packages/omnipay-paypal)[eduardokum/laravel-boleto

Biblioteca com boletos para o laravel

626351.9k2](/packages/eduardokum-laravel-boleto)[tbbc/money-bundle

This is a Symfony bundle that integrates moneyphp/money library (Fowler pattern): https://github.com/moneyphp/money.

1961.9M](/packages/tbbc-money-bundle)[2checkout/2checkout-php

2Checkout PHP Library

83740.3k2](/packages/2checkout-2checkout-php)[smhg/sepa-qr-data

Generate QR code data for SEPA payments

61717.2k5](/packages/smhg-sepa-qr-data)[omnipay/dummy

Dummy driver for the Omnipay payment processing library

271.2M33](/packages/omnipay-dummy)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
