# Modifique um pagamento

Este guia mostra como modificar o valor de uma pré-autorização existente com o Getnet Payment App. Você ajusta o valor bloqueado no cartão de crédito sem finalizar a venda. Esse recurso é comum em check-in de hotel e em locação de veículos. Nesses casos, o total final pode mudar antes da saída do hóspede.

## Antes de começar

Antes de seguir os passos, você precisa de:

* Getnet Payment App instalado no terminal.
* O `authorizationRefCode` retornado na criação da pré-autorização. Você o envia de volta como `reservation_id`.
* O novo valor com duas casas decimais implícitas (ex.: "10000" para \$100.00).

<Callout type="note">

você só pode modificar pré-autorizações que ainda não foram confirmadas (capturadas) nem removidas.

</Callout>

## Modifique o valor da pré-autorização

Para atualizar o valor bloqueado no cartão de crédito do cliente, crie um Intent com a operação de modificação (`operation` = `"1"`) e inclua o identificador da pré-autorização.

A tabela abaixo lista os parâmetros que você envia no Intent:

| Parâmetro | Descrição | Obrigatório |
| :--- | :--- | :--- |
| `operation` | Defina como `"1"` para modificar o valor da pré-autorização. | Sim |
| `reservation_id` | O `authorizationRefCode` recebido na criação da pré-autorização. | Sim |
| `amount` | O novo valor bloqueado com duas casas decimais implícitas (ex.: "15000" para \$150.00). | Sim |
| `originalAmount` | Valor em moeda local para realizar a transação. | Sim |
| `callerId` | Identificador para correlacionar a requisição com a resposta. | Não |

O bloco de código abaixo mostra um exemplo de como modificar uma pré-autorização:

```kotlin
private val PREAUTH_UPDATE_CODE = 1002

private fun updatePreAuthAmount(reservationId: String) {
    val intent = Intent(Intent.ACTION_VIEW, Uri.parse("getnet://payment/v1/pre-auth"))

    // Operation type
    intent.putExtra("operation", "1") // 1 = modify

    // Pre-authorization identifier
    intent.putExtra("reservation_id", reservationId)

    // New total amount
    intent.putExtra("amount", "15000") // $150.00
    intent.putExtra("originalAmount", "15000")

    intent.putExtra("callerId", "req_update_001")

    startActivityForResult(intent, PREAUTH_UPDATE_CODE)
}
```

Depois de processar a modificação, o Getnet Payment App retorna o resultado ao seu aplicativo via `onActivityResult`.

O bloco de código abaixo mostra um exemplo de tratamento da resposta:

```kotlin
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    if (requestCode == PREAUTH_UPDATE_CODE && resultCode == RESULT_OK) {
        val extras = data?.extras
        val result = extras?.getString("result")

        if (result == "0") {
            // SUCCESS: Update successful
            val newAmount = extras?.getString("amount")
            Log.d("PreAuth", "Pre-authorization modified successfully")
            Log.d("PreAuth", "New amount: $newAmount")

            // Sync your local database with the new amount
        } else {
            // FAILURE: Handle error
            val errorDetails = extras?.getString("resultDetails")
            Log.e("PreAuth", "Modification failed: $errorDetails (Code: $result)")
        }
    }
}
```

## Próximos passos

* [Crie um pagamento pré-autorizado](/pt/app2app/payment-guides-a2a/create-preauth-payment) — ciclo de vida completo da pré-autorização (criar, confirmar, remover, consultar).
* [Parâmetros de deeplink](/pt/app2app/reference-a2a/deeplink-parameters) — todos os campos de requisição e resposta da pré-autorização.