Tinkoff Acquiring SDK for iOS
AcquiringSdk_iOS 仓库中
注意!出现了新的版本 Acquiring SDK 2.0,它现在位于我们建议您切换到新版本的库。
在 2.0 版本中出现了新的功能
- 支持通过 快速支付系统 进行支付
- 新的现代屏幕设计
- 现在库是用 Swift 编写的,并且改进和重写了库的 API。
当前版本 1.5.x 继续工作
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包含终端密钥,密码,公钥和用于(门面)ASDKAcquiringSdk的PayController,它创建一个ASDKAcquiringSdk实例并提供了(门面)用于支付的功能。
支持
- 请将您的问题发送至 [email protected]
- 错误和功能请求可以通过问题部分提请。
- 有关网站上的文档,请参阅API方法描述