Solución de problemas

En la guía de solución de problemas de la Web, se abordan problemas y preguntas relacionados con los siguientes temas.

Registro y acceso

Es posible que encuentres los siguientes errores en algún momento de la integración. En esta lista, se proporcionan algunas sugerencias útiles para solucionar problemas en caso de que surjan estos errores.

Este comercio no está habilitado para Google Pay
La API de Google Pay requiere un merchantId de Google para los sitios que configuran PaymentsClient para un entorno de PRODUCTION. Un merchantId de Google está asociado con uno o más dominios completamente calificados a través de la Consola de Google Pay y la Billetera. Consulta los detalles del error que se devolvieron para obtener más información.
Este comercio no completó el registro para usar la API de Google Pay. Ve a la consola (https://pay.google.com/business/console) para verificarlo.
No completaste el proceso para registrar tus sitios web en la API de Google Pay. Revisa Solicita acceso a producción para registrarte con Google Pay & Wallet Console y solicita una revisión del uso que hace tu sitio web de la API de Google Pay.
Este perfil de comercio no tiene acceso a esta función
Google no configuró tu sitio web para usar la API de Google Pay. Revisa Solicitar acceso a producción para solicitar una revisión del uso que hace tu sitio web de la API de Google Pay a través de Google Pay & Wallet Console.
Esta integración de la API de Google Pay está inhabilitada. Comunícate con nosotros para obtener más información (https://developers.google.com/pay/api/faq#how-to-get-support).
Comunícate con nosotros para obtener más información sobre los pasos necesarios para volver a habilitar la API de Google Pay en tu Cuenta de Google.
Tu dominio "example.com" no está registrado para usar esta API
El dominio en el que se aloja tu confirmación de compra no está asociado con el merchantId que usas. Asegúrate de que el parámetro merchantId sea correcto y de que tu dominio esté registrado a través de la Consola de Google Pay y Billetera.
Se debe llamar a la API de Google Pay en un contexto seguro.
La API de Google Pay solo se puede usar en sitios web en un contexto seguro. Para obtener más información, consulta Contextos seguros.
No se encontraron claves para este perfil de comercio
Debes registrar tu clave de encriptación pública en Google a través de la Consola de Google Pay y la Billetera de Google para completar una integración de DIRECTtokenizationSpecification type.

merchantId

Es posible que, en algún momento de la integración, encuentres los siguientes errores relacionados con merchantId. En esta lista, se proporcionan algunos consejos útiles para solucionar problemas en caso de que surjan estos errores.

Se debe establecer merchantId.
El parámetro merchantId dentro de PaymentDataRequest debe establecerse en el valor proporcionado con la consola de Google Pay & Wallet. Un parámetro merchantId solo es obligatorio cuando usas un PaymentsClient configurado para un entorno PRODUCTION. Revisa nuestra lista de tareas de integración para solicitar una revisión del uso que hace tu sitio web de la API de Google Pay y obtener tu merchantId.
merchantId no es una cadena
El parámetro merchantId dentro de PaymentDataRequest siempre debe ser una cadena. Asegúrate de que el tipo del parámetro merchantId que usas sea una cadena antes de llamar a la API.
No se registró merchantId.
El parámetro merchantId dentro de PaymentDataRequest se debe aprovisionar a través de la Consola de Google Pay y la Billetera de Google. Revisa Solicita acceso de producción para obtener más información.

Validez de la puerta de enlace

Es posible que, en algún momento de la integración, encuentres los siguientes errores relacionados con la validez de la puerta de enlace. En esta lista, se proporcionan algunos consejos útiles para solucionar problemas en caso de que surjan estos errores.

Puerta de enlace desconocida "tu puerta de enlace"
Actualmente, Google no admite el parámetro de puerta de enlace que especificaste en paymentMethodTokenizationParameters.parameters. Comunícate con tu puerta de enlace para obtener más información sobre su identificador y los campos asociados, como gatewayMerchantId.
No se puede usar la puerta de enlace "example" en el modo de producción
El valor del parámetro de la puerta de enlace de ejemplo solo se usa con fines de prueba y no se puede usar con un PaymentsClient configurado para un entorno PRODUCTION. Comunícate con tu pasarela para obtener más información sobre los valores de los parámetros de PaymentMethodTokenizationSpecification que debes establecer para usar con la API de Google Pay.

Validez del objeto

Es posible que, en algún momento de la integración, encuentres los siguientes errores relacionados con la validez del objeto. En esta lista, se proporcionan algunos consejos útiles para solucionar problemas en caso de que surjan estos errores.

PaymentDataRequest de Google Pay no es un JSON válido
El parámetro proporcionado a loadPaymentData siempre debe ser un objeto PaymentDataRequest válido.
Se debe establecer transactionInfo.
El parámetro transactionInfo dentro de PaymentDataRequest siempre debe ser un objeto TransactionInfo válido.

Comercios directos

Es posible que, en algún momento de la integración, encuentres los siguientes errores relacionados con los comercios directos. En esta lista, se proporcionan algunos consejos útiles para solucionar problemas en caso de que surjan estos errores.

Verificación de la firma
Es posible que se produzca un error de verificación de firma si el merchantId es incorrecto. Esto puede ocurrir en el entorno de TEST cuando usas la biblioteca Tink paymentmethodtoken. Para evitar este problema, establece YOUR_MERCHANT_ID en 12345678901234567890 en lo siguiente:
.recipientId("merchant:YOUR_MERCHANT_ID")
No se puede desencriptar el token
Si usas la biblioteca paymentmethodtoken de Tink para desencriptar un token, ten en cuenta lo siguiente:
  • Asegúrate de que el entorno de respuesta de la API de Google Pay corresponda al entorno de paymentmethodtoken de Tink. Para obtener más detalles, consulta el siguiente ejemplo:
    • Si el entorno TEST devolvió la respuesta de la API de Google Pay, Tink apunta al entorno de prueba para el desencriptado.
  • No modifiques la respuesta de la API de Google Pay antes de que se pase a Tink. Asegúrate de pasar el token completo que se devolvió en la respuesta de la API de Google Pay. Para obtener más detalles, consulta la siguiente nota:
  • Verifica que tengas la clave privada correcta asociada a la clave pública que registraste en Google.
Genera un par de claves públicas y privadas en Windows
Si usas Windows y quieres seguir los pasos que se mencionan en Usa OpenSSL para generar un par de claves pública y privada, asegúrate de instalar Cygwin en tu máquina. Esto es necesario para ejecutar los comandos de Linux.

Objetos de error

Los objetos de error son objetos que devuelve una promesa rechazada de un método de JavaScript del cliente.

PaymentsError
Este objeto contiene detalles sobre los errores que muestran los métodos de JavaScript del cliente. Es posible que los errores no se muestren en un diálogo visible para el usuario.
Propiedad Tipo Descripción
statusCode String Es un código corto que describe el tipo de error.
statusMessage String Mensaje para desarrolladores que describe el error encontrado y los posibles pasos para corregirlo.
Errores comunes
Este objeto muestra los errores que puedes encontrar en todos los métodos de JavaScript. Asegúrate de revisar la consola para desarrolladores y ver si hay mensajes de error adicionales.
Código de estado Descripción
BUYER_ACCOUNT_ERROR El usuario actual de Google no puede proporcionar información de pago.
DEVELOPER_ERROR

Un parámetro pasado tiene un formato incorrecto. Es posible que aparezca un mensaje de error en la consola del navegador para todos los entornos configurados.

MERCHANT_ACCOUNT_ERROR

El sitio que accede a la API de Google Pay no tiene el permiso adecuado. Esto podría deberse a una configuración incorrecta o a un identificador de comerciante incorrecto establecido en la solicitud. Para obtener más detalles, consulta el campo statusMessage. Si los problemas persisten, comunícate con el equipo de asistencia.

INTERNAL_ERROR Error general del servidor.

CardInfo

¿Qué es la función CardInfo?
Google Pay indica a los consumidores que hay una tarjeta detrás del botón de pago de Google Pay, lo que renderiza tanto la red de la marca de la tarjeta como los últimos cuatro dígitos de la tarjeta.
¿Por qué la función CardInfo no se renderiza en mi implementación?

Para que la función CardInfo funcione, se deben cumplir las siguientes condiciones:

¿Por qué el botón de pago de Google Pay se carga de forma indefinida?
No quites los objetos de escucha de eventos de onLoad. Si quitas los objetos de escucha de eventos onLoad, es posible que el botón de pago de Google Pay se cargue de forma indefinida.
¿Por qué no aparece un mensaje de pago después de hacer clic en el botón de pago de Google Pay?
Asigna una devolución de llamada del objeto de escucha de eventos al evento ButtonOptions.onClick.

OR_BIBED_15 errores

Es posible que, en algún momento de la integración, encuentres un error OR_BIBED_15. En esta lista, se proporcionan algunos consejos útiles para solucionar problemas en caso de que surja este error.

Trabaja con WebViews
Sigue las guías para Android y iOS para asegurarte de que tu integración sea compatible con WebViews.
Encabezado de respuesta HTTP Cross-Origin-Opener-Policy
Si el encabezado de respuesta HTTP Cross-Origin-Opener-Policy se establece en same-origin, es posible que se impida que el navegador abra la ventana emergente necesaria para que los usuarios completen su transacción. Intenta cambiar el valor del encabezado a same-origin-allow-popups para reducir esos problemas.
Demoras entre el evento de clic del usuario y la llamada a loadPaymentData()
Si hay una demora después de hacer clic en el botón de Google Pay (o en un botón de confirmación de compra similar) y antes de la llamada loadPaymentData() (ejemplos: setTimeout(), llamadas de red adicionales o lógica de larga duración similar), esto puede hacer que se active el mecanismo de bloqueo de ventanas emergentes del navegador. Nuestra recomendación es que no se establezcan demoras entre el clic del usuario y la llamada a loadPaymentData().