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

لفهم الشروط ، إليك بعض التشبيهات مع عالم المدفوعات المالية:Blockchain هي قاعدة بيانات غير مركزية (في الحالة المثالية) تخزّن معلومات حول العناوين والمعاملات والأرصدة. يتكون من كتل ، كل منها يحتوي على كمية محدودة من المعلومات. يتم إنشاء الكتل بفضل عمال المناجم من خلال حسابات كثيفة الاستهلاك للطاقة (PoW) أو إثبات للمخاطر (PoS). يحتوي كل كتلة التالي على قائمة المعاملات الجديدة ورابط إلى السابقة. كل cryptocurrency لديه blockchain الخاصة به.
التاجر - هو نفسه مالك المتجر الذي يستأجر نظام دفع لاستلام المدفوعات من المستخدمين النهائيين.
المحفظة هي نفسها الحساب في العالم المالي التقليدي.
المعاملة - سجل في blockchain تم إرسال الأموال من محفظة إلى أخرى. يتكون رصيد المحفظة من حجم المعاملات.
العنوان هو نفسه تفاصيل الحساب. يتمثل الاختلاف في أن معظم سلاسل الحظر تسمح لك بإنشاء عدد لا حصر له من العناوين لمحفظة واحدة.
المعاملة المؤكدة هي معاملة يتم بعدها إنشاء عدد آمن من الكتل. كتلة واحدة تساوي تأكيد واحد. إذا لم تتلق المعاملة تأكيدات من 4-8 ، فلا تعتبر مكتملة.
نظام الدفع - برنامج يوفر قبول المدفوعات ومعالجتها في عملة مشفرة. روابط وتجميع الطلبات والمدفوعات والمعاملات والإرجاع والتجديد والسحب وغيرها من المعلومات. كما يُعلم النظام التاجر بالتغييرات في سياق الطلبات والمدفوعات ، وليس القيود والمعامالت.
Explorer - خدمة أو موقع مستعرض للبيانات التي تدخل في blockchain. باستخدام هذه الخدمة ، يمكنك بسهولة الحصول على معلومات حول العناوين والمعاملات والكتل.
العقدة هي جهاز كمبيوتر يتم تخزين نسخة من قاعدة البيانات بأكملها (blockchain) عليه.
مخطط العمل العام ومتطلبات محتوى صفحة الدفع
تتم دورة الدفع على النحو التالي: على موقع المتجر ، يختار المشتري المنتج وعملة الدفع. يقوم النظام بإعادة توجيه المستخدم إلى صفحة الدفع. أنه يحتوي على المعلومات التالية: العملة ، العنوان ، تعليقات إعلامية. يرسل المستخدم المبلغ المطلوب إلى العنوان المحدد ويتوقع عددًا كافًا من تأكيدات الشبكة للتعرف على الدفع بنجاح. أثناء الانتظار ، يمكن للمشتري مراقبة حالة الدفع دون مغادرة الصفحة على موقع المستكشف. بمجرد قبول الدفع ، تتم إعادة توجيه المستخدم إلى صفحة الدفع الناجحة على موقع البائع.

تنقسم عملية الدفع إلى عدة مراحل. كل واحد منهم لا يتطلب إجراء المستخدم ، باستثناء التحويلات المالية المباشرة. سيناريو قياسي ناجح:
- على موقع البائع ، يختار المستخدم طريقة الدفع B2BinPay والعملة
- يرسل عنوان IP الخاص بالبائع البائع طلبًا لإنشاء أمر دفع جديد ، ويتلقى رابطًا إلى صفحة الدفع ردًا على ذلك
- يعيد المستخدم التوجيه إلى صفحة الدفع التي تحتوي على معلومات: العملة والمبلغ والعنوان والحقول الإضافية ، إذا لزم الأمر
- يدفع المستخدم للشراء
- يكتشف النظام أن معاملة جديدة قد وصلت إلى العنوان وتنتقل الصفحة إلى حالة التتبع
- تتم مراقبة حالة المعاملة ويتم تحديث المعلومات على الصفحة حتى يتم الوصول إلى عدد آمن من التأكيدات.
- تتم إعادة توجيه المستخدم إلى صفحة الدفع الناجحة على موقع البائع
وفقًا لذلك ، يمكن أن تكون صفحة الدفع في حالتين: عرض التفاصيل وانتظار التأكيد. عند عرض التفاصيل ، يمكنك إدخال العنوان بطريقتين: مسح رمز الاستجابة السريعة أو نسخ العنوان في نموذج نصي. بالإضافة إلى المعلومات الأساسية ، سنضيف تعليمة مصغرة في شكل نص ، والتي ستخبرك بكيفية الدفع ، ومكان تنزيل تطبيق المحفظة وكيفية شراء العملة. بالإضافة إلى هذه الحقول ، هناك حقل آخر ، يعتمد وجوده على العملة المختارة. في بعض الأحيان ، من أجل ربط المعاملة بشكل صحيح ، أمر الدفع والمشتري ، من الضروري أن تعرف ليس فقط العنوان ، ولكن أيضًا المعلومات الإضافية. على سبيل المثال ، بالنسبة لعملة Ripple ، عند الإرسال ، يجب عليك تحديد العلامة الوجهة (تعليق على المعاملة).
بالنسبة لأولئك الذين يقومون بنسخ العنوان في نموذج نصي ولا يقومون بمسح رمز الاستجابة السريعة ، تمت إضافة زر نسخ. أيضًا ، يجب أن يكون شعار العملة موجودًا على الصفحة ، نظرًا لأن العديد من الأشخاص يتعرفون على العملة بصريًا ، حسب شكل ولون الشعار ، وليس حسب تسمية الحروف.
يحدث تغيير الحالة في الوقت الذي يتم فيه اكتشاف معاملة واردة إلى عنوان إرسال الفواتير. في هذه اللحظة ، تختفي التفاصيل ، حيث لم تعد مطلوبة ؛ ينتقل المستخدم إلى وضع الاستعداد ، وتحتاج الصفحة إلى تدفق مستمر للمعلومات حول حالة المعاملة. يمكنك الآن العثور على الصفحة: المهلة حتى اكتمال المعاملة ، والعدد الحالي للتأكيدات ، وتعليق قصير يوضح الإجراءات الإضافية.
يجب أن تكون الصفحة سهلة الفهم وبديهية وفي نفس الوقت غنية بالمعلومات. بالنسبة للمشترين ذوي الخبرة ، يجب التركيز على العنوان والمبلغ.
من المتطلبات المذكورة أعلاه ، تم الحصول على تخطيط للصفحة المستقبلية.

الخلفية
الخيار الأول لتنفيذ الواجهة الخلفية هو الاستغناء عنها! عند إنشاء صفحة الدفع ، يُعرف مقدمًا إلى عنوان إرسال الأموال. يمكنك تلقي معاملات جديدة على هذا العنوان من المستكشف باستخدام أدوات JS. وبالتالي ، فإن المهمة هي كتابة الموصلات إلى المستكشف واستجوابها بشكل دوري. قد يبدو الرسم التخطيطي للفصل الثابت كما يلي:
الايجابيات: لا يوجد أي عبء على قدراتنا ، إنه سهل التنفيذ ، ولا توجد تهديدات أمنية محتملة.
السلبيات: مصادر غير موثوقة واستلام معلومات جديدة في الوقت المناسب ، وصعوبات في تقديم تحديثات قاعدة الكود للعملاء النهائيين (التخزين المؤقت غير المنضبط). ناقص حاسم - العديد من العملات ليس لديها مستكشف مستقر مع واجهة برمجة التطبيقات المتقدمة.
الخيار الثاني (العمل) هو الخدمة المصغرة الخاصة به ، والتي تتلقى المعلومات مباشرةً من مجموعة العقد وتصفيتها وتوزعها عبر صفحات الدفع. سيؤدي استخدام "أحداث جانب الخادم" على العميل إلى تقليل التكرار وحفظ حركة المرور. تتوافق SSE مع حالة الاستخدام ، نظرًا لأن الصفحة غير فعالة في سلوكها - فهي تقبل المعلومات الجديدة فقط.
سلبيات: الكثير من تكاليف التنفيذ ، تحميل إضافي على المعدات.
المميزات: مستوى عالٍ من الموثوقية والاستقلالية عن خدمات الجهات الخارجية ؛ سياق الطلب وليس المعاملة.
مخطط الدائرة:

عندما تفتح صفحة الدفع في متصفح العميل ، يتم إرسال طلب لإنشاء اتصال SSE إلى الواجهة الخلفية غير المتزامنة للخدمة المجهرية. يشير الطلب إلى العنوان الذي سيتم تتبعه ، ومقدار الدفعة ، وعمرها وغيرها من المعلمات الثانوية. في الخلفية ، يتم تخزين هذا في تخزين noSQL في الذاكرة. في كل مرة تظهر كتلة جديدة على أي عقدة blockchain ، يتلقى التطبيق ويستخرج معلومات مفيدة منه على العناوين والمعاملات المخزنة في قاعدة البيانات. إذا كانت الكتلة التالية مفيدة ، فسيتم إرسال التحديثات للعملاء. يتم إغلاق الاتصالات بمبادرة الخادم عند تلقي تأكيدات كافية أو انتهت صلاحية TTL.
وبالتالي ، فإن الخلفية تؤدي عمليات كثيفة الاستخدام للموارد وتحرك حركة المرور فقط عند وصول معلومات جديدة إلى العقدة ، ولا يوجد "استجواب" دوري للمعلومات الجديدة. بفضل عدم التزامن ، نحصل على سرعة عالية مع آلاف الاتصالات المتزامنة.
مع العلم أن التأخير في استلام معلومات جديدة خلال ثانية واحدة بالنسبة للعملات المعدنية مع PoW لا يكاد يذكر ، والحد الأدنى للقياس الأفقي لمثل هذا النظام سوف يعطي زيادة كبيرة في الإنتاجية. في الأيام النشطة بشكل خاص ، مثل يوم الجمعة الأسود ، يزداد الحمل. في حالة فشل النظام أو خلل فني من الناحية الفنية ، يكون لدى العميل حالة احتياطية حيث تظل الصفحة في وضع عرض التفاصيل إلى الأبد. بالنسبة إلى عملات PoS ، يمكن تخطي خطوة مراقبة عدد التأكيدات ، لأن سرعة المعاملة غالباً ما تكون من 2 إلى 5 ثوان.
يكون الخيار الثالث لتنفيذ الواجهة الخلفية مختلطًا ، عند استخدام تفاعل SSE أو HTTP مع المستكشفين ، وفقًا لسرعة معاملة blockchain والمعلومات حول التوافر الحالي لخدمات الطرف الثالث ، هذا هو الأكثر فعالية وتستغرق وقتا طويلا في نفس الوقت.
تقنية الواجهة الأمامية المناسبة للمهمة هي vue.js مع تقديم التصريح والقدرة على إنشاء العديد من حالات المكونات. إنها مكتبة خفيفة الوزن ذات بنية أنيقة وتعديل DOM تفاعلي. مصدر البيانات هو اتصال SSE الذي يفتح عند تهيئة المكون.
تصميم

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