Для работы с контрактами в 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. Обратите внимание, что вам также понадобятся разрешения для доступа к интернету и обработка соответствующих событий в вашем приложении.