Getnet DocsGetnet Docs

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 authorizationRefCode que recibiste al crear la preautorización. Lo envías de vuelta como reservation_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ámetroDescripciónObligatorio
operationDefine "1" para modificar el monto de la preautorización.Sí
reservation_idEl authorizationRefCode recibido al crear la preautorización.Sí
amountEl nuevo monto retenido con dos decimales implícitos (por ejemplo, “15000” para $150.00).Sí
originalAmountValor en moneda local para realizar la transacción.Sí
callerIdIdentificador 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