مرحبا! في بداية الصيف ، قمنا بتحديث Tinkoff Acquiring SDK وأصدرنا الإصدار الثاني لنظامي Android و iOS. Tinkoff Acquiring SDK هي مكتبة مفتوحة المصدر لمنصات الأجهزة المحمولة. من الملائم قبول المدفوعات في التطبيقات معها. في هذا المقال ، أود أن أخبرك ما هو رائع لأصحاب الأعمال التجارية عبر الإنترنت ومشتريهم.
ما تم تحسينه
المشاكل التي كانت في الإصدار السابق:
- عمارة المكتبة المعقدة. لهذا السبب ، أمضى المطورون الكثير من الوقت في البحث عن الأخطاء وإصلاحها.
- مكتبة API زائدة عن الحاجة. غالبًا ما يرتكب المطورون أخطاء عند دمج SDK.
- لم يتم اتباع متطلبات Apple Pay و Google Pay لإعداد طرق الدفع هذه.
ما فعلناه لإصلاح هذا ، وما الجديد أيضًا:
- لقد أعدنا كتابة رمز نظامي التشغيل بالكامل. إعادة هيكلة الكود وإضافة العديد من الميزات المفيدة. تعمل المكتبات الآن في Kotlin و Swift.
- تمت إضافة نظام الدفع السريع. يمكنك الدفع عبر SBP باستخدام رمز QR أو عبر "الحساب الفوري" - بالنقر فوق الزر الموجود على شاشة الدفع.
- نحن نؤيد الكل في واحد الحل. كل شيء في مكان واحد: ربط البطاقات ، والدفع بدون تلامس ، والمدفوعات السريعة باستخدام رمز الاستجابة السريعة.
- تحديث التصميم. تمت إضافة سمة داكنة. لكننا لم ننسى تخصيص السمة على Android والتي كانت في الإصدار السابق.
- نستمر في دعم الإصدار السابق. فكرنا في جميع العملاء ، ولم نخدع العملاء القدامى والجدد - تعمل SDK بنفس الطريقة في الإصدارين الأول والثاني. ومع ذلك ، نوصي بالترقية للاستفادة من الميزات الجديدة.
والآن عن كل شيء بالترتيب.
ما المقصود بـ Tinkoff Acquiring SDK؟
يدمج SDK الحصول على الإنترنت في أي تطبيق للهاتف المحمول وهو مناسب للشركات التي تقبل المدفوعات عبر الإنترنت في التطبيقات: المتاجر عبر الإنترنت ، والأسواق ، وشركات السفر ، والتنظيف ، ومواقع البث ، والتبادلات المستقلة.
يساعد الحل العملاء على ربط بطاقة في التطبيق ودفع ثمن المشتريات ببضع نقرات ، ويساعد البائعين على جعل التطبيق أكثر فاعلية وعدم فقدان العملاء في مرحلة الخروج.
إليك ما يمكن لـ SDK فعله:
مسح البطاقات المصرفية والتعرف عليها باستخدام الكاميرا و NFC وحفظها. يربط المشتري البطاقة مرة واحدة في التطبيق ، ثم يُدخل رمز CVC فقط لدفع ثمن المشتريات.
اقبل جميع أنواع المدفوعات في التطبيق: عن طريق البطاقات المصرفية ، من خلال حسابك الشخصي tinkoff.ru و Apple Pay و Google Pay.بما في ذلك المدفوعات المتكررة - أي تلقائيًا ، عن طريق الاشتراك ، دون إعادة إدخال التفاصيل.

الدفع باستخدام نظام الدفع السريع (FPS). تساعد SDK في قبول المدفوعات عبر UBS: يدفع المشتري ثمن البضائع باستخدام رمز الاستجابة السريعة ، الذي يحتوي على جميع المعلومات حول الطلب. دعنا ننفذ سيناريوهين: الدفع في تطبيق العميل والفواتير.
دعم الصراف عبر الإنترنت والضرائب. كل شيء يتوافق مع FZ-54.
تخصيص نافذة الدفع لتصميم التطبيق. متوفر في تطبيقات Android.
تحسينات معمارية
مشكلة. تم تصميم بنية رمز SDK بطريقة تجعل من الصعب وتستغرق وقتًا طويلاً للحفاظ على وظائف جديدة وتنفيذها.
القرار. قام مطورو SDK بإعادة هيكلة كاملة للرمز القديم للمكتبات:
- تمت كتابة الكود باللغات الحديثة Kotlin و Swift. أدى ذلك إلى تسريع عملية التطوير وساعد في بناء بنية ملائمة يسهل صيانتها وتوسيعها: نقدم ميزات جديدة بشكل أسرع ، ويتلقى العملاء التحديثات بشكل أسرع. في الإصدار الأول ، تمت كتابة الكود بلغة Java و Objective-C ؛
- في Android ، يتم إنشاء إعدادات الشاشة باستخدام Kotlin DSL. وجميع الأعمال متعددة الخيوط مبنية على coroutines: فهي تساعد في معالجة الطلبات إلى الشبكة ، بينما يزيد حجم المكتبة بأقل من 1 ميغابايت ؛
- تم تقليل مقدار الكود في المشروع.نحن نستخدم التعداد العام ، ومعالجة الأخطاء مع رميات وامتدادات بعض الفئات الأساسية. أصبح من الأسهل الحفاظ على المشروع ؛
- مكتبات API المحدثة. تم نقل طرق شاشات الاتصال والوظائف الأساسية للدفع إلى فئة منفصلة. هذه نقطة دخول واحدة للمكتبة: من الأسهل بكثير استدعاء طرق API من مكان واحد بدلاً من استدعاءها حول الكود.
تم تصميم هيكل الطرق بحيث يكون العمل مع API مناسبًا ومفهومًا. الأساليب موثقة جيدًا وتتوافق مع المعايير المعتادة لـ Java و Kotlin و Swift code.
على سبيل المثال ، هذه هي الطريقة التي يتم بها إنشاء إعدادات شاشة الدفع وتشغيلها في Android SDK:
val tinkoffAcquiring = TinkoffAcquiring("terminalKey", "password", "publicKey")
val paymentOptions = PaymentOptions()
.setOptions {
orderOptions {
orderId = "777"
amount = Money.ofCoins(1000)
title = "Order Title"
description = "Order Description"
}
customerOptions {
customerKey = "user-key"
checkType = CheckType.HOLD.toString()
email = "useremail@gmail.com"
}
featuresOptions {
localizationSource = AsdkSource(Language.RU)
useSecureKeyboard = true
}
}
tinkoffAcquiring.openPaymentScreen(this, paymentOptions, PAYMENT_REQUEST_CODE)
مثال على IOS SDK:
let credentional = AcquiringSdkCredential(terminalKey: "terminalKey", password: "terminalPassword", publicKey: "testPublicKey")
let acquiringSDKConfiguration = AcquiringSdkConfiguration(credential: credentional)
if let sdk = try? AcquiringUISDK.init(configuration: acquiringSDKConfiguration) {
sdk.presentPaymentView(on: self, paymentData: createPaymentData(), configuration: acquiringViewConfiguration()) { [weak self] (response) in
self?.responseReviewing(response)
}
}
لا تقيد SDK تطبيقات العملاء: على سبيل المثال ، يمكنك قبول الدفع ليس فقط من خلال شاشات المكتبة. يحتاج أصحاب الأعمال ومطوروهم أحيانًا إلى المزيد من الميزات في التطبيق.
على سبيل المثال ، في شاشة الخروج الخاصة بنا ، يتم تقديم طلبين إلى الخادم ، ويحتاج البائع إلى معالجة طلبات إضافية في التطبيق. لذلك ، يجب تنفيذ أحد الطلبات قبل فتح شاشة SDK ، ويجب أن يكون الثاني موجودًا بالفعل على الشاشة. بإمكاننا أن نفعل ذلك.
هناك وحدة أساسية منفصلة لهذا في SDK. إنه حيادي النظام الأساسي ويمكن استخدامه لاستدعاء أساليب Tinkoff Acquiring API. وتوفر الوحدة التي تحتوي على جزء واجهة المستخدم حلولاً أخرى بدون شاشة SDK - طرق إضافية تبدأ شاشة الدفع من مرحلة معينة.
Google Pay و Apple Pay
مشكلة. تتطلب Google و Apple أن تكون طرق الدفع الخاصة بهما غير موجودة بجوار البطاقات على شاشة الدفع SDK ، ولكن كأزرار منفصلة في التطبيق تحتاج إلى القيام بها بنفسك. يتعين على مطوري العملاء القيام بالمزيد من العمل لإعداد Google Pay و Apple Pay.
القرار. قامت SDK المحدثة بتحسين الدعم لقبول المدفوعات عبر Google Pay و Apple Pay.
نأخذ في الاعتبار متطلبات Google و Apple ، ولكن في نفس الوقت نبسط المهمة للمطورين. تتم معالجة معظم إعدادات الدفع بواسطة SDK ، ويحتاج مطورو العميل فقط إلى الاتصال ببعض الطرق.
هذه الطرق تفعل:
- إعداد خدمات الدفع في Google Pay و Apple Pay ؛
- معالجة توفر الخدمات على الجهاز ؛
- استدعاء الخدمة للدفع ؛
- معالجة نتيجة الدفع.
كل ما يحتاجه المطور هو عمل زر وفقًا لإرشادات الخدمة ، وتعيين إعدادات الدفع ، ونقل الرمز المميز إلى SDK لإكمال الدفع من خلال الحصول على الإنترنت من Tinkoff.
نظام دفع سريع
هذه ميزة جديدة في سوق fintech وتقنية جديدة ، لذلك كان على المطورين تنفيذها في SDK من البداية. يساعد SBP على قبول المدفوعات عن طريق رمز الاستجابة السريعة وإيداع الأموال على الفور في حساب التاجر - تأتي على الفور ، حتى في عطلات نهاية الأسبوع والعطلات الرسمية.
كيف تعمل:
- عند الدفع مقابل الطلب ، ينقر المشتري على "الدفع عبر SBP".
- يدخل المشتري التطبيق المصرفي ويؤكد سحب الأموال هناك. سيتم الإشارة إلى المبلغ في نموذج الدفع.
- بعد الدفع ، يذهب المال على الفور إلى حساب البائع.

يمكن للعملاء توصيل طريقة دفع جديدة في حسابهم الشخصي في Tinkoff Payments. بعد ذلك ، في SDK للجوال ، سيتمكن العملاء من قبول المدفوعات من خلال SBP - بواسطة زر ورمز QR.
"حساب فوري". يظهر زر بشعار SBP على شاشة الدفع.
يتضمن إعداد الشاشة fpsEnabled زرًا للدفع السريع في Android SDK:
var paymentOptions = PaymentOptions().setOptions {
orderOptions { /*options*/ }
customerOptions { /*options*/ }
featuresOptions {
fpsEnabled = true
}
}
في iOS SDK ، تحتاج إلى تمرير buttonPaySPB:
let viewConfigration = AcquiringViewConfigration.init()
viewConfigration.fields = []
viewConfigration.fields.append(AcquiringViewConfigration.InfoFields.buttonPaySPB)
عن طريق رمز QR ثابت. يجب على البائع فتح شاشة الدفع على جهازه ، ويجب على المشتري مسح رمز الاستجابة السريعة QR من الشاشة. يمكن القيام بذلك في التطبيق المصرفي أو باستخدام أي قارئ QR - سيفتح تطبيق الهاتف المحمول الخاص بالبنك ، وسيدخل المشتري مبلغ الطلب ويدفع ثمن البضائع.
هناك طريقة مقابلة لشاشة دفع رمز الاستجابة السريعة في SDK. يحتاج مطور التطبيق إلى إنشاء زر في الترميز واستدعاء طريقة.
على Android:
tinkoffAcquiring.openStaticQrScreen(context, screenOptions, STATIC_QR_REQUEST_CODE)
الطريقة على iOS:
sdk.presentPaymentSbpQrImage(on: self, paymentData: createPaymentData(), configuration: acquiringViewConfiguration()) { [weak self] (response) in
self?.responseReviewing(response)
}
تصميم محدث وموضوع غامق
كان:

الآن:

عملنا على تصميم الشاشات. لقد قمنا بتحديث العناصر المرئية - تبدو الآن حديثة ومتوافقة مع هوية شركة Tinkoff. كما في الإصدار السابق ، تركنا تخصيص السمة على Android من خلال سمات النمط. يمكن أن تبدو النافذة كبطاقة أو يمكن فتحها في وضع ملء الشاشة - ومن السهل أيضًا ضبط السمات.
أيضًا ، تدعم شاشات SDK الآن الاتجاه الأفقي للجهاز والمظهر الداكن. من أجل الحفاظ على إعدادات تطبيق العميل ، في Android SDK ، يمكن تحديد وضع السمة الداكنة في إعدادات العرض. القيم المحتملة: "قيد التشغيل دائمًا" أو "إيقاف التشغيل دائمًا" أو "التبديل حسب إعدادات الجهاز أو وضع توفير شحن البطارية". في iOS SDK ، يتم تبديل السمة الداكنة بناءً على إعدادات التطبيق نفسه.
توطين الشاشة
مشكلة. استخدمنا الترجمة القياسية من SDK ، اعتمادًا على اللغة المثبتة على الجهاز. يحتاج بعض العملاء إلى إعدادات تعريب الشاشة المتقدمة.
القرار. إطلاق دعم موسع لترجمة الشاشة لـ Android SDK. الآن لا يعتمد على لغة الجهاز. يمكنك إنشاء الترجمة الخاصة بك لأي لغة أو تثبيت تعريب SDK القياسي. لا يزال يتم دعم الترجمة باللغتين الروسية والإنجليزية على كلا النظامين الأساسيين.
كيف تبدأ في استخدام
لدمج SDK في التطبيق ، تحتاج أولاً إلى توصيل Tinkoff Payments بالحصول على الإنترنت . إنه سريع: يقوم صاحب العمل بتقديم طلب ، وملء استبيان. بمجرد أن نتحقق من البيانات ونتأكد من أن كل شيء على ما يرام ، يمكننا البدء في استخدام SDK. يستغرق هذا عادة يومين أو أقل.
مكتبات طرق الاتصال والوثائق وكود المصدر ، تفضل بزيارة GitHub:
→ All Android the SDK
→ iOS the SDK
إذا كان لديك أي أسئلة حول المكتبة ، أو تحتاج إلى مساعدة في الانتقال إلى الإصدار الجديد ، يرجى الاتصال بنا ، فنحن نساعدك على فهم: oplata@tinkoff.ru . أو أنشئ عددًا في القسم المناسب على GitHub.