استفسار، كيف تتم إضافة وسائل الدفع الإلكتروني إلى صفحات الويب؟

السلام عليكم

أنا مبرمج مبتدئ تعلمت لغة بايثون ولغات برمجة الويب ثم بدأت تعلم برمجة المواقع باستخدام إطار العمل flask ، وبعد أن اطلعت على أفضل الأساليب التي يمكن اتباعها لتطوير المواقع وبعض الثغرات التي علينا الاحتراس منها بدأت البحث عن مشاريع للعمل عليها على موقعي مستقل وخمسات، لكن لا تزال لدي مشكلة، المشكلة تتعلق بالدفع الإلكتروني حيث لم أحاول الاقتراب من هذا المجال لسببين: الأول أنه لا يمكنني تجريب ما أتعلمه ببساطة، والثاني أن معظم وسائل الدفع الإلكتروني المعتمدة في المواقع محظورة في بلدي بسبب العقوبات الاقتصادية

هل يمكنكم أن تشرحوا لي بشكل مبسط كيف يتم الدفع الإلكتروني في مواقع الويب باستخدام الوسائل الشائعة عالمياً مثل بايبال وبايير وغيرها؟ وكيف تتم برمجة الصفحات المخصصة للدفع (أو إضافة أزرار الدفع إلى الصفحات) ؟


إليك الأمر كيف يحدث عموما:

  1. يتم إنشاء معاملة بمعرف ID على موقع الويب وتربط هاته المعاملة مع طلبية
  2. يتم التواصل مع أطراف ثالثة موفرات دفع Payment Providers على غرار Stripe و PayPal لإنشاء معاملة Transaction بالمعرف المعطى تخص المعاملة التي تتم عبر المنصة من أجل معالجة الدفع
  3. تعالج المعاملة على منصتك بعد التأكد من تمام نجاحها على بوابة الدفع أو موفر خدمة الدفع

معالجة الدفع تتغير من منصة لأخرى، فبعض بوابات الدفع تعالج فيها العمليات خلال طلبيات HTTP مع موفر الدفع داخل منصتك دون أن يخرج المستخدمون من منصتك، وهاته قد تلجئ أحيانا لأساليب أمنية أكبر تشديدا مثل عمل Tokenize لمعلومات الدفع وإستقبال رمز Token بدل معلومات الدفع -مثل بيانات البطاقة- على الخادم الخاص بك غرض معالجة الدفع وهكذا وهاته تعرف بـ in-site gateways. أما البعض الآخر فتوفر صفحة Checkout مبنية Built-in تقوم أنت بتوجيه المستخدمين إليها لمعالجة الدفع ثم العودة بعد إتمام الدفع وهاته تعرف بـ off-site gateways، ويوجد بعض البوابات التي توفر الأمرين معا على اختيار.

ولذلك تنقسم العملية إلى جزئين أساسين:

  1. القيام بعملية الدفع Purchase. مثال: ملئ المستخدمين لبيانات الدفع ثم التوكيد على اقتطاع المبلغ كذا من البطاقة.
  2. معالجة الدفع Complete Purchase. مثال: التحقق من أن المستخدمين قاموا بعملية الدفع ثم القيام بإجراء معين، مثال: ترقية الإشتراك أو شحن المنتج.

هاتين العمليتين تكونان متزامنتين في بوابات الدفع In-site، لأنك تعالج الدفع من خلال منصتك ويمكنك تنفيذ أي شيفرة اضافية (ترقية خطة الاشتراك مثلا) بعد التوكيد على الدفع (اقتطاع مبلغ من البطاقة مثلا).

أما في بوابات الدفع Off-site فتكونان متتاليتين، أين يتم توجيه المستخدم خارج المنصة لمعالجة الدفع (اقتطاع مبلغ من البطاقة مثلا) ثم إعادة توجيهه لمسار آخر يدعى callback url يتم فيه معالجة المعاملة بعد الدفع (ترقية خطة الاشتراك مثلا).