Как использовать Tinkoff SDK для создания и выполнения контрактов?

Как правильно создать и зарегистрировать контракт для платежного шлюза на Kotlin с использованием "Tinkoff Acquiring SDK for Android", а также какие данные нужно передавать и как обработать контракт? У кого-нибудь есть опыт работы с этим devkit'ом и может поделиться инструкциями или примерами кода? В моей реализации в классе PaymentActivity возникают сложности с пониманием этого процесса.
  • 13 декабря 2023 г. 8:51
Ответы на вопрос 1
Для работы с контрактами в Tinkoff Acquiring SDK for Android вам потребуется выполнить несколько шагов:

1. Добавьте зависимость для SDK в ваш файл `build.gradle`:

```kotlin
implementation 'ru.tinkoff.acquiring:android-sdk:3.0.0'
```

2. Создайте экземпляр `Contract` и укажите необходимые параметры:

```kotlin
val contract = Contract.Builder()
    .setOrderId(orderId)
    .setAmount(amount)
    .setCustomerKey(customerKey)
    .setTerminalKey(terminalKey)
    .setPassword(password)
    .setFailUrl(failUrl)
    .setSuccessUrl(successUrl)
    .build()
```

- `orderId` - уникальный идентификатор заказа
- `amount` - сумма заказа
- `customerKey` - идентификатор покупателя
- `terminalKey` - идентификатор вашего терминала
- `password` - пароль для доступа к API
- `failUrl` - URL, на который пользователь будет перенаправлен в случае неуспешной оплаты
- `successUrl` - URL, на который пользователь будет перенаправлен после успешной оплаты

3. Зарегистрируйте контракт с помощью `ContractRegistration`:

```kotlin
AcquiringSdk.registerContract(contract, object : ContractRegistrationCallback {
    override fun onContractRegistered(contract: Contract, status: ContractRegistrationStatus) {
        // Обработка результатов регистрации контракта
    }

    override fun onContractRegistrationError(throwable: Throwable) {
        // Обработка ошибки регистрации контракта
    }
})
```

4. Обработайте результат регистрации контракта:

```kotlin
override fun onContractRegistered(contract: Contract, status: ContractRegistrationStatus) {
    when (status) {
        ContractRegistrationStatus.SUCCESS -> {
            // Контракт успешно зарегистрирован, выполните переход к платежному шлюзу
            val intent = Intent(this, PaymentGateActivity::class.java)
            intent.putExtra("contract", contract)
            startActivity(intent)
        }
        ContractRegistrationStatus.CANCELED -> {
            // Регистрация контракта отменена пользователем
        }
        ContractRegistrationStatus.ERROR -> {
            // Произошла ошибка во время регистрации контракта
        }
    }
}
```

5. В `PaymentGateActivity` получите контракт и передайте его в `PaymentFormActivity`:

```kotlin
val contract = intent.getSerializableExtra("contract") as Contract

val intent = Intent(this, PaymentFormActivity::class.java)
intent.putExtra("contract", contract)
startActivity(intent)
```

6. В `PaymentFormActivity` получите контракт и выполните обработку платежа:

```kotlin
val contract = intent.getSerializableExtra("contract") as Contract

AcquiringSdk.sendContract(contract, object : ContractExecutionCallback {
    override fun onContractExecuted(contract: Contract, status: ContractExecutionStatus) {
        when (status) {
            ContractExecutionStatus.SUCCESS -> {
                // Платеж успешно выполнен
            }
            ContractExecutionStatus.CANCELED -> {
                // Платеж отменен пользователем
            }
            ContractExecutionStatus.ERROR -> {
                // Произошла ошибка во время выполнения платежа
            }
        }
    }

    override fun onContractExecutionError(throwable: Throwable) {
        // Обработка ошибки выполнения платежа
    }
})
```

Это пример основных шагов по работе с контрактами в Tinkoff Acquiring SDK for Android. Обратите внимание, что вам также понадобятся разрешения для доступа к интернету и обработка соответствующих событий в вашем приложении.
Похожие вопросы