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
gatewayygatewayMerchantIdcorrectos, 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ón | Registro de dominio |
|---|---|
| Link & Redirect API | Usa el dominio de Getnet, no requiere registro del dominio del comercio. |
| Iframe & Lightbox | El 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. |
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
| Campo | Tipo | Descripción | Ejemplo |
|---|---|---|---|
payment.currency | String | Código de moneda. | BRL |
payment.amount | Integer | Importe 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_id | String | Se recomienda usar el número de documento del cliente, solo letras y números, sin caracteres especiales, separadores ni espacios. | 12345678912 |
customer.first_name | String | Nombre del cliente. | John |
customer.last_name | String | Apellido del cliente. | Doe Smith |
customer.name | String | Nombre completo del cliente. | John Doe Smith |
customer.email | String | Dirección de correo electrónico del cliente. | [email protected] |
customer.document_type | String | Tipo de documento usado para identificar al cliente. | CPF |
customer.document_number | String | Número de documento usado para identificar al cliente. | 12345678912 |
customer.billing_address.street | String | Nombre de una calle. | Av. Brasil |
customer.billing_address.number | String | Número que identifica la posición de un edificio en una calle. | 1000 |
customer.billing_address.country | String | Código de país. | BR |
customer.billing_address.postal_code | String | Código postal. | 90230060 |
Campos opcionales
| Campo | Tipo | Descripción | Ejemplo |
|---|---|---|---|
configurations.3ds | boolean | Controla la autenticación 3D Secure. | true o false |
configurations.preauthorization | boolean | Indica si el pago es una preautorización. | true o false |
configurations.card_verification | boolean | Indica si se trata de un flujo de verificación de tarjeta. | true o false |
configurations.success_url | string | URL de redirección en caso de pago exitoso. | https://www.mystore.com/checkout/success |
configurations.error_url | string | URL de redirección en caso de error durante el pago. | https://www.mystore.com/checkout/error |
product | array | Ítems de la compra. | --- |
soft_descriptor | string | Descripción del pago que aparece en el comprobante del cliente | Loja BR |
expires_at | string | Vencimiento del payment intent. | 3d4h15m |
Reglas de llenado de campos:
- El campo
expires_atacepta 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_urlyerror_urlen 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"
}