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

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

1 - شباك التذاكر أتول سيغما 10 ؛ 2 - التطبيق غير مدعوم ، التكامل مع الموظفين
3 - مكتب التذاكر Atol 11F ؛ 4 - محطة Verifone VX820 ؛ 5 - محطة PAX S90
6 - شباك التذاكر Shtrikh-Nano-F ؛ 7 - مكتب التذاكر Atol 15F ؛ 8 - شباك التذاكر Bar-ON-LINE
9 - ماسح الباركود ؛ 10 - محطة PayMe ؛ 11 - مكتب النقدية MSPOS-K
لا يمكن للهاتف الذكي نفسه طباعة الإيصالات النقدية وقبول الدفع عن طريق بطاقة الائتمان ، لذلك هناك حاجة إلى مكاتب النقد ومحطات الدفع. يلزم وجود ماسح ضوئي للجهاز إذا كانت كاميرا الهاتف الذكي غير مناسبة لاستبدال الماسح الضوئي للباركود بالكامل.
كل رؤية العين
حتى قبل إصدار Cash desk MySklad ، قررنا أن الكاميرا عبارة عن كاميرا ، ولكن قد يكون لدى المستخدم ماسح ضوئي للباركود في الأجهزة يريد استخدامه.
يمكننا العمل مع الماسحات الضوئية في شكل HID عادي (جهاز واجهة بشرية). بعد قراءة الباركود ، نحصل على سلسلة من الأحرف من الماسح الضوئي. ربما هذا هو أسهل التكامل. أبسط ، إن لم يكن اثنين "لكن".
أولاً ، كونها "خارج الصندوق" قد لا ترسل الماسحة الضوئية ما ينبغي عليها. ثانياً ، لا تشير جميع نماذج الماسحة الضوئية إلى أن قراءة الباركود قد اكتملت.
يتم حل "لكن" الأول ببساطة: إذا بدأ الماسح الضوئي في إرسال ما لا ينبغي أن يفحصه ، فأنت بحاجة إلى العثور على تعليمات الماسح الضوئي وتكوينه باستخدام رموز باركود الخدمة. عادةً ما تكون التعليمات كاملة على الورق أو في شكل إلكتروني من الشركة المصنعة. بعد وصف الإعدادات المتاحة ، فإنه يحتوي على رموز شريطية تفحص بالتسلسل المطلوب. حتى تتمكن من تكوين الماسح الضوئي حسب حاجتك.
الثانية "لكن" هي مشكلة أكثر خطورة. حديقة الحيوان من الماسحات الضوئية واسعة النطاق ، وليس كل الأجهزة تظهر نهاية سطر القراءة. هناك خياران لحل هذه المشكلة. الأول هو استخدام نفس الرموز الشريطية للخدمة لتعيين إعداد ينقل حرف فاصل الأسطر بعد القراءة. إذا لم تكن محظوظًا بهذا النموذج ولم يكن الخيار الأول مناسبًا ، يمكنك ضبط لاحقة الماسح الضوئي. باستخدام الرموز الشريطية للخدمة ، أضف حرفًا في نهاية تسلسل القراءة يمكنك من خلاله التعرف على نهاية الإدخال.
نحن ربط مكتب النقدية
لذلك ، يوجد التطبيق ، يتم توصيل ماسح الباركود ، ولكن لا يزال يتعذر علينا طباعة الشيك. لهذا نحن بحاجة إلى شباك التذاكر نفسه. في MySklad ندعم KKT Atol و Shtrikh ، وكذلك MSPOS ، وسأحكي عن ذلك في مقال آخر.
عندما يتعلق الأمر بالتكامل مع أمين الصندوق ، بدأت كمية كود الحديد في النمو بلا هوادة. قررنا وضع كل العمل مع المعدات المتصلة في مكتبة منفصلة. أصبح تطبيق تسجيل النقد نفسه عميلًا يسحب مكتبة عبر المهد.
وفقًا للطراز ، يمكنك الاتصال عبر USB أو Bluetooth أو Wi-Fi. وأيضًا وفقًا لبروتوكول UART ، وهو عبارة عن اقتران صارم للتسجيل النقدي وجهاز Android في حالة واحدة. أيضًا ، يختلف بائعون مختلفون بشكل جذري في تنفيذ توصيل العميل بالخروج. غلاف Java على مكتبات .so الأصلية ، إضافة على مكتبة jPOS مفتوحة المصدر وحتى النواة المالية التي يتم الوصول إليها من خلال خدمة مع واجهة AIDL (لغة تعريف واجهة Android).
في المحاولات الأولى لدمج جهاز واحد من مصنع واحد ، كنا راضين عن مخطط تفاعل جهاز KKM:

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

T عبارة عن غلاف برنامج تشغيل منخفض المستوى
إدارة الأجهزة يخفي تنفيذ الاتصال من العميل. يكفي إنشاء معالج اتصال ، مما يتطلب منك تحديد جهة تصنيع أمين الصندوق ونوع الاتصال وإعداد الإعدادات. في حالة وجود اتصال ناجح ، يعود إلينا كائن يقوم بتنفيذ واجهة KKMDevice.
يخفي KKMDevice تفاصيل العمل مع برنامج تشغيل بائع فردي. تحتوي مغلفات كل مصنع معين على رابط إلى برنامج التشغيل T والمفوضين الذين يقومون بتطبيق مجموعات معينة من الوظائف. على سبيل المثال ، FiscalDelegate و NonFiscalDelegate و DeviceInfoDelegate.
سألاحظ بعض نقاط التكامل العامة:
- تأكد من ترقب تحديثات البرنامج. بالإضافة إلى إصلاحات الأخطاء وزيادة السرعة ، تحدث قفزات عالية الجودة غالبًا. صدقوني ، فإن الانتقال من أوامر HEX ذات المستوى المنخفض إلى واجهة تشبه Java ، ومنه إلى مهام json يسهل العمل إلى حد كبير ويجعل الكود أكثر قابلية للفهم.
- طوال مدة العمليات ، قم بحظر واجهة المستخدم بشريط التقدم. تشير العلامة إلى أن زر "الدفع" الذي تم الضغط عليه عدة مرات متتالية باستخدام CCP متصل هو نذير للنقد في تعقب المهام.
- تأكد من إجراء أي عمليات باستخدام CCP بشكل متسلسل. يمكن لسباق التدفق "الناجح" شنق KKT ، في حين أن شريط التقدم يدور في نفس الوقت هو أيضًا تطبيق.
- إذا كنت بحاجة إلى تكوين نقل البيانات إلى مشغل البيانات المالية ، فإنني أنصحك بتحديد الحد الأقصى لعدد المعلمات من قائمة محددة مسبقًا. لأن إدخال البيانات يدويًا باستخدام محرك مالي عسكري يعد طريقة رائعة لإطلاق النار على قدمك ، ولكن من جانب المستخدم عند استخدام التطبيق.
محرك الأقراص المالية هو جهاز يقوم بجمع ومعالجة المعلومات حول عمليات التداول. قد يكلف أكثر من شباك التذاكر نفسه. إذا لم يتم تكوين محرك الأقراص بشكل صحيح ، فقد تكون عملية التصفير ضرورية. للقيام بذلك ، افتح شباك التذاكر ، وعلى الفور يطير الضمان.
كسب
لذلك ، لدينا واجهة مكتب النقدية ، يمكننا مسح البضائع عن طريق الباركود وطباعة الشيك. يبقى لإضافة القدرة على الدفع عن طريق البطاقة.
تطبيقنا يدمج دعم محطات PayMe و Inpas. السابق متصل عبر البلوتوث ، بينما يمكن توصيل الأخير عبر USB أو عبر Wi-Fi.
يشبه نظام التوصيل لمحطات الدفع توصيل CCP ، ما لم يكن هناك حاجة إلى إذن إضافي.
ولكن هناك اختلافات خطيرة - في التعامل مع السلوك غير الطبيعي للجهاز. لذلك في CCP ، أي عملية مرت بنجاح أو لا. إذا فشلت العملية ، يمكنك إعادة المحاولة أو إلغاؤها. كل شيء آخر يحدث دون تدخل.
في حالة المحطات الطرفية ، من الضروري مراقبة الانقطاعات المحتملة لعملية الدفع في أي خطوة. قد لا يتم اعتبار البطاقة المصرفية أو لن يكون هناك أموال كافية على البطاقة. لا يمكنك انتظار استجابة من البنك أو الانتظار ، ولكن الحصول على رمز HTTP 5xx ردا على ذلك. وفي أي من المراحل ، قد يسقط الاتصال ببساطة.
علاوة على ذلك ، لن تكون قادرًا على إصدار تطبيق يعمل بشكل كاف مع دعم Inpas الطرفي بدون شهادة. تتضمن الشهادة التحقق من توافر وتشغيل جميع عمليات المستخدم في الجهاز الطرفي ومعالجة أحداث مثل انقطاع الاتصال بالشبكة بعد أن يكون المشتري قد قام بالفعل بتوصيل البطاقة بالمحطة.
عند اختبار الجهاز ، تحتاج إلى التفكير في أي بنك أو نظام دفع مقترن به. في بعض الحالات ، حتى في وضع التطوير ، يتم استرداد الأموال فقط من خلال الحساب الشخصي للحساب ، وليس تلقائيًا.
يجب أيضًا أن تتذكر أن البنك يشارك أيضًا في عملية الدفع. على سبيل المثال ، قد يحدث عدم وجود فحص قسيمة إذا لم يكن هناك إعداد ضروري في الحساب الشخصي للبنك.
استنتاج
يعد توصيل الأجهزة المختلفة بتطبيق Android عملية معقدة ولكنها مثيرة للاهتمام. تحدثنا عنه ككل ، ووصف جميع العقبات ، بالطبع ، غير واقعي.
إذا كان لديك أي أسئلة ، سأكون سعيدًا بالإجابة عليها في التعليقات. إذا تمت كتابة الأسئلة في مقالة منفصلة ، فاكتب :)