Getnet DocsGetnet Docs

Pagos con Google Pay™

Este documento aplica al siguiente país:

Brasil

Acepta pagos a través de Google Pay™, la billetera digital de Google. El comprador paga con una tarjeta guardada en su cuenta de Google, y tu integración recibe un token de pago cifrado en lugar del número real de la tarjeta.

Esta guía te muestra cómo crear un payment intent, obtener el token de Google Pay en el frontend y enviar el pago a través de una única integración con la API de Web Checkout.

Cómo funciona

Usa Google Pay cuando quieras ofrecer un checkout rápido y tokenizado a los compradores en Android y la web, sin que necesiten escribir los datos de la tarjeta. Características clave:

  • Sin ingreso de tarjeta: el comprador paga con las tarjetas ya guardadas en su cuenta de Google.
  • Token cifrado: el frontend obtiene un token de pago de la API de Google Pay y lo envía a Getnet. El número real de la tarjeta nunca se expone.
  • Autenticación nativa: omite el flujo 3DS.
  • Sin validación de sesión previa: Google Pay no requiere un paso de validación de sesión.
  • Procesamiento síncrono: al enviar el pago, se devuelve el resultado (status / authorization_code) en la misma llamada.

El flujo completo involucra al comprador, tu frontend, tu backend y la API de Getnet Web Checkout:

Requisitos

Antes de integrar, asegúrate de tener lo siguiente:

  • El vendedor (x-seller-id) tiene Google Pay habilitado.
  • Tu integración con la API de Google Pay en el frontend está configurada con el gateway y gatewayMerchantId correctos, para que Getnet pueda procesar el token.
  • Genera tu token siguiendo el documento de Authentication.
  • El onboarding de dominio está completo para tu tipo de integración (ver más abajo).

Onboarding técnico por tipo de integración

Tipo de integraciónRegistro de dominio
Link & Redirect APIUsa el dominio de Getnet, no requiere registro del dominio del comercio.
Iframe & LightboxEl dominio del comercio difiere del dominio de Getnet. El comercio debe indicar su dominio en la configuración de Web Checkout, para que Getnet pueda registrarlo con Google.

Puedes configurar el tipo de checkout (Iframe & Lightbox) y las opciones que se aceptarán desde el Portal o por API. Sigue los pasos del documento para configurar por Portal o por API.

Paso 1: Crea el payment intent

Llama a la API de Web Checkout para crear un payment intent. Devuelve un payment_intent_id y una redirect_url.

Endpoint
POST /payment-intent

Campos obligatorios

CampoTipoDescripciónEjemplo
payment.currencyStringCódigo de moneda.BRL
payment.amountIntegerImporte de la compra en formato entero, donde los últimos 2 dígitos representan los céntimos. Para países donde no aplican los céntimos, completa el importe con 2 ceros a la derecha.92500
customer.customer_idStringSe recomienda usar el número de documento del cliente, solo letras y números, sin caracteres especiales, separadores ni espacios.12345678912
customer.first_nameStringNombre del cliente.John
customer.last_nameStringApellido del cliente.Doe Smith
customer.nameStringNombre completo del cliente.John Doe Smith
customer.emailStringDirección de correo electrónico del cliente.[email protected]
customer.document_typeStringTipo de documento usado para identificar al cliente.CPF
customer.document_numberStringNúmero de documento usado para identificar al cliente.12345678912
customer.billing_address.streetStringNombre de una calle.Av. Brasil
customer.billing_address.numberStringNúmero que identifica la posición de un edificio en una calle.1000
customer.billing_address.countryStringCódigo de país.BR
customer.billing_address.postal_codeStringCódigo postal.90230060

Campos opcionales

CampoTipoDescripciónEjemplo
configurations.3dsbooleanControla la autenticación 3D Secure.true o false
configurations.preauthorizationbooleanIndica si el pago es una preautorización.true o false
configurations.card_verificationbooleanIndica si se trata de un flujo de verificación de tarjeta.true o false
configurations.success_urlstringURL de redirección en caso de pago exitoso.https://www.mystore.com/checkout/success
configurations.error_urlstringURL de redirección en caso de error durante el pago.https://www.mystore.com/checkout/error
productarrayÍtems de la compra.---
soft_descriptorstringDescripción del pago que aparece en el comprobante del clienteLoja BR
expires_atstringVencimiento del payment intent.3d4h15m

Reglas de llenado de campos:

  • El campo expires_at acepta un valor de duración (por ejemplo, 15m, 2h, 7d o 1d12h30m). Esta duración se aplica sin importar la zona horaria del comercio. La marca de tiempo de vencimiento que devuelve la API siempre tiene formato GMT+0 (UTC). Si no se proporciona ningún valor, el payment intent no vence.
  • Cuando se proporcionan success_url y error_url en la solicitud del payment intent, estos valores anulan lo configurado en la configuración técnica del vendedor.

Ejemplo de solicitud:

{
  "mode": "instant",
  "order_id": "ORDER_GPAY_BR_0001",
  "configurations": {
    "3ds": true,
    "preauthorization": false,
    "card_verification": false,
    "success_url": "https://www.mystore.com/checkout/success",
    "error_url": "https://www.mystore.com/checkout/error"
  },
  "payment": {
    "currency": "BRL",
    "amount": 92500
  },
  "product": [
    {
      "product_type": "service",
      "title": "Plano Pro",
      "description": "Assinatura 1 mes",
      "value": 92500,
      "quantity": 1
    }
  ],
  "customer": {
    "customer_id": "customer_br_005",
    "first_name": "Jose",
    "last_name": "da Silva",
    "name": "Jose da Silva",
    "email": "[email protected]",
    "document_type": "CPF",
    "document_number": "12345678909",
    "phone_number": "5511999998888",
    "checked_email": true,
    "billing_address": {
      "street": "Av. Paulista",
      "number": "1000",
      "complement": "Cj 101",
      "district": "Bela Vista",
      "city": "Sao Paulo",
      "state": "SP",
      "country": "BR",
      "postal_code": "01310100"
    }
  },
  "soft_descriptor": "Loja BR",
  "expires_at": "1h"
}

Paso 2: Redirige y obtén el token

Redirige al comprador a la redirect_url, o muestra la pantalla de checkout incrustada donde elige Google Pay. El comprador se autentica en su dispositivo Android o navegador (sin pasar por 3DS).

Paso 3: Confirma el resultado

Google Pay es síncrono, la llamada devuelve status y authorization_code. Confirma también el resultado mediante webhook a notification.url antes de liberar el pedido.

El estado del webhook puede ser Authorized o Denied.

Respuesta de webhook aprobada

Ejemplo de respuesta:

{
  "payment_intent_id": "ee0b7dd5-92da-4ef4-ad3b-0ba369ad0efe",
  "checkout_id": "5ab15d1e-ea8b-4560-84d2-fb3d02179537",
  "order_id": "ORDER_GPAY_BR_0001",
  "mode": "instant",
  "seller": {
    "id": "716d899e-9091-4577-a12f-8a77ec4d1e0b",
    "trade_name": "GetNet Shop",
    "merchant_document": "00000000000",
    "settings": { "notification_url_configured": true }
  },
  "customer": {
    "customer_id": "customer_br_005",
    "name": "Jose da Silva",
    "email": "[email protected]",
    "document_type": "CPF",
    "document_number": "12345678909"
  },
  "payment": {
    "method": "google_pay",
    "amount": 92500,
    "currency": "BRL",
    "result": {
      "payment_id": "9c8f0e2a-1b3d-4c5e-8a7f-2d1e0b9c8a7d",
      "status": "Authorized",
      "authorization_code": "123456",
      "transaction_datetime": "2026-07-08T12:00:00.000Z"
    }
  },
  "created_at": "2026-07-08T11:59:30.000Z",
  "updated_at": "2026-07-08T12:00:00.000Z"
}

Respuesta de webhook denegada

Ejemplo de respuesta:

{
  "payment_intent_id": "ee0b7dd5-92da-4ef4-ad3b-0ba369ad0efe",
  "checkout_id": "5ab15d1e-ea8b-4560-84d2-fb3d02179537",
  "order_id": "ORDER_GPAY_BR_0001",
  "mode": "instant",
  "payment": {
    "method": "google_pay",
    "amount": 92500,
    "currency": "BRL",
    "result": {
      "payment_id": "9c8f0e2a-1b3d-4c5e-8a7f-2d1e0b9c8a7d",
      "status": "Denied",
      "transaction_datetime": "2026-07-08T12:01:00.000Z",
      "return_message": "Card not accepted for this operation"
    }
  },
  "created_at": "2026-07-08T11:59:30.000Z",
  "updated_at": "2026-07-08T12:01:00.000Z"
}