Tinkoff付款体验:改进了移动SDK,并使在线付款更加便捷

图片



你好!夏季初,我们更新了Tinkoff获取SDK,并发布了适用于Android和iOS的第二个版本。Tinkoff获取SDK是用于移动平台的开源库。使用它在应用程序中接受付款很方便。在本文中,我想告诉您,对于Internet企业主及其购买者来说,什么是很酷的。



有什么改进



先前版本中的问题:



  1. 复杂的库体系结构。因此,开发人员花费了大量时间来搜索和修复错误。
  2. 冗余库API。集成SDK时,开发人员经常会犯错误。
  3. 未遵循Apple Pay和Google Pay设置这些付款方式的要求。


我们为解决此问题所做的工作以及其他新功能:



  1. 我们已经完全重写了两个操作系统的代码。我们重构了代码并添加了许多有用的功能。这些库现在可以在Kotlin和Swift中使用。
  2. 添加了快速付款系统。您可以使用QR码通过SBP进行付款,也可以通过“即时帐户”进行付款-单击付款屏幕上的按钮。
  3. 我们支持一体式解决方案。一切都在一个地方:链接卡,非接触式付款,使用QR码的快速付款。
  4. 更新了设计。添加了一个黑暗的主题。但是,我们并没有忘记在Android上自定义主题的情况,该主题是先前的版本。
  5. 我们继续支持以前的版本。我们考虑了所有客户,没有欺骗新老客户-SDK在第一个版本和第二个版本中的工作原理相同。但是,我们建议您升级以利用新功能。


现在,一切按顺序进行。



Tinkoff获取SDK的用途是什么?



该SDK将Internet采集集成到任何移动应用程序中,适合在以下应用程序中接受在线支付的企业:在线商店,市场,旅游公司,清洁,流媒体网站,自由交易者。



该解决方案可帮助客户在应用程序中链接卡并通过几次点击来支付购买费用,并帮助卖方使应用程序更有效,并且在结账阶段不会失去客户。



SDK可以执行以下操作:



使用相机和NFC扫描并识别银行卡,然后将其保存。买方在应用程序中链接一次卡,然后仅输入CVC代码以支付购买费用。



接受应用程序中的所有类型的付款:通过银行卡,通过您的个人帐户tinkoff.ru,Apple Pay和Google Pay。包括定期付款-即通过订阅自动付款,而无需重新输入详细信息。



图片图片



使用快速付款系统(FPS)进行付款。SDK有助于通过UBS接受付款:买方使用QR码为商品付款,其中包含有关订单的所有信息。让我们实现两种方案:在客户端应用程序中付款和开票。



支持在线收银员和财务。一切都符合FZ-54。



自定义应用程序设计的付款窗口。在Android应用中可用。



架构上的改进



问题。 SDK代码的体系结构的设计方式使得在其中维护和实现新功能既困难又耗时。



决定SDK开发人员对旧的库代码进行了完整的重构:



-代码用现代语言Kotlin和Swift编写。这加快了开发过程,并帮助构建了易于维护和扩展的用户友好型体系结构:我们更快地引入了新功能,客户获得了更快的更新。在第一个版本中,代码是用Java和Objective-C编写的;



-在Android上,屏幕设置是使用Kotlin DSL创建的。而且所有多线程工作都是基于协程构建的:它们有助于处理对网络的请求,而库的大小增加不到1 MB。



-项目中的代码量已减少。我们使用通用枚举,错误处理以及某些基类的引发和扩展。维护项目变得更加容易。



-更新的API库。调用屏幕的方法和基本付款功能已移至单独的类。这是该库的一个入口点:从一个位置调用API方法要比从代码各处调用API方法容易得多。



设计方法的结构是为了使使用API​​方便且易于理解。这些方法有充分的文档记录,并符合Java,Kotlin,Swift代码的常规标准。



例如,这是在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获取API方法。带有UI部分的模块提供了没有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的Internet收购完成付款。



快速付款系统



这是金融科技市场的一项新功能,也是一项新技术,因此开发人员必须从头开始在SDK中实现它。SBP帮助接受QR码付款,并立即将钱存入商户帐户-即使在周末和节假日,它们也会立即到账。



怎么运行的:



  1. 支付订单时,买方单击“通过SBP支付”。
  2. 买方进入银行应用程序并在此处确认提款。该金额将在付款表格中显示。
  3. 付款后,款项立即转到卖方的帐户。


图片图片



客户可以在其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中的QR码支付屏幕有相应的方法。应用程序开发人员需要在标记中创建一个按钮并调用一个方法。



在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的企业形象。与以前的版本一样,我们通过style属性保留了Android上的主题自定义。该窗口可以看起来像卡片,也可以全屏打开-这在属性中也很容易设置。



此外,SDK屏幕现在支持水平设备方向和深色主题。为了维护客户端应用程序设置,在Android SDK中,可以在显示设置中指定深色主题模式。可能的值:“始终打开”,“始终关闭”,“根据设备设置或省电模式进行切换”。在iOS SDK中,深色主题会根据应用程序本身的设置进行切换。



屏幕本地化



问题。根据设备上安装的语言,我们使用了SDK中的标准本地化。一些客户端需要高级屏幕本地化设置。



决定 启动了对Android SDK屏幕本地化的扩展支持。现在,它不依赖于设备的区域设置。您可以为任何语言创建自己的本地化版本,也可以安装标准的SDK本地化版本。两种平台仍支持俄语和英语本地化。



如何开始使用



要将SDK集成到应用程序中,您首先需要连接Tinkoff Payments互联网获取快速:企业主提交申请,填写调查表。一旦检查完数据并确保一切正常,就可以开始使用SDK。这通常需要两天或更短的时间。



连接库,文档和源代码的方法,请参见我们的GitHub:



Android SDK



iOS SDK



如果您对库有任何疑问或在过渡到新版本时需要帮助,请写信给我们,我们将帮助您解决问题:oplata@tinkoff.ru或在GitHub的相应部分中创建问题。



All Articles