Escáner de códigos QR de Android compatible con UPI
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
Android 13 (con compatibilidad con versiones anteriores para Android 12) admite flujos de pagos de IUP, ya que agrega un escáner de códigos QR exclusivo al que los usuarios pueden acceder directamente desde la tarjeta de Configuración rápida correspondiente. Los usuarios pueden iniciar un flujo de pago de UPI escaneando un código QR desde la cámara en vivo o desde una imagen estática.

Cuando se instalan varias apps de UPI en un dispositivo, se le muestra al usuario un diálogo de desambiguación. Luego, el flujo de pagos continúa en la app
que seleccionó el usuario.
Ten en cuenta que el orden de las apps no se modifica de ninguna manera. El SO prioriza las apps que los usuarios usan con más frecuencia y las muestra primero, de manera similar al diálogo de intents de UPI existente.
Compatibilidad con intents de UPI desde el escáner de códigos QR de Android
Cuando se inicia una app de pagos a través de este flujo, el ID del paquete de llamada se establece como com.google.android.gms. Este valor no se puede modificar.
Las apps de pago deben verificar esta fuente y controlar todos los flujos de pago que se inician desde este ID de paquete para que se traten como iniciados por un código QR y se establezca el modo de inicio en QR cuando se envíen datos a la PSP del beneficiario.
Para distinguir entre los pagos iniciados a partir del escaneo de un código QR activo (con la cámara) y el escaneo de una imagen de código QR (foto en el dispositivo), el escáner de códigos QR pasa un intent adicional que ayuda a identificar la fuente del código QR.
Las apps de pago deben recuperar el valor de "intent extra" con la clave com.google.android.gms.UPI_QR_SOURCE
y, luego, compararlo con lo siguiente:
- La cadena
STATIC_IMAGE
indica que la fuente es una imagen estática.
- La cadena
LIVE_CAMERA
indica que la fuente es la cámara.
Clave |
Valor |
Explicación |
com.google.android.gms.UPI_QR_SOURCE |
STATIC_IMAGE
|
Imagen del código QR almacenada en el dispositivo |
|
LIVE_CAMERA
|
Imagen del código QR capturada en vivo con la cámara |
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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 |"]]