Getnet DocsGetnet Docs

Crea un pago en un solo paso

Esta guía te muestra cómo crear un flujo de pago automatizado que reduce la interacción del usuario. Para lograrlo, configuras los parámetros de pago con antelación y omites las pantallas de selección manual. Con un pago en un solo paso, el terminal procesa la transacción rápido y con pocos toques del usuario.

Antes de comenzar

Antes de comenzar, asegúrate de cumplir estos requisitos:

  • Haber leído cómo hacer una llamada de Polling (getnet://payment/v1/polling) antes de iniciar la transacción. Así confirmas que no hay transacciones pendientes ni procesos bloqueados.
  • Getnet payment app instalada en el terminal Android.
  • Un callerId único para correlacionar la solicitud con la respuesta.

los pagos en un solo paso funcionan mejor junto con el modo de operación calculado (operationMode = "1"), donde tu aplicación hace todos los cálculos de intereses antes de enviar la solicitud.

Paso 1: Configura y envía el Intent de pago

Para crear un flujo en un solo paso, configura el Intent con todos los parámetros obligatorios y los indicadores de automatización. Esta tabla describe todos los parámetros que puedes usar:

ParámetroTipoObligatorioDescripción
amountStringSíMonto de la transacción (con dos decimales implícitos; por ejemplo, “10000” = $100.00)
originalAmountStringSíValor en moneda local para realizar la transacción.
tipStringNoMonto de propina que se suma al total de la transacción. La representación decimal es la misma que en el parámetro amount (por ejemplo, “500” = $5.00)
waiterCodeStringCondicionalCódigo del camarero para atribuir la propina. Obligatorio si se envía una propina.
receiptCodeStringSíCódigo de identificación que se imprime en el comprobante
callerIdStringSíIdentificador único para correlacionar la solicitud con la respuesta
paymentMethodStringNo"1" para tarjeta, "2" para QR Code. Omite la pantalla de selección del medio de pago.
installmentsStringNoCantidad de cuotas deseadas (solo tarjeta de crédito)
planIdStringNoID del plan de cuotas. Consulta los planes disponibles en tu mercado.
interestStringNoIndica si el plan de cuotas incluye intereses ("true") o es sin intereses ("false")
operationModeStringNo"1" para modo calculado (tu app maneja los intereses), "0" para manual (el terminal aplica las reglas de negocio). Consulta la guía Estrategia de cálculo de intereses.
skipConfirmationStringNoDefine "true" para omitir la pantalla de revisión de cuotas e intereses. Con "false" (predeterminado), la pantalla se muestra normalmente y el usuario debe interactuar para continuar.
skipReceiptStringNoDefine "true" para omitir la pantalla del comprobante del cliente después de la aprobación. Con "false" (predeterminado), la pantalla se muestra normalmente.
allowPrintCurrentTransactionStringNoDefine "true" para que Getnet se encargue de imprimir el comprobante (comportamiento predeterminado). Consulta la guía Responsabilidad de impresión.

Este es un ejemplo básico con los parámetros obligatorios:

private val REQUEST_CODE = 1001

val intent = Intent(Intent.ACTION_VIEW, Uri.parse("getnet://payment/v1/payment"))
intent.putExtra("amount", "10000")              // $100.00
intent.putExtra("originalAmount", "10000")
intent.putExtra("receiptCode", "987654")
intent.putExtra("callerId", "req_001")

startActivityForResult(intent, REQUEST_CODE)

Paso 2: Procesa la respuesta

El terminal devuelve la respuesta mediante onActivityResult. Revisa el campo result para confirmar el éxito:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
        val result = data?.extras?.getString("result")
        
        when (result) {
            "0" -> {
                // Transaction approved
                val nsu = data?.extras?.getString("nsu")
                val authCode = data?.extras?.getString("authorizationCode")
                val amount = data?.extras?.getString("amount")
                // Handle success
            }
            else -> {
                // Transaction failed or cancelled
                val resultDetails = data?.extras?.getString("resultDetails")
                // Handle error
            }
        }
    }
}

Parámetros de respuesta

La respuesta del terminal incluye los siguientes campos clave:

ParámetroTipoDescripción
resultStringResultado de la transacción: "0" indica éxito; otros valores indican falla o cancelación. Consulta la referencia de Códigos de resultado.
resultDetailsStringMensaje detallado sobre el resultado de la transacción (por ejemplo, “APPROVED”, descripciones de error)
amountStringMonto final cobrado con dos decimales implícitos
tipStringMonto de propina agregado a la transacción (si se envió)
waiterCodeStringCódigo del camarero para atribuir la propina (si se envió)
receiptCodeStringCódigo de identificación impreso en el comprobante
callerIdStringEl identificador único enviado en la solicitud para correlacionarla con la respuesta
nsuStringCódigo de autorización de la transacción de Getnet: único por terminal (no se puede repetir en un mismo día)
authorizationCodeStringCódigo de autorización entregado por el emisor de la tarjeta
paymentTypeStringTipo de pago usado: crédito, débito, voucher, etc.
brandStringMarca de tarjeta (por ejemplo, “VISA”, “MASTERCARD”)
cardBinStringPrimeros 8 dígitos de la tarjeta (BIN)
cardLastDigitsStringÚltimos 4 dígitos de la tarjeta usada
inputTypeStringMétodo de lectura de la tarjeta: "021" (banda magnética), "051" (chip), "071" (chip contactless), "801" (banda magnética - fallback)
gmtDateTimeStringFecha y hora GMT de la transacción (formato: MMDDhhmmss, GMT UTC 0)
installmentsStringCantidad de cuotas procesadas (si aplica)
planIdStringID del plan de cuotas usado en la transacción (si aplica)
interestStringIndica si se aplicaron intereses: "true" (con intereses) o "false" (sin intereses)
automationSlipStringDatos del comprobante en formato JSON (se devuelve cuando allowPrintCurrentTransaction = "false"). Consulta la guía Responsabilidad de impresión.

Siguientes pasos

Después de crear un pago correctamente, puedes explorar: