Поиск
Тарифы Блог

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

SDK Logo

Количество бесконтактных платежей в мобильных приложениях стремительно растет.
Рынок монетизации 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

  • Минимальные требования: 

  1. Xcode 10.2 

  2. Swift 5.0 

  3. 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

import RBKmoneyPaymentsSDK

Шаг 2.


Получаем идентификатор и токен доступа инвойса — invoiceIdentifier и invoiceAccessToken. Эти параметры используются для выполнения логики, связанной с оплатой заказа.

Инвойс — документ, который содержит в себе список товаров и услуг, с упоминанием их количества, цены и формальных особенностей.

Как работает инвойс: пользователь создает заказ — формируется инвойс — пользователь оплачивает заказ, в соответствии с инвойсом.

Получить идентификатор и токен доступа можно тремя способами:

  • Через свой бэкэнд.
    Приложение отправляет запрос на бэкэнд — тот в свою очередь создает инвойс с использованием RBKmoney Payments API и API-Key и выдает нужные данные приложению. Оптимальный вариант. 

  • По шаблону.
    Приложение создает инвойс по шаблону с использованием RBKmoney Payments API.  Идентификаторы или токены доступа шаблонов зашиваются в приложение. Этот вариант используется в Example приложении.

  • Приложение создает инвойсы с использованием RBKmoney Payments API и API-Key. API-Key в этом случае зашивается в приложении. В связи с этим такой вариант не безопасен и не рекомендуется к использованию.

Шаг 3.

Создаем объект PaymentInputData.

let paymentInputData = PaymentInputData ( invoiceIdentifier: invoiceIdentifier, invoiceAccessToken: invoiceAccessToken, shopName: "Название магазина")

Шаг 4.

Создаем корневой вьюконтроллер. Указываем входные параметры и объект, реализующий протокол PaymentDelegate.

let viewController = PaymentRootViewControllerAssembly.makeViewController( paymentInputData: paymentInputData, paymentDelegate: self)

Шаг 5.

Показываем UI пользователю.

present ( viewController, animated: true)

Шаг 6.

Реализовываем методы протокола 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) }}

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

def libraryVersion = '0.0.20'dependencies { implementation "rbk.money:payments-android-sdk:$libraryVersion"}
  • Продажа цифровых товаров В случае, если в приложении продаются цифровые товары, отключаем Google Pay. Добавляем в AndroidManifest:

<meta-data android:name="com.google.android.gms.wallet.api.enabled" tools:node="remove" />

Использование

  • Вызвать метод RbkMoney.buildCheckoutIntent с параметрами:
    activity : Activity — текущая Activity
    invoiceId : String —  идентификатор инвойса
    invoiceAccessToken : String — токен доступа инвойса
    shopName : String — название магазина. Отражается в заголовке.
    Опционально:
    useTestEnvironment : Boolean — использовать тестовое окружение для Google Pay
    email : String — электронная почта по умолчанию для отправки чеков

  • Запустить Activity с помощью полученного интента:

startActivityForResult(RbkMoney.buildCheckoutIntent(this, invoiceModel.id, invoiceModel.invoiceAccessToken, invoiceModel.shopName, true, "[email protected]" ), CHECKOUT_REQUEST_CODE)
  • В методе onActivityResult получить обратный вызов из SDK: Activity.RESULT_OK — платёж прошёл успешно Activity.RESULT_CANCELED — пользователь отменил операцию либо произошла ошибка

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == CHECKOUT_REQUEST_CODE) { when (resultCode) { RESULT_OK -> onPaymentSuccess() RESULT_CANCELED -> onPaymentCanceled() } } }

Использование примера

Для запуска примера необходимо:

  • Добавить в файл assets/test_invoices.json:
    id —  идентификатор инвойса
    invoiceAccessToken — токен доступа инвойса
    shopId — идентификатор магазина
    shopName — название магазина
    description — описание инвойса

  • Для создания инвойса по шаблону добавить в файл assets/test_invoice_templates.json:
    shopName — название магазина
    invoiceTemplateId — идентификатор шаблона инвойса
    invoiceTemplateAccessToken — токен доступа шаблона инвойса
     

Для начала приема платежей в интернет-магазине
  • Настройте плагин в соответствии с данными из личного кабинета RBKmoney;
  • Скопируйте notification Url и укажите его в настройках магазина в личном кабинете RBKmoney;
  • Сохраните изменения и проведите тестовый платеж.
Прием платежей для Opencart

Смотрите также:

Платежный плагин для Opencart