
ru.tinkoff.acquiring.sdk.responses.GetTerminalPayMethodsResponse.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of core Show documentation
Show all versions of core Show documentation
Library which allows you to use internet acquiring in your android app
package ru.tinkoff.acquiring.sdk.responses
import com.google.gson.JsonDeserializationContext
import com.google.gson.JsonDeserializer
import com.google.gson.JsonElement
import com.google.gson.annotations.JsonAdapter
import com.google.gson.annotations.SerializedName
import com.google.gson.reflect.TypeToken
import ru.tinkoff.acquiring.sdk.AcquiringSdk
import java.io.Serializable
import java.lang.reflect.Type
/**
* Ответ на запрос /v2/GetTerminalPayMethods
*
* @param terminalInfo - Характеристики терминала
*
*
* Created by Ivan Golovachev
*/
class GetTerminalPayMethodsResponse(
@SerializedName("TerminalInfo")
val terminalInfo: TerminalInfo? = null
) : AcquiringResponse()
/**
*
* @param terminalInfo - Характеристики терминала
* @param paymethods - Перечень доступных методов оплаты
* @param addCardScheme - Признак возможности сохранения карт
* @param tokenRequired - Признак необходимости подписания токеном
* @param initTokenRequired - Признак необходимости подписания токеном запроса /init
*
*
* Created by Ivan Golovachev
*/
class TerminalInfo(
@JsonAdapter(PaymethodDataListDeserializer::class)
@SerializedName("Paymethods")
val paymethods: List = emptyList(),
@SerializedName("AddCardScheme")
val addCardScheme: Boolean = false,
@SerializedName("TokenRequired")
val tokenRequired: Boolean = true,
@SerializedName("InitTokenRequired")
val initTokenRequired: Boolean = false
) : Serializable
/**
* @param params - Перечень параметров подключения в формате ключ-значение
*/
class PaymethodData(
@SerializedName("PayMethod")
val paymethod: Paymethod? = null,
@SerializedName("Params")
val params: Map = emptyMap()
) : Serializable
enum class Paymethod : Serializable {
@SerializedName("MirPay")
MirPay,
@SerializedName("TinkoffPay")
TinkoffPay,
@SerializedName("SBP")
SBP,
@SerializedName("Cards")
Cards,
}
/**
* Парсер возвращает список информации о поддерживаемых способах оплаты
* ([ru.tinkoff.acquiring.sdk.responses.Paymethod]), другие способы оплаты игнорируются.
*/
internal class PaymethodDataListDeserializer : JsonDeserializer> {
override fun deserialize(
json: JsonElement,
typeOfT: Type,
context: JsonDeserializationContext
): List {
val result = mutableListOf()
try {
json.asJsonArray.forEach { item ->
val data = context.deserialize(
item,
TypeToken.get(PaymethodData::class.java).type
)
if (data.paymethod == null) {
AcquiringSdk.log("Unsupported pay method $item")
} else {
result.add(data)
}
}
} catch (e: Exception) {
AcquiringSdk.log(e)
}
return result
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy