Данная библиотека предназначена для работы с системой онлайн-платежей для юридических и физических лиц Pikassa.io. Основной функцией данной библиотеки является передача карточных данных, используя Merchant API v.2.
android sdk version: 21+
Шаг 1. Добавьте репозиторий JitPack в ваш файл сборки Добавьте его в свой корневой build.gradle в конце репозитория:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Шаг 2. Добавьте зависимость
dependencies {
...
implementation 'com.github.pikassa-payments:pikassa-sdk-android:Tag'
}
Работа с библиотекой осуществляется через объект Pikassa
, у которого доступны 3 метода: init(), sendPaymentData(), close()
. Для начала необходимо вызвать метод init
:
Pikassa.init("your_api_key")
где "your_api_key"
- ключ доступа.
После инициализации можно вызвать метод получения деталей платежа:
fun sendPaymentData(
uuid: String,
requestId: String,
paymentMethod: PaymentMethod<*>,
onSuccess: (ResponseData) -> Unit,
onError: (ResponseError) -> Unit
)
где uuid
- идентификатор счета на оплату, requestId
- идентификатор заказа, paymentMethod
- тип оплаты (может быть BankCard, Custom, описание ниже), onSuccess
- результат успешной передачи карточных данных, возвращает информацию с сервера в случае успеха (ResponseData
), onError
- ошибка при передаче данных, возвращает ошибку (ResponseError
).
Структура PaymentMethod
:
sealed class PaymentMethod {
data class BankCard(
val pan: String,
val cardHolder: String,
val expYear: String,
val expMonth: String,
val cvc: String
) : PaymentMethod()
data class Custom(
val data: Map<String, String>
) : PaymentMethod()
}
Описание PaymentMethod.BankCard
:
pan
- номер карты;
cardHolder
- владелец карты;
expYear
- год окончания срока действия карты (формат "YY");
expMonth
- месяц окончания срока действия карты (формат "mm");
cvc
- код с обратной стороны (3 цифры);
Пример:
PaymentMethod.BankCard(
pan = "4111111111111111",
cardHolder = "ivan ivanov",
expYear = "24",
expMonth = "12",
cvc = "123"
)
Описание PaymentMethod.Custom
:
data
- тип данных Map (словарь) строка - строка;
Пример:
PaymentMethod.Custom(
data = mapOf(
"paymentMethod" to "Mobile",
"phone" to "+79999999999"
)
)
В случае успеха выполнения отправки данных, в onSuccess приходит ответ ResponseData, структура которого выглядит следующим образом:
data class ResponseData(
val uuid: String,
val requestId: String,
val redirect: RedirectResponse?
)
uuid
- идентификатор платежа;
requestId
- идентификатор запроса
redirect
- ссылка для перенаправления пользователя. Например, для карт может потребоваться перенаправление пользователя на страницу ввода кода 3DS. Может быть нулевым, если аутентификация не нужна при платеже. В случае, если ненулевое поле, то структура следующая:
data class RedirectResponse(
val url: String,
val method: String,
val params: List<Pair<String, String>>?
)
Здесь основным параметром является url
, в котором хранится ссылка на редирект, по которому нужно пройти для подтверждения платежа.
В случае же неудачного запроса, в onError приходит ResponseError, его структура следующая:
data class ResponseError(
val code: PaymentErrorCode,
val message: String
)
где
code
- код ошибки с сервера (описание кодов ошибок можно посмотреть здесь)
message
- тело сообщения ошибки
Для завершения работы метода и в случаях когда работа метода ещё не завершена, а жизненный цикл Activity/Fragment где он вызван - уже завершен, рекомендуется вызывать метод close()
в методах уничтожения экрана (onDestroy()
, onDestroyView()
).