Getnet DocsGetnet Docs

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).

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

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âmetroDescriçãoObrigatório
operationDefina como "1" para modificar o valor da pré-autorização.Sim
reservation_idO authorizationRefCode recebido na criação da pré-autorização.Sim
amountO novo valor bloqueado com duas casas decimais implícitas (ex.: “15000” para $150.00).Sim
originalAmountValor em moeda local para realizar a transação.Sim
callerIdIdentificador 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:

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:

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