Leitor de QR code do Android com suporte à UPI
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
O Android 13 (com compatibilidade com versões anteriores do Android 12) oferece suporte a fluxos de pagamento
da UPI adicionando um leitor de código QR dedicado que os usuários podem acessar
diretamente do bloco de Configurações rápidas correspondente. Os usuários podem iniciar
um fluxo de pagamento da UPI lendo um código QR da câmera ao vivo ou de
uma imagem estática.

Quando vários apps UPI são instalados em um dispositivo, o usuário recebe
uma caixa de diálogo de desambiguação. O fluxo de pagamento continua no app
selecionado pelo usuário.
A ordem dos apps não é modificada de nenhuma forma. Os apps mais
usados pelos usuários são priorizados pelo SO e mostrados primeiro, de forma semelhante
à caixa de diálogo de intent UPI atual.
Suporte a intents da UPI do leitor de QR code do Android
Quando um app de pagamento é iniciado por esse fluxo, o ID do pacote de chamada é definido
como com.google.android.gms. Esse valor não pode ser alterado.
Os apps de pagamento precisam verificar essa origem e processar todos os fluxos de pagamento iniciados a partir desse ID de pacote para que sejam tratados como iniciados por QR e definir o modo de iniciação como QR ao enviar dados para o PSP do beneficiário.
Para distinguir os pagamentos iniciados pela leitura de um código QR ativo (usando
a câmera) e a leitura de uma imagem de código QR (foto no dispositivo), o leitor de QR code
transmite uma intent extra que ajuda a identificar a origem do código QR.
Os apps de pagamento precisam buscar o valor de "intent extra" com a chave
com.google.android.gms.UPI_QR_SOURCE
e comparar com o seguinte:
- A string
STATIC_IMAGE
indica que a origem é uma imagem estática.
- A string
LIVE_CAMERA
indica que a origem é a câmera.
Chave |
Valor |
Explicação |
com.google.android.gms.UPI_QR_SOURCE |
STATIC_IMAGE
|
Imagem do código QR armazenada no dispositivo. |
|
LIVE_CAMERA
|
Imagem do QR code capturada em tempo real usando a câmera |
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-07-27 UTC."],[],[],null,["# Android QR scanner with UPI support\n\nAndroid 13 (with backwards compatibility for Android 12) supports UPI\npayment flows by adding a dedicated QR Code scanner that users can access\ndirectly from the corresponding Quick Settings tile. Users can launch\na UPI payment flow by scanning a QR Code either from the live camera or from\na static image.\n\n\nWhen multiple UPI apps are installed on a device, the user is presented\nwith a disambiguation dialog. The payment flow then continues in the app\nselected by the user.\n\nNote that the order of apps is not modified in any manner. Users' most\nfrequently used apps are prioritized by the OS and displayed first, similar to\nthe existing UPI intent dialog.\n\nSupport UPI intents from Android QR scanner\n-------------------------------------------\n\nWhen a payment app is launched via this flow, the calling package ID is set\nas **com.google.android.gms**. This value cannot be altered.\n\nPayment apps need to **verify this source** and handle all the payment\nflows initiated from this package ID to be **treated as initiated by QR** and\n**set the initiation mode to QR when sending data to the payee's PSP**.\n\nTo distinguish between payments initiated from scanning a live QR Code (using\nthe camera) and scanning a QR Code image (photo on device), the QR scanner\npasses an intent **extra** which helps identify the source of the QR Code.\n\nPayment apps need to fetch the value of \"intent **extra** \" with the key\n`com.google.android.gms.UPI_QR_SOURCE`, and then compare with the following:\n\n- `STATIC_IMAGE` string indicates that the source is a static image.\n- `LIVE_CAMERA` string indicates that the source is the camera.\n\n|--------------------------------------|----------------|----------------------------------------------|\n| **Key** | **Value** | **Explanation** |\n| com.google.android.gms.UPI_QR_SOURCE | `STATIC_IMAGE` | QR code image stored on the device. |\n| | `LIVE_CAMERA` | QR code image captured live using the camera |"]]