Библиотека для приема платежей в мобильных приложениях iOS.
- О чем все это
- Минимальные требования
- Установка
- Быстрый старт
- Инвойсы
- Методы оплаты
- Документация
- Change Log
- Example App
Для понимания документа, терминологии и прочего необходимо ознакомиться с:
- Личный кабинет RBKmoney
- Документация RBKmoney
- RBKmoney Payments API
- Сертификаты, профили, идентификаторы и прочее - панель разработчика Apple
- Настройка Apple Pay
- Xcode 12.x
- Swift 5.3
- iOS 11.0
CocoaPods - менеджер зависимостей для cocoa проектов. Для получения дополнительной информации, инструкций по установке и использованию, посетите их вебсайт. Для интеграции RBKmoneyPaymentsSDK в Xcode проект с помощью CocoaPods, добавьте следующую строку в ваш Podfile
:
pod 'RBKmoneyPaymentsSDK'
Библиотека может быть проинтегрирована в ваш Xcode проект в виде embedded framework, при этом понадобятся следующие внешние зависимости:
- Импортируйте модуль SDK
import RBKmoneyPaymentsSDK
-
Получите идентификатор и токен доступа инвойса -
invoiceIdentifier
иinvoiceAccessToken
. Немного подробнее ниже. -
Создайте объект
PaymentInputData
. Описание полей можно найти в документации.
let paymentInputData = PaymentInputData(
invoiceIdentifier: invoiceIdentifier,
invoiceAccessToken: invoiceAccessToken,
shopName: "Название магазина"
)
- Создайте корневой вьюконтроллер с указанием входных параметров и объекта, реализующего протокол
PaymentDelegate
.
let viewController = PaymentRootViewControllerAssembly.makeViewController(
paymentInputData: paymentInputData,
paymentDelegate: self
)
- Покажите UI пользователю.
present(viewController, animated: true)
- Реализуйте методы протокола
PaymentDelegate
и обработайте в них соответствующие случаи, после этого скройте UI.
extension ViewController: PaymentDelegate {
func paymentCancelled(invoiceIdentifier: String) {
print("Payment cancelled, invoice identifier: \(invoiceIdentifier)")
dismiss(animated: true)
}
func paymentFinished(invoiceIdentifier: String, paymentMethod: PaymentMethod) {
print("Payment finished, invoice identifier: \(invoiceIdentifier), payment method: \(paymentMethod)")
dismiss(animated: true)
}
}
Инвойс - документ, сущность, содержащая перечень товаров и услуг, их количество и цену и прочие метаданные. При создании заказа пользователем, создается инвойс, в соответствии с которым пользователь оплачивает заказ. SDK работает с уже созданными инвойсами - во входных параметрах принимает идентификатор и токен доступа инвойса, которые используются в дальнейшем для выполнения логики, связанной с оплатой заказа. Получить эти параметры можно тремя способами:
-
У вас есть свой бэкэнд. Приложение отправляет запрос на бэкэнд, который в свою очередь создает инвойс с использованием RBKmoney Payments API и API-Key и выдает необходимые данные приложению. Самый гибкий вариант.
-
Приложение создает инвойсы по шаблону/ам с использованием RBKmoney Payments API, при этом идентификаторы/токены доступа шаблонов обычно зашиваются в приложение. Этот вариант используется в Example приложении.
-
Приложение создает инвойсы с использованием RBKmoney Payments API и API-Key. Посколько API-Key в этом случае зашивается в приложение, этот вариант не является полностью безопасным и
⚠️ не рекомендуется⚠️ к использованию.
Методы оплаты, предоставленные пользователю, могут варьироваться в зависимости от входных параметров SDK (поле allowedPaymentMethods
структуры PaymentInputData
), от возможностей устройства пользователя и от поддержки сервером RBKmoney оплаты заданного инвойса конкретным методом. Например, оплата банковской картой может быть разрешена во входных параметрах SDK, но запрещена со стороны сервера RBKmoney, в таком случае пользователь не будет иметь возможности воспользоваться оплатой банковской картой. По умолчанию все методы во входных параметрах разрешены. Ниже перечислены требования, накладываемые каждым методом.
PaymentInputData.allowedPaymentMethods
содержит.bankCard
- Сервер RBKmoney разрешает оплату заданного инвойса с помощью банковской карты
PaymentInputData.allowedPaymentMethods
содержит.applePay
- Приложение сконфигурировано на работу с Apple Pay согласно документу
PaymentInputData.applePayInputData
указан и содержит необходимые параметрыmerchantIdentifier
иcountryCode
- Устройство пользователя поддерживает оплату с помощью Apple Pay
- На устройстве пользователя отсутствует запрет на платежи
- Сервер RBKmoney разрешает оплату заданного инвойса с помощью токенизированных данных Apple Pay
Также, сервер RBKmoney должен уметь расшифровывать токенизированные данные Apple Pay. Для этого необходимо:
- Вариант 1: сгенерировать CSR (certificate signing request) на своей машине и использовать его для генерации сертификата в панели разработчика Apple, затем связаться с менеджером RBKmoney и передать ему пару сертификат/приватный ключ в формате p12
- Вариант 2: связаться с менеджером RBKmoney, попросить его сгенерировать CSR для вас, получить и использовать CSR для генерации сертификата, затем передать сертификат менеджеру
- Сообщить менеджеру идентификатор мерчанта, который будет использоваться с переданным сертификатом (можно и не сообщать - сертификат содержит эту информацию в метаданных)
Вышеуказанный документ содержит детальную инструкцию по генерации CSR / сертификата.
Все публичные символы SDK документированы, описание доступно непосредственно в Xcode по alt-click символа. Так же, вы можете найти сгенерированную jazzy документацию в html формате в папке Docs.