Modifica un pago
En esta guía modificas el monto de una retención preautorizada existente con la Getnet Payment App. Puedes ajustar el monto de una retención ya autorizada en una tarjeta de crédito sin finalizar la venta. Es habitual en escenarios como el check-in de hoteles o el alquiler de autos, donde el total final puede cambiar antes de que el huésped se retire.
Antes de comenzar
Antes de seguir los pasos, necesitas:
- La Getnet Payment App instalada en el terminal.
- El
authorizationRefCodeque recibiste al crear la preautorización. Lo envías de vuelta comoreservation_id. - El nuevo monto con dos decimales implícitos (por ejemplo, “10000” para $100.00).
solo puedes modificar preautorizaciones que aún no se confirmaron (capturaron) ni se eliminaron.
Modifica el monto de la preautorización
Para actualizar el monto retenido en la tarjeta de crédito del cliente, crea un Intent con la operación de modificación (operation = "1") e incluye el identificador de la preautorización.
La siguiente tabla lista los parámetros que envías en el Intent:
| Parámetro | Descripción | Obligatorio |
|---|---|---|
operation | Define "1" para modificar el monto de la preautorización. | Sí |
reservation_id | El authorizationRefCode recibido al crear la preautorización. | Sí |
amount | El nuevo monto retenido con dos decimales implícitos (por ejemplo, “15000” para $150.00). | Sí |
originalAmount | Valor en moneda local para realizar la transacción. | Sí |
callerId | Identificador para correlacionar la solicitud con la respuesta. | No |
El siguiente bloque de código muestra un ejemplo de cómo modificar una preautorización:
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)
}Cuando se procesa la modificación, la Getnet Payment App devuelve el resultado a tu aplicación mediante onActivityResult.
El siguiente bloque de código muestra un ejemplo de cómo manejar la respuesta:
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)")
}
}
}Siguientes pasos
- Crea un pago preautorizado — ciclo de vida completo de la preautorización (crear, confirmar, eliminar, consultar).
- Parámetros de Deeplink — campos completos de solicitud y respuesta de la preautorización.