# Pagamento com QR Code

Este documento se aplica ao seguinte país:
Argentina |
---|

No Web Checkout da Getnet, em vez de informar os dados do cartão, o comprador escaneia um QR Code dinâmico exibido na tela do Web Checkout, ou abre o aplicativo da carteira pelo deeplink, quando está no celular, e confirma o pagamento dentro da carteira que preferir. O QR Code é gerado em pesos argentinos (ARS), com o valor da compra informado no payment intent.

Como a confirmação acontece dentro da carteira, o pagamento é **assíncrono**: o Web Checkout exibe o QR Code e mantém a transação pendente até que a carteira confirme ou recuse o pagamento.
O resultado final é entregue ao merchant pela [notificação por webhook](/pt/web-checkout/first-steps-wbc/receive-webhook-wbc).

> ⚠️ **Importante**: O QR Code é exibido pela **tela do Web Checkout** (iFrame, Lightbox ou Redirect). Não há chamada de API específica para QR Code na integração do merchant: você cria o payment intent como já faz hoje, e o método passa a aparecer como mais uma opção para o comprador.

## Como funciona

1. Seu back-end cria o payment intent normalmente, sem especificar um método de pagamento.
2. O comprador abre o Web Checkout (iFrame, Lightbox ou Redirect) e seleciona **QR Code** entre as opções disponíveis.
3. O Web Checkout gera e exibe um QR Code dinâmico, com o valor e a moeda da compra, e apresenta o deeplink da carteira para compradores no celular.
4. O comprador escaneia o QR Code (ou abre o deeplink), escolhe o método de pagamento dentro da carteira e confirma a operação.
5. A Getnet recebe a confirmação da carteira, atualiza o pagamento e envia a notificação por webhook para a URL configurada.

O fluxo completo envolve o comprador, a tela do Web Checkout e a API Getnet WebCheckout:

![](https://static-devportal-ux.sensedia-eng.com/Pagonxt/production/documentations/flow-qrcode-payments-wbc-1787834625417-s4mloubv.png)

## Requisitos

- Configurar seu Web Checkout via [Portal](/pt/web-checkout/first-steps-wbc/configuration-by-portal) ou via [API](/pt/web-checkout/first-steps-wbc/configration-by-api) (dependendo da sua localização).
- Gerar seu token seguindo o documento de [Authentication](/pt/web-checkout/first-steps-wbc/authentication-token-wbc).
- Ter o produto `qr_code_checkout` habilitado e configurado para o vendedor.
- Ter uma URL de webhook configurada na configuração técnica, já que o resultado do pagamento por QR Code é sempre entregue de forma assíncrona.

<Callout type="info">

Se você tentar configurar um produto que não está habilitado para o vendedor, a seguinte mensagem é exibida:
```json
\{
   "code": "payment_method_not_enabled_in_seller",
   "message": "Payment method 'qr_code_checkout' is not enabled for this seller. Please enable it in seller configuration first.",
   "details": []
\}
```

</Callout>

## Crie o payment intent

Não há atributo novo nem alteração de contrato para habilitar o QR Code: o payment intent é o mesmo já usado para os outros métodos. Os atributos abaixo são os que afetam a exibição do QR Code.

**Campos da requisição**
| Campo | Tipo | Descrição | Exemplo |
|---|---|---|---|
| `mode` | String | Modo do payment intent. Deve ser `instant` (padrão) para que o comprador pague pela tela do checkout. | `instant` |
| `payment.currency` | String | Código da moeda. O QR Code é processado em pesos argentinos. | `ARS` |
| `payment.amount` | Integer | Valor da compra em formato inteiro, em que os últimos 2 dígitos representam os centavos. | `1410000` |

**Exemplo de requisição**

```json
curl https://api-sbx.pre.globalgetnet.com/dpy/web-checkout/v1/payment-intent \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
  "mode": "instant",
  "order_id": "PEDIDO_AR_97531",
  "payment": {
    "currency": "ARS",
    "amount": 1410000
  },
  "product": [
    {
      "product_type": "cash_carry",
      "title": "Bota de couro Look Fashion",
      "value": 1410000,
      "quantity": 1
    }
  ],
  "customer": {
    "customer_id": "cliente_ar_005",
    "first_name": "Laura",
    "last_name": "Fernández",
    "name": "Laura Fernández",
    "email": "laura.fernandez@example.com.ar",
    "document_type": "dni",
    "document_number": "45678912",
    "billing_address": {
      "street": "Av. Corrientes",
      "number": "1234",
      "city": "Buenos Aires",
      "state": "Buenos Aires",
      "country": "AR",
      "postal_code": "1043"
    }
  },
  "soft_descriptor": "Loja AR",
  "expires_at": "1h"
}'
```

#### Resposta

Exemplo de resposta:

```json
{
  "payment_intent_id": "f6ee8bc7-229d-4d9d-bced-7dd2371a1f57",
  "trade_name": "GetNet Store",
  "redirect_url": "https://www.pre.globalgetnet.com/checkout/f6ee8bc7-229d-4d9d-bced-7dd2371a1f57"
}
```

Com o `payment_intent_id`, carregue o Web Checkout usando a opção de integração que você já utiliza, iFrame, Lightbox ou Redirect, conforme descrito nas opções de integração.

## Experiência do comprador

- O QR Code é **dinâmico**: já contém o valor e a moeda da compra, então o comprador não informa nenhum valor.
- No desktop, o comprador escaneia o código com o aplicativo da carteira. No celular, o checkout também oferece o deeplink que abre a carteira diretamente.
- O método de pagamento usado dentro da carteira (saldo em conta ou cartão) e qualquer plano de parcelamento são escolhidos pelo comprador na carteira, não na sua requisição.
- Enquanto o pagamento não é confirmado, o checkout mantém a tela de espera. Se o comprador sair da tela, o pagamento permanece pendente até ser confirmado na carteira ou até o payment intent expirar.

## Ciclo de vida do status

| Status | Significado |
|---|---|
| `Approved` | A carteira confirmou o pagamento. O payment intent passa para `paid` e a notificação é enviada. |
| `Denied` | A carteira recusou ou cancelou o pagamento, o QR Code foi desativado, ou não foi possível gerar o QR Code. |

## Reconciliação

Concilie a notificação com o seu pedido usando o `order_id` enviado na criação do payment intent, ou usando o próprio `payment_intent_id`. O `payment_id` recebido na notificação é o identificador da transação para consultas e para operações de cancelamento e estorno.

## Próximos passos

- Consulte os [meios de pagamento suportados](/pt/web-checkout/first-steps-wbc/suported-payments-methods-wbc).