# Pagamentos com Google Pay™

![](https://static-devportal-ux.sensedia-eng.com/Pagonxt/staging/documentations/resize-image-project-1772218139978-yi0ruxuo.png)

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:

![](https://static-devportal-ux.sensedia-eng.com/Pagonxt/production/images/google-diagram-wbc-1784580691506-uo0y6lgs.png)

## 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](/pt/web-checkout/first-steps-wbc/authentication-token-wbc)
- 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. |

<Callout type="info">

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](/pt/web-checkout/first-steps-wbc/configuration-by-portal) ou pela [API](/pt/web-checkout/first-steps-wbc/configration-by-api).

</Callout>

## 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.| `customer@email.com.br`  |
| `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_at` aceita 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_url` e `error_url` são informados na requisição do payment intent, eles substituem o valor configurado na configuração técnica do vendedor.

#### Exemplo de requisição:

```json
{
  "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": "customer@email.com",
    "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:

```json
{
  "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": "customer@email.com",
    "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:

```json
{
  "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"
}
```