Подключение оплаты Apple Pay и Google Pay в мобильном приложении

Количество бесконтактных платежей в мобильных приложениях стремительно растет.
Рынок монетизации app-платформ расширяется и набирает обороты. По данным аналитической компании Sensor Tower, ежегодно пользователи тратят 39,7 миллиардов долларов в мобильных приложениях и это число увеличивается.
Только за прошлый год количество загрузок приложений через App Store превысило 14 миллиарда долларов, через Google Play 41 миллиард.
Исходя из потребностей наших клиентов и общих тенденций, платежная система RBK.money позволяет подключить прием платежей в мобильных приложениях.
Для подключения бесконтактной оплаты доступны следующие платежные методы:
-
Apple Pay (IOS)
-
Samsung Pay (Android)
-
Банковские карты
Начало работы
Зарегистрируйтесь на сайте RBK.money. Выберите подходящее платежное решения, исходя из операционной системы:
-
SDK для приема платежей в iOS
-
Android payment mobile SDK для бесконтактной оплаты в Android
Инструкция подключения для iOS
Минимальные требования:
-
Xcode 10.2
-
Swift 5.0
-
iOS 11.0
Установка
Установить iOS-библиотеку можно двумя способами:
-
С помощью CocoaPods.
Интегрируем RBKmoneyPaymentsSDK в Хcode проект с помощью CocoaPods. Для этого добавьте следующую строку в Podfile:
pod 'RBKmoneyPaymentsSDK'
CocoaPods — инструмент для управления зависимостями библиотек, которые разработчики используют в iOS и MacOS X проектах. Вся информация и инструкция по установке на официальном сайте CocoaPods. -
В ручном режиме
Интеграция библиотеки в Xcode проект в виде открытого фреймворка CEF.
Для установки понадобятся внешние зависимости:
-RxSwift
-RxCocoa
-R.swift.Library
Процесс интеграции для iOS
Шаг 1.
Импортируем модуль SDK
Шаг 2.
Получаем идентификатор и токен доступа инвойса — invoiceIdentifier и invoiceAccessToken. Эти параметры используются для выполнения логики, связанной с оплатой заказа.
Инвойс — документ, который содержит в себе список товаров и услуг, с упоминанием их количества, цены и формальных особенностей.
Как работает инвойс: пользователь создает заказ — формируется инвойс — пользователь оплачивает заказ, в соответствии с инвойсом.
Получить идентификатор и токен доступа можно тремя способами:
-
Через свой бэкэнд.
Приложение отправляет запрос на бэкэнд — тот в свою очередь создает инвойс с использованием RBKmoney Payments API и API-Key и выдает нужные данные приложению. Оптимальный вариант. -
По шаблону.
Приложение создает инвойс по шаблону с использованием RBKmoney Payments API. Идентификаторы или токены доступа шаблонов зашиваются в приложение. Этот вариант используется в Example приложении. -
Приложение создает инвойсы с использованием RBKmoney Payments API и API-Key. API-Key в этом случае зашивается в приложении. В связи с этим такой вариант не безопасен и не рекомендуется к использованию.
Шаг 3.
Создаем объект PaymentInputData.Шаг 4.
Создаем корневой вьюконтроллер. Указываем входные параметры и объект, реализующий протокол PaymentDelegate.Шаг 5.
Показываем UI пользователю.Шаг 6.
Реализовываем методы протокола PaymentDelegate и обрабатываем в них соответствующие случаи. После этого скрываем UI.4. Методы оплаты
По умолчанию все методы оплаты во входных параметрах разрешены. Но в отдельных случаях оплата банковской картой может быть разрешена во входных параметрах SDK, но запрещена со стороны сервера RBK.money. В этом случае пользователь не сможет воспользоваться оплатой банковской картой.
Ограничения зависят от:
-
Входных параметров SDK (поле allowedPaymentMethods структуры PaymentInputData)
-
Возможностей устройства пользователя
-
Поддержки сервером RBK.money оплаты заданного инвойса конкретным методом.
Каждый платежный метод должен соответствовать требованиям.
Требования:
Банковская карта
-
PaymentInputData.allowedPaymentMethods содержит .bankCard.
-
Сервер RBKmoney разрешает оплату заданного инвойса с помощью банковской карты
Apple Pay
-
PaymentInputData.allowedPaymentMethods содержит .applePay
-
Приложение сконфигурировано на работу с Apple Pay согласно документу
-
Во входных параметрах SDK указан applePayMerchantIdentifier
-
Устройство пользователя поддерживает бесконтактную оплату с помощью Apple Pay
-
На устройстве пользователя отсутствует запрет на платежи
-
Сервер RBKmoney разрешает оплату заданного инвойса с помощью токенизированных данных Apple Pay
Сервер RBKmoney должен уметь расшифровывать токенизированные данные Apple Pay.
Для этого необходимо:
-
Вариант 1.
Сгенерировать CSR (certificate signing request) и использовать его для генерации сертификата в панели разработчика Apple. Затем связаться с менеджером RBK.money и передать ему пару сертификат/приватный ключ в формате p12. -
Вариант 2.
Cвязаться с менеджером RBK.money и попросить его сгенерировать для вас CSR. Получить и использовать CSR для генерации сертификата. Затем передать сертификат менеджеру.
Детальная инструкция по генерации CSR или сертификата на официальной панели разработчика Apple.
5. Документация
Все публичные символы SDK документированы. Описание доступно в Xcode по alt-click символа. Также вы можете найти сгенерированную jazzy документацию в html формате в папке Docs.
Инструкция подключения для Android
Библиотека позволяет осуществлять платежи через RBKmoney Payments API
SDK включает в себя все необходимые интерфейсы.
Репозиторий содержит:
Подключение библиотеки
-
Gradle
-
Продажа цифровых товаров В случае, если в приложении продаются цифровые товары, отключаем Google Pay. Добавляем в AndroidManifest:
Использование
-
Вызвать метод RbkMoney.buildCheckoutIntent с параметрами:
activity : Activity — текущая Activity
invoiceId : String — идентификатор инвойса
invoiceAccessToken : String — токен доступа инвойса
shopName : String — название магазина. Отражается в заголовке.
Опционально:
useTestEnvironment : Boolean — использовать тестовое окружение для Google Pay
email : String — электронная почта по умолчанию для отправки чеков
-
Запустить Activity с помощью полученного интента:
-
В методе onActivityResult получить обратный вызов из SDK: Activity.RESULT_OK — платёж прошёл успешно Activity.RESULT_CANCELED — пользователь отменил операцию либо произошла ошибка
Использование примера
Для запуска примера необходимо:
-
Добавить в файл assets/test_invoices.json:
id — идентификатор инвойса
invoiceAccessToken — токен доступа инвойса
shopId — идентификатор магазина
shopName — название магазина
description — описание инвойса -
Для создания инвойса по шаблону добавить в файл assets/test_invoice_templates.json:
shopName — название магазина
invoiceTemplateId — идентификатор шаблона инвойса
invoiceTemplateAccessToken — токен доступа шаблона инвойса
- Настройте плагин в соответствии с данными из личного кабинета RBKmoney;
- Скопируйте notification Url и укажите его в настройках магазина в личном кабинете RBKmoney;
- Сохраните изменения и проведите тестовый платеж.
