I'm always excited to take on new projects and collaborate with innovative minds.

Phone

+20 115 052 9992

Website

https://ibrahimahmed.online/

Social Links

إزاي تبني نظام بوابات دفع (Payment Gateways) احترافي باستخدام مكتبة Saloon في PHP

إزاي تبني نظام بوابات دفع (Payment Gateways) احترافي باستخدام مكتبة Saloon في PHP لو أنت مبرمج PHP بقالك فترة، أكيد جربت "وجع الدماغ" اللي بيحصل لما تيجي تعمل I

إزاي تبني نظام بوابات دفع (Payment Gateways) احترافي باستخدام مكتبة Saloon في PHP
Reading Count: 3

إزاي تبني نظام بوابات دفع (Payment Gateways) احترافي باستخدام مكتبة Saloon في PHP

لو أنت مبرمج PHP بقالك فترة، أكيد جربت "وجع الدماغ" اللي بيحصل لما تيجي تعمل Integration مع بوابات دفع زي Stripe أو PayPal أو حتى بوابات محلية. غالباً بنلاقي الكود مليان Guzzle و HTTP Requests متداخلة، وصيانة الكود ده بتتحول لكابوس مع الوقت. النهاردة هنتكلم عن مكتبة Saloon، اللي غيرت قواعد اللعبة وخلت التعامل مع الـ External APIs حاجة ممتعة ومنظمة جداً.

ليه محتاجين Saloon بدل الطرق التقليدية؟

الطريقة التقليدية بتعتمد على إنك تكتب Classes طويلة عشان تنده على الـ Endpoint، وتفضل تبعت الـ Headers والـ Payload في كل مرة يدوياً. ده بيخلي الكود "Spaghetti" وصعب جداً تعمل له Unit Testing. مكتبة Saloon بتقدم لك مفهوم الـ Object-Oriented Programming (OOP) بشكل كامل عشان تتعامل مع الـ APIs كأنها جزء من مشروعك مش مجرد خدمات خارجية.

الخطوة الأولى: تجهيز البيئة وتثبيت المكتبة

عشان نبدأ، محتاجين نثبت المكتبة عن طريق Composer في مشروع الـ PHP بتاعك:

composer require sammyjo20/saloon

الخطوة الثانية: تصميم هيكل الـ Connector

الـ Connector هو العقل المدبر لأي عملية اتصال. هو المكان اللي بنعرف فيه الـ Base URL والـ Authentication. تخيل إننا بنبني بوابة دفع، فإحنا محتاجين نحدد الـ API Key مرة واحدة بس.


namespace App\Payments;

use Saloon\Http\Connector;

class StripeConnector extends Connector
{
    public function resolveBaseUrl(): string
    {
        return 'https://api.stripe.com/v1';
    }

    protected function defaultHeaders(): array
    {
        return [
            'Authorization' => 'Bearer ' . env('STRIPE_KEY'),
            'Accept' => 'application/json',
        ];
    }
}

الخطوة الثالثة: تعريف الـ Request

دلوقتي محتاجين نعرف كل طلب (Request) لوحده. دي ميزة Saloon العظيمة؛ كل Endpoint بيبقى له Class خاص بيه. ده بيخلي الكود بتاعك نظيف جداً وسهل التعديل.


namespace App\Payments\Requests;

use Saloon\Http\Request;
use Saloon\Enums\Method;

class CreateChargeRequest extends Request
{
    protected Method $method = Method::POST;

    public function resolveEndpoint(): string
    {
        return '/charges';
    }

    public function __construct(protected array $data) {}

    protected function defaultBody(): array
    {
        return $this->data;
    }
}

الخطوة الرابعة: تنفيذ العملية (Execution)

دلوقتي تقدر تبعت الطلب بكل سهولة من أي مكان في الـ Controller بتاعك:

$connector = new StripeConnector(); $request = new CreateChargeRequest(['amount' => 2000, 'currency' => 'usd']); $response = $connector->send($request); if ($response->successful()) { // نجحت العملية! }

نصيحة من أخ لمبرمج زميل

نصيحتي ليك يا بطل: المبرمج الشاطر مش اللي بيعرف يكتب كود بيشتغل، المبرمج الشاطر هو اللي بيعرف يكتب كود "مستدام". Saloon مش مجرد أداة لتوفير وقتك، دي أداة بتخليك تبني Architecture محترم لمشروعك. ابدأ دايماً بتجربة المكتبات الحديثة في مشاريع صغيرة عشان تتقنها، ولما تلاقي إن الكود بقى أسهل في القراءة، هتلاقي إن مستوى احترافيتك زاد تلقائياً.

استخدم الـ Clean Code، ركز على الـ Testing، ومتخافش تجرب تقنيات جديدة بتسهل حياتك المهنية!


Share

Related posts

Jul 18, 2026 • 1 min read
Reading Count: 3
ازاي تخلي كتابة الاختبارات (Testing) ممتعة بـ Pest PHP في لارافيل؟

ازاي تخلي كتابة الاختبارات (Testing) ممتعة بـ Pest PHP في لارافيل؟ بص يا سيدي، كلنا كـ مبرمجين لاراف...

Jul 17, 2026 • 1 min read
Reading Count: 6
إزاي تبقى Instructor تقني شاطر وتوصل المعلومة لأي مبرمج جديد

إزاي تبقى Instructor تقني شاطر وتوصل المعلومة لأي مبرمج جديد بص يا سيدي، كلنا مرينا باللحظة دي. بتكو...

Jul 17, 2026 • 1 min read
Reading Count: 6
إزاي تبني لوحة تحكم (Admin Panel) احترافية لشركات الأثاث الفاخر باستخدام Filament PHP

إزاي تبني لوحة تحكم (Admin Panel) احترافية لشركات الأثاث الفاخر باستخدام Filament PHP تخيل إنك داخل...