ym88659208ym87991671
Подключаем платежи в Native App | Документация SmartMarket
Skip to main content

Подключаем платежи в Native App

Вы можете настроить прием платежей в Native App. Для этого подтвердите юридический статус компании.

Прием платежей проходит в несколько этапов, подробнее о них вы можете прочитать в разделе Этапы оплаты.

note

Если вы уже настроили прием платежей с помощью библиотеки messaging, вы можете прочитать описание этапов оплаты.

Перед подключением

  1. Создайте в корпоративном пространстве проект SmartPay.
  2. Получите тестовый или эксплуатационный токен и service_id для сервиса приема платежей SmartPay.
  3. Скачайте демо-приложение и используйте его в качестве примера.

Подключение библиотеки Paylib

Пример подключения библиотеки Paylib можно посмотреть в DemoApplication.kt. Для внедрения зависимостей используется библиотека Koin.

Чтобы подключить библиотеку, создайте экземпляр PayLib:

val sdkModule = module {
factory {
PayLibFactory(
context = androidContext(),
coroutineDispatchers = CoroutineDispatchers,
binderHelperFactory2 = get()
).create()
}
...
}

Создание счета

Чтобы запустить платежный сценарий, сформируйте счет на оплату с помощью бэкенда смартапа. Для этого используйте метод POST /invoices.

Пример ответа:

{
"error": {
"error_code": "0",
"error_description": "",
"user_message": ""
},
"invoice_id": "3538853"
}

Далее верните идентификатор созданного счета — invoice_id — в смартап.

Проведение оплаты

Чтобы запустить диалог оплаты, выполните команду launchPayDialog и укажите invoice_id:

import ru.sberdevices.services.paylib.PayLib
import ru.sberdevices.services.paylib.entities.PayResultCode

// Запускаем интерфейс оплаты на устройстве.
paylib.launchPayDialog(invoiceId).onSuccess {
// Проверяем результат работы интерфейса платежа (успешно/ошибка или пользователь отменил платеж)
when (it.resultCode) {
PayResultCode.SUCCESS -> { // диалог оплаты с пользователем успешно завершился }
PayResultCode.ERROR -> { // во время работы диалог оплаты с пользователем произошла ошибка }
PayResultCode.CANCELLED -> { // пользователь отменил оплату }
else -> { // неподдерживаемый код ошибки }
}
}.onFailure {
// диалог оплаты не запустился
}

В случае успеха пользователю отобразится диалог оплаты с возможностью оплатить картой или QR-кодом.

Чтобы у пользователя появились карты для оплаты, их необходимо добавить через мобильное приложение Салют в разделе Профиль/Карты.

note

Если пользователь выбирает оплату с помощью QR-кода, то невозможно вернуться и выбрать оплату картой.

В таком случае, чтобы оплатить картой, нужно закрыть окно и заново начать процесс оплаты.

Проверка статуса платежа

Для проверки статуса платежа выполните запрос GET /invoices/{invoice_id} на бэкенде смартапа.

Убедитесь, что заказ перешел в финальный статус, и отобразите результат пользователю.

Тестирование приема платежей

Вы можете протестировать и отладить прием платежей локально.

Для этого создайте счет, используя тестовый токен и примеры из демо-приложения:

  1. Сформируйте заказ:
private fun createInvoiceOrder(): Invoice {
val cartItem = ShoppingCartItem(
1,
name = "New Elephant",
item_price = 100,
item_amount = 100,
item_code = "ru.some.elephant",
quantity = Quantity(
1,
"thing")
)
val orderInfo = OrderInfo(
order_id = "1c4bffc385d04530b511520ba8386d80,
order_date = "2022-05-22T22:24:56.719Z",
amount = cartItem.item_amount,
purpose = "Покупка слона",
description = "Покупка слона, OOO Elephant Seller",
service_id = "27",
order_bundle = listOf(cartItem)
)
return Invoice(
invoice = Order(
order = orderInfo
)
)
}
  1. Создайте счет на оплату:
private fun getInvoiceIdForTestOrder(): String? {
// Создаем тестовый счет на оплату
val invoiceOrder = createInvoiceOrder()
// Регистрируем счет в SmartPay API
return NetworkClient.createInvoice(invoiceOrder)?.invoice_id
}
Обновлено 11 августа 2022

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней