Pagamentos com Google Pay™

Este documento se aplica ao seguinte país:
| Brasil |
|---|
Aceite pagamentos com o Google Pay™, a carteira digital do Google. O comprador paga com um cartão salvo em sua conta do Google, e sua integração recebe um token de pagamento criptografado em vez do número real do cartão.
Este guia orienta você na criação de um payment intent, na obtenção do token do Google Pay no frontend e no envio do pagamento por meio de uma única integração com a API Web Checkout.
Como funciona
Use o Google Pay quando quiser oferecer aos compradores um checkout rápido e tokenizado no Android e na web, sem que eles precisem digitar os dados do cartão. Principais características:
- Sem digitação de cartão: o comprador paga com os cartões já salvos em sua conta do Google.
- Token criptografado: o frontend obtém um token de pagamento da API do Google Pay e o encaminha para a Getnet. O número real do cartão nunca é exposto.
- Autenticação nativa: ignora o fluxo 3DS.
- Sem validação prévia de sessão: o Google Pay não exige uma etapa de validação de sessão.
- Processamento síncrono: o envio do pagamento retorna o resultado (status / authorization_code) na mesma chamada.
O fluxo completo envolve o comprador, seu frontend, seu backend e a API Getnet Web Checkout:

Antes de começar
Certifique-se de que os itens abaixo estejam prontos antes de integrar:
- O vendedor (x-seller-id) tem o Google Pay habilitado.
- Sua integração com a API do Google Pay no frontend está configurada com o gateway e o gatewayMerchantId corretos, para que o token possa ser processado pela Getnet.
- Gere seu token seguindo o documento de Authentication
- O onboarding do domínio está concluído para seu tipo de integração (veja abaixo).
Onboarding técnico por tipo de integração
| Tipo de integração | Registro de domínio |
|---|---|
| Link & Redirect API | Usa o domínio da Getnet; não é necessário registrar o domínio do estabelecimento. |
| Iframe & Lightbox | O domínio do estabelecimento é diferente do domínio da Getnet. O estabelecimento deve informar seu domínio na configuração do Web Checkout para que a Getnet possa registrá-lo junto ao Google. |
O tipo de checkout (Iframe & Lightbox) e as opções que serão aceitas podem ser definidos no Merchant Portal ou por API. Siga as etapas do documento para configurar pelo Merchant Portal ou pela API.
Etapa 1: Crie o payment intent
Chame a API Web Checkout para criar um payment intent. Ela retorna um payment_intent_id e uma redirect_url.
| Endpoint |
|---|
POST /payment-intent |
Campos obrigatórios
| Campo | Tipo | Descrição | Exemplo |
|---|---|---|---|
payment.currency | String | Código da moeda. | BRL |
payment.amount | Integer | Valor da compra em formato inteiro, onde os últimos 2 dígitos representam os centavos. Para países onde não se aplicam centavos, preencha o valor com 2 zeros à direita. | 92500 |
customer.customer_id | String | Recomenda-se usar o número do documento do cliente, apenas letras e números, sem caracteres especiais, separadores ou espaços. | 12345678912 |
customer.first_name | String | Primeiro nome do cliente. | John |
customer.last_name | String | Sobrenome do cliente. | Doe Smith |
customer.name | String | Nome completo do cliente. | John Doe Smith |
customer.email | String | Endereço de e-mail do cliente. | [email protected] |
customer.document_type | String | Tipo de documento usado para identificar o cliente. | CPF |
customer.document_number | String | Número do documento usado para identificar o cliente. | 12345678912 |
customer.billing_address.street | String | Nome de uma rua. | Av. Brasil |
customer.billing_address.number | String | Número que identifica a posição de um imóvel na rua. | 1000 |
customer.billing_address.country | String | Código do país. | BR |
customer.billing_address.postal_code | String | CEP ou código postal. | 90230060 |
Campos opcionais
| Campo | Tipo | Descrição | Exemplo |
|---|---|---|---|
configurations.3ds | boolean | Controla a autenticação 3D Secure. | true ou false |
configurations.preauthorization | boolean | Indica se o pagamento é uma pré-autorização. | true ou false |
configurations.card_verification | boolean | Indica se este é um fluxo de verificação de cartão. | true ou false |
configurations.success_url | string | URL de redirecionamento em caso de pagamento bem-sucedido. | https://www.mystore.com/checkout/success |
configurations.error_url | string | URL de redirecionamento em caso de erro durante o pagamento. | https://www.mystore.com/checkout/error |
product | array | Itens do pedido. | --- |
soft_descriptor | string | Descrição do pagamento exibida no comprovante do cliente | Loja BR |
expires_at | string | Expiração do payment intent. | 3d4h15m |
Regras de preenchimento dos campos:
- O campo
expires_ataceita um valor de duração (por exemplo, 15m, 2h, 7d ou 1d12h30m). Essa duração é aplicada independentemente do fuso horário do estabelecimento. O timestamp de expiração retornado pela API é sempre formatado em GMT+0 (UTC). Se nenhum valor for informado, o payment intent não expira. - Quando
success_urleerror_urlsão informados na requisição do payment intent, eles substituem o valor configurado na configuração técnica do vendedor.
Exemplo de requisição:
{
"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"
}
Etapa 2: Redirecione e obtenha o token
Redirecione o comprador para a redirect_url, ou exiba a tela de checkout incorporada onde ele escolhe o Google Pay. O comprador se autentica no dispositivo Android ou navegador (sem passar pelo 3DS).
Etapa 3: Confirme o resultado
O Google Pay é síncrono, a chamada retorna status e authorization_code. Confirme também o resultado por webhook para notification.url antes de liberar o pedido.
Webhook status pode ser Authorized ou Denied.
Resposta de webhook aprovada
Exemplo de resposta:
{
"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"
}Resposta de webhook negada
Exemplo de resposta:
{
"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"
}