النشرة الأسبوعية
📬 نشرة المخبر الأسبوعية: خلاصة التقنية في خمس دقائق، كل أحد صباحاً.انضم مجاناً
سؤال مقابلة عمل

Idempotency: حماية المدفوعات من التكرار عند تحديث الصفحة

هل تساءلت يوماً ماذا يحدث لو ضغطت زر الدفع ثم حدثت الصفحة؟ اكتشف كيف تضمن عدم سحب أموالك مرتين.

· 3 دقائق قراءة · المخبر المعلوماتي

ماذا يحدث عند تحديث صفحة الدفع؟

تخيل أنك تدفع ثمن سلعة تحبها عبر الإنترنت. تضغط زر 'ادفع الآن' بحماس، لكن فجأة، وبسبب بطء في الشبكة أو حتى عن طريق الخطأ، تقوم بتحديث الصفحة (Refresh). ماذا تتوقع أن يحدث لأموالك؟ هل ستتم العملية مرة واحدة فقط، أم أنك قد تواجه مشكلة غير متوقعة؟

كثيرون قد يعتقدون أن العملية إما ستتم بشكل طبيعي لمرة واحدة، أو ستظهر رسالة خطأ وتتوقف. لكن الحقيقة قد تكون مختلفة تماماً وأكثر تعقيداً. فبدون تصميم دقيق ومحكم لنظام الدفع، هناك احتمال كبير أن يتم خصم المبلغ من حسابك مرتين. هذه المشكلة، التي قد تبدو بسيطة، هي كارثة حقيقية للعميل وللشركة على حد سواء.

مفهوم Idempotency: ضمان نتيجة واحدة

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

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

حلول سريعة لتجنب تكرار الدفع

للتخفيف من هذه المشكلة وحماية المستخدمين، توجد بعض الحلول الأولية التي يمكن للمطورين تطبيقها بسهولة. أحد هذه الحلول هو تعطيل زر الدفع (Disable) فور الضغط عليه لأول مرة. هذا يمنع المستخدم من النقر عليه مجدداً بشكل متعمد أو غير مقصود، وبالتالي يقلل من فرصة إرسال طلب دفع مكرر من جانب المتصفح.

حل آخر فعال هو توجيه المستخدم مباشرة إلى صفحة تأكيد مختلفة بعد إتمام الدفع بنجاح. بهذه الطريقة، حتى لو قام بتحديث الصفحة، فلن يكون على صفحة الدفع الأصلية التي قد تسبب تكرار العملية. بدلاً من ذلك، سيكون على صفحة تخبره بأن دفعته قد تمت، أو تعرض له تفاصيل الطلب. لكن هذه الحلول، على بساطتها، لا تغطي كل السيناريوهات المعقدة، مثل انقطاع الاتصال بالإنترنت أثناء معالجة الطلب أو مشاكل الخادم التي قد تؤدي إلى إعادة إرسال الطلبات.

الحل الاحترافي: معرف العملية الفريد (Unique Transaction ID)

الحل الأكثر قوة واحترافية لمعالجة مشكلة تكرار الدفع يعتمد على مفهوم 'معرف العملية الفريد' أو Unique Transaction ID. تخيل أن كل عملية دفع هي بصمة إصبع فريدة لا يمكن أن تتكرر لأي عملية أخرى. هذا المعرف هو مفتاحنا لضمان أن كل دفعة تتم مرة واحدة فقط.

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

إذا كان المعرف جديداً ولم يسبق رؤيته أو معالجته بنجاح من قبل، تتم معالجة الدفعة كالمعتاد. أما إذا كان المعرف قد شوهد من قبل وتمت معالجة الدفعة بنجاح بالفعل، فإن النظام يتجاهل الطلب المكرر أو يرسل رسالة تفيد بأن العملية قد تمت بالفعل. هذا يضمن أن الدفعة الواحدة لا تتم إلا مرة واحدة، بغض النظر عن عدد مرات إرسال الطلب، حتى لو كانت هناك محاولات متعددة من المستخدم أو النظام.

لماذا هذا المفهوم مهم جداً للمطورين؟

فهم هذه التفاصيل الدقيقة في تصميم الأنظمة وكيفية تطبيق حلول قوية لها هو ما يميز المطور المتمكن والمهندس الشاطر. إنه لا يبني فقط نظاماً يعمل، بل يبني نظاماً موثوقاً به يحمي المستخدمين والشركات من الأخطاء المكلفة التي قد تؤثر على سمعتها ومواردها المالية. هذا النوع من التفكير العميق في تصميم الأنظمة هو جوهر بناء تطبيقات آمنة ومستقرة في عالمنا الرقمي المتطور.

ماذا يعني هذا لك؟

  • تأكد من تعطيل زر الدفع بعد النقر الأول لمنع التكرار المباشر.
  • وجه المستخدم لصفحة تأكيد مختلفة بعد إتمام الدفع بنجاح لتجنب التحديثات غير المقصودة.
  • استخدم 'معرف العملية الفريد' (Unique Transaction ID) لكل معاملة دفع لضمان عدم تكرارها.
  • افهم مفهوم Idempotency جيداً لضمان موثوقية أنظمتك وحماية المستخدمين.

اقرأ أيضاً

انضم لنشرة المخبر

خلاصة التقنية في خمس دقائق، كل أحد صباحاً.

الجنس
ماذا يهمك؟ (اختر ما شئت)

رسالة واحدة في الأسبوع، وإلغاء الاشتراك بضغطة. نستخدم بياناتك فقط لإرسال النشرة المناسبة لك، ولا نشاركها مع أحد. الخصوصية