ASDKUI 1.5.6

ASDKUI 1.5.6

测试已测试
语言语言 Obj-CObjective C
许可 NOASSERTION
发布最后发布2022年1月

Kiselev ArtyomKiselev ArtyomGrigory Serebryaniy 维护。



ASDKUI 1.5.6

  • 作者
  • d.tarasov

Tinkoff Acquiring SDK for iOS

注意!出现了新的版本 Acquiring SDK 2.0,它现在位于 AcquiringSdk_iOS 仓库中

我们建议您切换到新版本的库。

在 2.0 版本中出现了新的功能

  • 支持通过 快速支付系统 进行支付
  • 新的现代屏幕设计
  • 现在库是用 Swift 编写的,并且改进和重写了库的 API。

当前版本 1.5.x 继续工作

PayFormActivity1 PayFormActivity2 PayFormActivity3 AttachCardActivity

Acquiring SDK 允许将 Tinkoff Интернет-Эквайринг 集成到 iOS 平台的手机应用中。

SDK 功能

  • 接受支付(包括周期性支付)
  • 保存客户的银行卡信息
  • 通过摄像头扫描和识别卡
  • 获取客户和保存的卡信息
  • 管理保存的卡
  • 支持英语和自有本地化
  • 使用 ApplePay 进行支付

要求

为了使用 Tinkoff Acquiring SDK,需要 iOS 版本 8.0 及以上。

连接

我们推荐使用 Cocoa Pods 来连接 SDK。在 Podfile 文件中添加依赖项。

pod 'CardIO'
pod 'ASDKCore', :podspec =>  "https://raw.githubusercontent.com/TinkoffCreditSystems/tinkoff-asdk-ios/master/ASDKCore.podspec"
pod 'ASDKUI', :podspec =>  "https://raw.githubusercontent.com/TinkoffCreditSystems/tinkoff-asdk-ios/master/ASDKUI.podspec"

如果您不使用 Cocoa Pods,可以将 ASDKUI.xcodeproj 添加到您的项目中。

准备工作

开始使用 SDK,您需要

  • 终端密钥
  • 密码
  • 公钥

这些在连接到 互联网支付 后颁发。

示例

测试应用程序 ASDKSampleApp 可通过卡凭据/之前保存的卡支付商品

	BookItem *item;
	
    [PayController buyItemWithName:self.item.title
                       description:self.item.bookDescription
                            amount:self.item.cost
			 additionalPaymentData:@{@"Email":@"[email protected]", @"Phone":@"+71234567890"}
					   receiptData:@{@"Email":@"[email protected]", @"Taxation":@"osn",
										@"Items":@[@{@"Name":@"Название товара 1",@"Price":@100,@"Quantity":@1, @"Amount":@100, @"Tax":@"vat10"},
										@{@"Name":@"Название товара 2",@"Price":@100,@"Quantity":@1,@"Amount":@100, @"Tax":@"vat118"}]}
                fromViewController:self
                           success:^(NSString *paymentId) {  NSLog(@"%@",paymentId);  }
                         cancelled:^  { NSLog(@"Canceled"); }
                             error:^(ASDKAcquringSdkError *error) { NSLog(@"%@",error); }];

通过 Apple Pay 支付商品

	BookItem *item;
	
	if ([PayController isPayWithAppleAvailable])
	{
		PKContact *shippingContact = [[PKContact alloc] init];
		shippingContact.emailAddress = @"[email protected]";
		shippingContact.phoneNumber = [CNPhoneNumber phoneNumberWithStringValue:@"+74956481000"];
		CNMutablePostalAddress *postalAddress = [[CNMutablePostalAddress alloc] init];
		[postalAddress setStreet:@"Головинское шоссе, дом 5, корп. 1,"];
		[postalAddress setCountry:@"Россия"];
		[postalAddress setCity:@"Москва"];
		[postalAddress setPostalCode:@"125212"];
		[postalAddress setISOCountryCode:@"643"];
		shippingContact.postalAddress = [postalAddress copy];
		
		[PayController buyWithApplePayAmount:self.item.cost
								 description:self.item.title
									   email:shippingContact.emailAddress
							 appleMerchantId:@"merchant.tcsbank.ApplePayTestMerchantId"
							 shippingMethods:nil //example @[[PKShippingMethod summaryItemWithLabel:@"Доставка" amount:[NSDecimalNumber decimalNumberWithString:@"300"]]]
							 shippingContact:shippingContact
					  shippingEditableFields:PKAddressFieldPostalAddress|PKAddressFieldName|PKAddressFieldEmail|PKAddressFieldPhone //PKAddressFieldNone
					   additionalPaymentData:nil
								receiptData:@{@"Email":@"[email protected]", @"Taxation":@"osn",
												@"Items":@[@{@"Name":@"Название товара 1",@"Price":@100,@"Quantity":@1, @"Amount":@100, @"Tax":@"vat10"},
												@{@"Name":@"Название товара 2",@"Price":@100,@"Quantity":@1,@"Amount":@100, @"Tax":@"vat118"}]}
						  fromViewController:self
									 success:^(NSString *paymentId) { NSLog(@"%@", paymentId); }
								   cancelled:^{ NSLog(@"Canceled"); }
									   error:^(ASDKAcquringSdkError *error) {  NSLog(@"%@", error); }];
	}

绑定新卡进行支付

		[PayController attachCard:self.addNewCardCheckType // тип проверки ASDKCardCheckType
					additionalData:@{@"Email":@"[email protected]"}
				fromViewController:self
							success:^(ASDKResponseAddCardInit *response) {
								//
						} cancelled:^{
								//
							} error:^(ASDKAcquringSdkError *error) {
								//
		}];

[1] 定期付款可以用于从保存的卡中扣除资金,而不需要输入其详细信息。此功能可用于订阅付款。

指定自己的本地化文件

ASDKLocalized *loc = [ASDKLocalized sharedInstance];
[loc setLocalizedBundle:[NSBundle mainBundle]];
[loc setLocalizedTable:@"ASDKlocalizableRu"];

结构

SDK 由以下模块组成

ASDKCore

是 Tinkoff Acquiring API 的工作基础模块。模块实现与服务器的交互协议,允许不直接调用 ASDKAcquiringApi API。

模块的主要类 - AcquiringSdk - 为与 Tinkoff Acquiring API 的交互提供了一个接口。操作需要销售员的密钥和密码(见 准备工作)。

ASDKUI

包含接收通过移动应用程序支付所需的所有界面。

主要类 - ASDKPaymentFormViewController - 支付表单屏幕,允许

  • 查看支付信息
  • 输入或扫描卡信息以进行支付
  • 进行 3DS 确认
  • 管理先前保存的卡列表

支付屏幕设置

要设置支付屏幕元素,请使用 ASDKDesignConfiguration

  • 设置导航面板中按钮和标题的颜色。
  • 配置“支付”按钮。
  • 配置屏幕元素显示。
  • 设置自己的支付系统标志或所需内容。
  • 对于iPad屏幕,在FormSheet模式下显示SDK屏幕

例如,可以指定在屏幕上显示哪些元素以及它们的顺序,为此需要创建一个元素数组

typedef NS_ENUM(NSInteger, TableViewCellType)
{
	CellProductTitle, // Заголовок, занвание товара
	CellProductDescription, // Описание товара
	CellAmount, // сумма
	CellPyamentCardRequisites,// поле для ввода реквизитов карты
	CellEmail, // поле для ввода email
	CellPayButton, // кнопка оплатить
	CellAttachButton, // кнопка привязать карту
	CellSecureLogos, // логотипы платежных систем
	CellEmpty20px, // пустое поле цвета фона таблицы высотой в 20 px
	CellEmpty5px, // пустое поле цвета фона таблицы высотой в 5 px
	CellEmptyFlexibleSpace // пустая строка высота которой занимает всё доступное пространство
};
// установить элементы экрана оплаты и их последовательность: 
[ASDKDesignConfiguration setPayFormItems:@[@(CellProductTitle),
										   @(CellProductDescription),
										   @(CellAmount),
										   @(CellPyamentCardRequisites),
										   @(CellEmail),
										   @(CellEmpty20px),
										   @(CellPayButton),
										   @(CellSecureLogos)
										 ]];
// изменить на кнопке оплатить надпись:
[ASDKDesignConfiguration setPayButtonTitle:[NSString stringWithFormat:@"Оплатить %.2f руб", [amount doubleValue]]];

// показывать окно модально для iPad
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
	[designConfiguration setModalPresentationStyle:UIModalPresentationFormSheet];
}

示例

包含Tinkoff Acquiring SDK在销售图书的移动应用程序中的集成示例。主要类和文件*ASDKTestKeys包含终端密钥密码公钥和用于(门面)ASDKAcquiringSdkPayController,它创建一个ASDKAcquiringSdk实例并提供了(门面)用于支付的功能。

支持