ASDKCore 1.5.6

ASDKCore 1.5.6

测试已测试
Lang语言 Obj-CObjective C
许可证 NOASSERTION
发布上次发布2022年1月

Kiselev ArtyomKiselev ArtyomGrigory Serebryaniy 维护。



ASDKCore 1.5.6

  • 作者
  • d.tarasov

Tinkoff Acquiring SDK for iOS

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

我们建议您升级到新版本的库。

版本 2.0 提供了新功能

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

当前的 1.5.х 版本仍将继续运行

PayFormActivity1 PayFormActivity2 PayFormActivity3 AttachCardActivity

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

SDK 功能

  • 接收支付(包括 recurring payments)
  • 保存客户的银行卡信息
  • 通过相机扫描和识别卡片
  • 获取客户及其保存的卡片信息
  • 管理保存的卡片
  • 支持英语和本地化
  • 支持使用 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 需要以下信息

  • 终端密钥
  • 密码
  • 公钥

这些信息通常在连接到 Tinkoff Internet acquiring 后获得。

工作示例

测试应用程序 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 交互。

模块的主要类 - 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 包含 终端密钥密码公钥PayController 是用于 ASDKAcquiringSdk 的门面,它创建 ASDKAcquiringSdk 的实例并(门面)提供支付功能。

支持