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
authorizationRefCoderetornado na criação da pré-autorização. Você o envia de volta comoreservation_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â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:
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
- Crie um pagamento pré-autorizado — ciclo de vida completo da pré-autorização (criar, confirmar, remover, consultar).
- Parâmetros de deeplink — todos os campos de requisição e resposta da pré-autorização.