Skip to main content

Основные операции

  • Все API — асинхронные (suspend), вызывайте из CoroutineScope.
  • Для Android SDK требует WorkManager; он тянется транзитивно и инициализируется SDK.
  • Поля TransactionAdditionalAttribute: recipient_inn, phone, email, sign_on_screen, field_55, sbp_refund_id.
  • Валюта и суммы: Money(amount: Long, currency: Int), где сумма в минорных единицах (например, 100_00 = 100.00 RUB), currency — ISO-4217 numeric (например, 643 — RUB).

Профиль терминала выбирается по profile_id.

Получить список профилей:

    val profiles = DriverImpl.core.getProfiles()
val defaultProfileId = DriverImpl.core.getDefaultProfile()
val byTid = DriverImpl.core.getProfileByTID(tid = "12345678")
val byExternal = DriverImpl.core.getProfileByExternalID(externalId = "ext-1")

Платёж:

    val tx = DriverImpl.core.pay(
PaymentOperationData(
money = Money(amount = 10_00, currency = 643),
profile_id = defaultProfileId
// additionalAttributes = listOf(TransactionAdditionalAttribute(...))
)
)
// tx: Transaction (PAN-маска, AID, RRN, код/сообщение хоста, чек printView и т.д.)

Считывание PAN без списания:

    val tx = DriverImpl.core.readCardPan(
PaymentOperationData(Money(1, 643), profile_id = defaultProfileId)
)

Платёж по СБП:

    val tx = DriverImpl.core.sbpPay(
PaymentOperationData(Money(10_00, 643), profile_id = defaultProfileId)
)

Возврат (или Умная отмена в рамках разрешённого окна):

    val tx = DriverImpl.core.refund(
RefundOperationData(
money = Money(10_00, 643),
rrn = "123456789012",
authorizationCode = "A1B2C3",
transactionRegisteredTime = "YYYYMMDDHHmmss", // опционально (UTC+0) — для smart cancel
profileId = defaultProfileId
)
)

Возврат по СБП:

    val tx = DriverImpl.core.sbpRefund(
RefundOperationData(
money = Money(10_00, 643),
rrn = "N/A",
authorizationCode = "N/A",
profileId = defaultProfileId,
additionalAttributes = listOf(
TransactionAdditionalAttribute(
name = TransactionAdditionalAttributeKeys.SBP_INVOICE_ID,
value = "invoice-id"
)
)
)
)

Отмена (void):

    val tx = DriverImpl.core.cancel(
CancelOperationData(
money = Money(10_00, 643),
rrn = "123456789012",
authorizationCode = "A1B2C3",
profile_id = defaultProfileId,
type = PosOperations.CANCELLATION
)
)

Предавторизация и Завершение:

    val preauth = DriverImpl.core.preauth(
PreAuthOperationData(Money(10_00, 643), profile_id = defaultProfileId)
)

val completion = DriverImpl.core.completion(
CompletionOperationData(
money = Money(10_00, 643),
rrn = requireNotNull(preauth.referenceRetrievalNumber),
profile_id = defaultProfileId
)
)

Платёж ручным вводом карты (PAN + срок действия):

    val tx = DriverImpl.core.pay(
ManualPaymentOperationData(
money = Money(amount = 10_00, currency = 643),
profileId = defaultProfileId,
pan = "4111111111111111",
expiry = 2512 // YYMM
)
)

Биометрический платёж (распознавание лица, требует BiometryComponent):

    val tx = DriverImpl.core.payByFace(
PaymentOperationData(
money = Money(amount = 10_00, currency = 643),
profile_id = defaultProfileId
)
)

Остановить текущую операцию (если поддерживается):

    // suspend
DriverImpl.core.stopTrans()