algmaal / laravel-fawaterak
Laravel package for Fawaterak payment gateway integration
v1.0.3
2025-08-30 20:33 UTC
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.0
- illuminate/support: ^10.0|^11.0|^12.0
- laravel/framework: ^10.0|^11.0|^12.0
Requires (Dev)
- mockery/mockery: ^1.4
- orchestra/testbench: ^8.0|^9.0|^10.0
- phpunit/phpunit: ^10.0
README
حزمة Laravel للتكامل مع بوابة الدفع Fawaterak. تدعم جميع طرق الدفع المتاحة في Fawaterak مع إدارة شاملة للمعاملات والـ webhooks.
المميزات
- ✅ دعم Laravel 10+ و 11+ و 12+
- ✅ تكامل كامل مع Fawaterak API
- ✅ دعم جميع طرق الدفع (Visa/Mastercard، Fawry، Meeza، Aman، Basta)
- ✅ معالجة Webhooks التلقائية
- ✅ إدارة البيئات المتعددة (Staging/Production)
- ✅ Cache للبيانات المتكررة
- ✅ Logging شامل للعمليات
- ✅ Validation للبيانات
- ✅ معالجة الأخطاء المتقدمة
- ✅ اختبارات شاملة
- ✅ Facade سهل الاستخدام
التثبيت
composer require algmaal/laravel-fawaterak
نشر ملف التكوين:
php artisan vendor:publish --provider="Algmaal\LaravelFawaterak\FawaterakServiceProvider" --tag="fawaterak-config"
التكوين
أضف المتغيرات التالية إلى ملف .env
:
# البيئة الافتراضية (staging أو production) FAWATERAK_ENVIRONMENT=staging # إعدادات بيئة التطوير FAWATERAK_STAGING_API_KEY=your_staging_api_key FAWATERAK_STAGING_BASE_URL=https://staging.fawaterk.com FAWATERAK_STAGING_WEBHOOK_SECRET=your_staging_webhook_secret # إعدادات بيئة الإنتاج FAWATERAK_PRODUCTION_API_KEY=your_production_api_key FAWATERAK_PRODUCTION_BASE_URL=https://app.fawaterak.com FAWATERAK_PRODUCTION_WEBHOOK_SECRET=your_production_webhook_secret # العملة الافتراضية FAWATERAK_DEFAULT_CURRENCY=EGP # إعدادات إضافية FAWATERAK_CACHE_ENABLED=true FAWATERAK_LOGGING_ENABLED=true
الاستخدام الأساسي
الحصول على طرق الدفع المتاحة
use Algmaal\LaravelFawaterak\Facades\Fawaterak; // الحصول على طرق الدفع $paymentMethods = app(\Algmaal\LaravelFawaterak\Contracts\FawaterakServiceInterface::class) ->getPaymentMethods(); foreach ($paymentMethods['data'] as $method) { echo $method['name_ar'] . ' - ' . $method['name_en']; }
إنشاء دفعة جديدة
use Algmaal\LaravelFawaterak\Facades\Fawaterak; // بيانات العميل $customerData = [ 'first_name' => 'محمد', 'last_name' => 'أحمد', 'email' => 'mohamed@example.com', 'phone' => '01234567890', 'address' => 'القاهرة، مصر' ]; // عناصر السلة $cartItems = [ [ 'name' => 'منتج تجريبي 1', 'price' => '100', 'quantity' => '1' ], [ 'name' => 'منتج تجريبي 2', 'price' => '50', 'quantity' => '2' ] ]; // إنشاء الدفعة $payment = Fawaterak::createPayment( $customerData, $cartItems, 200.0, // المجموع 2, // معرف طريقة الدفع (Visa/Mastercard) [ 'currency' => 'EGP', 'invoice_number' => 'INV-001', 'redirection_urls' => [ 'successUrl' => 'https://yoursite.com/payment/success', 'failUrl' => 'https://yoursite.com/payment/failed', 'pendingUrl' => 'https://yoursite.com/payment/pending' ] ] ); // إعادة توجيه العميل لصفحة الدفع if (isset($payment['data']['payment_data']['redirectTo'])) { return redirect($payment['data']['payment_data']['redirectTo']); }
التحقق من حالة الدفعة
use Algmaal\LaravelFawaterak\Facades\Fawaterak; $invoiceKey = 'hyU2vcy3USvT5Tg'; // التحقق من نجاح الدفعة if (Fawaterak::isPaymentSuccessful($invoiceKey)) { echo 'تم الدفع بنجاح!'; } else { echo 'الدفعة لم تكتمل بعد'; } // الحصول على حالة الدفعة $status = Fawaterak::getPaymentStatus($invoiceKey); echo "حالة الدفعة: {$status}"; // الحصول على تفاصيل الدفعة كاملة $paymentDetails = Fawaterak::getPayment($invoiceKey);
معالجة Webhooks
الحزمة تتعامل تلقائياً مع webhooks من Fawaterak. يمكنك الاستماع للأحداث:
// في EventServiceProvider use Illuminate\Support\Facades\Event; Event::listen('fawaterak.webhook.received', function ($data) { // معالجة عامة لجميع الـ webhooks Log::info('Webhook received', $data); }); Event::listen('fawaterak.payment.paid', function ($data) { // معالجة الدفعات المكتملة $invoiceKey = $data['invoice_key']; // تحديث قاعدة البيانات، إرسال إيميل، إلخ }); Event::listen('fawaterak.payment.failed', function ($data) { // معالجة الدفعات الفاشلة }); Event::listen('fawaterak.payment.pending', function ($data) { // معالجة الدفعات المعلقة });
طرق الدفع المختلفة
Visa/Mastercard
$payment = Fawaterak::createPayment($customer, $items, $total, 2); // سيتم إعادة توجيه العميل لصفحة الدفع
Fawry
$payment = Fawaterak::createPayment($customer, $items, $total, 3); // سيحصل العميل على كود Fawry للدفع $fawryCode = $payment['data']['payment_data']['fawryCode'];
Meeza (Mobile Wallet)
$payment = Fawaterak::createPayment($customer, $items, $total, 4, [ 'mobile_wallet_number' => '01234567890' ]); // سيحصل العميل على QR Code للدفع $qrCode = $payment['data']['payment_data']['meezaQrCode'];
الخيارات المتقدمة
تخصيص URLs إعادة التوجيه
$options = [ 'redirection_urls' => [ 'successUrl' => 'https://yoursite.com/payment/success', 'failUrl' => 'https://yoursite.com/payment/failed', 'pendingUrl' => 'https://yoursite.com/payment/pending' ] ];
إضافة خصم
$options = [ 'discount_data' => [ 'type' => 'pcg', // أو 'literal' 'value' => 10 // 10% أو 10 جنيه ] ];
إضافة ضريبة
$options = [ 'tax_data' => [ 'title' => 'ضريبة القيمة المضافة', 'value' => 14 // 14% ] ];
الاختبار
تشغيل الاختبارات:
composer test
تشغيل الاختبارات مع تقرير التغطية:
composer test-coverage
المساهمة
نرحب بالمساهمات! يرجى قراءة دليل المساهمة للمزيد من التفاصيل.
الأمان
إذا اكتشفت مشكلة أمنية، يرجى إرسال إيميل إلى mohamedalgamal@gmail.com بدلاً من استخدام issue tracker.
الترخيص
هذه الحزمة مرخصة تحت رخصة MIT.
الدعم
حالة النشر
- ✅ GitHub: متاح ومحدث
- ✅ Packagist: منشور ومتاح
- ✅ Laravel 12: مدعوم ومختبر
- ✅ Auto-Updates: مفعل عبر GitHub Webhooks