دليلك الشامل لربط بوابات الدفع (Payment Gateways) مع لارفيل (Laravel)
أهلاً بيك يا صديقي المبرمج. أكيد لو شغال في مجال تطوير الويب (Web Development)، جالك في وقت من الأوقات عميل وقالك "عايز أبيع منتجاتي على الموقع"، وهنا بتبدأ رحلة البحث عن إزاي تربط بوابات الدفع (Payment Gateways) زي سترايب (Stripe) أو باي موب (Paymob). الحقيقة الموضوع في البداية ممكن تحسه معقد ومخيف بسبب مسئولية الفلوس والبيانات الحساسة، لكن الحقيقة إنه أبسط مما تتخيل لو فهمت الـ Flow ماشي إزاي.
Table of contents [Show]
ليه بنحتاج نربط بوابات دفع في لارفيل (Laravel)؟
لارفيل بتقدم بيئة عمل قوية جداً، ومع وجود أداة زي Laravel Cashier للتعامل مع الاشتراكات (Subscriptions) وسترايب (Stripe)، الموضوع بقى أسهل بكتير. لكن فيه تحديات زي تأمين البيانات (Data Security) والتعامل مع الـ Webhooks عشان نضمن إن الطلب اتدفع فعلاً قبل ما نسلم العميل المنتج أو الخدمة.
خطوات الربط مع سترايب (Stripe) في لارفيل
سترايب هي المعيار العالمي حالياً، والربط معاها بيمر بـ 3 خطوات أساسية:
1. تثبيت الحزمة (Package):
composer require laravel/cashier
2. إعداد الـ .env:
STRIPE_KEY=pk_test_...
STRIPE_SECRET=sk_test_...
3. إنشاء الـ Checkout Session في الـ Controller:
public function checkout(Request $request) {
return $request->user()->checkout(['price_id' => 'price_123'], [
'success_url' => route('checkout-success'),
'cancel_url' => route('checkout-cancel'),
]);
}
التعامل مع الـ Webhooks لتأكيد الدفع بأمان
أكبر غلطة بيقع فيها المبرمجين المبتدئين هي الاعتماد على الـ Client-side عشان يتأكدوا إن الدفع تم. يا بطل، ده أكبر خطر أمني! لازم تعتمد على الـ Webhook. الـ Webhook هو رسالة بتبعتها بوابة الدفع (سواء Stripe أو Paymob) للسيرفر بتاعك بتقوله فيها: "يا لارفيل، العميل ده دفع بنجاح، تقدر تفتحله الخدمة".
في لارفيل، بننشئ Route خاص للـ Webhook وبنتأكد من صحة التوقيع (Signature Verification) عشان نضمن إن الطلب جاي فعلاً من بوابة الدفع ومش تلاعب من حد.
الربط مع باي موب (Paymob) للمشاريع في مصر والشرق الأوسط
باي موب (Paymob) هي الخيار المفضل في مصر. هي مش مدعومة natively زي سترايب في Cashier، فبتحتاج تستخدم الـ API الخاص بيهم (REST API). الخطوات باختصار:
- الحصول على الـ Authentication Token من خلال الـ API Key الخاص بحسابك.
- إنشاء طلب (Order ID) على سيرفرات باي موب.
- الحصول على الـ Payment Key لاستخدامه في عرض صفحة الدفع (iFrame).
- التعامل مع الـ Callback URL اللي بتبعت عليه باي موب حالة العملية (Transaction Status).
نصيحة من أخ لمبرمج
بص يا هندسة، الربط مع بوابات الدفع مش بس كود، ده "أمانة". دايماً اتأكد إنك بتستخدم الـ Environment Variables في ملف الـ .env ومتحطش الـ API Keys في الكود نفسه (Hardcoded). دايماً جرب في الـ Sandbox أو الـ Test Mode لحد ما تتأكد 100% إن كل حالة (نجاح، فشل، إلغاء) متغطية بالكود بتاعك. الممارسة هي اللي هتخليك متمكن، فجرب تعمل مشروع صغير (موقع تجارة إلكترونية بسيط) وربطه بالـ Test mode بتاع بوابة دفع.
بالتوفيق في مشاريعك الجاية، ولو وقفت قدامك حاجة في الـ Integration، التوثيق (Documentation) بتاع بوابات الدفع هو صديقك الصدوق!