otros métodos de pago
Google Pay
Permite a tus clientes realizar pagos cómoda y rápidamente incorporando Google Pay a tu TPV Virtual
Funcionamiento
Los servicios de pago móvil están cada vez más extendidos y son usados por un amplio abanico de personas que cada vez tiene más confianza en guardar sus tarjetas en el móvil. Por ello~, Redsys ofrece la opción de agregar estos servicios a tu TPV Virtual para que tus clientes puedan pagar de forma rápida y sencilla.
Con Google Pay, tus clientes podrán realizar pagos en tu TPV Virtual con cualquier tarjeta de crédito o débito que tengan guardada en su cuenta de Google, incluidas aquellas de Google Play, YouTube, Chrome o un dispositivo Android. Al integrar este método de pago en tu TPV Virtual, estás aceptando las condiciones de uso de la API de Google Pay.
Modalidades de integración
El enrolamiento del comercio para poder utilizar Google Pay no es tan complejo como Apple Pay, y en unos sencillos pasos podrías aceptar pagos usando Google Pay en tu TPV Virtual.
Conexión por redirección: aceptación de Google Pay en la web
Puedes empezar a aceptar pagos con Google Pay de forma automática en tu TPV Virtual solicitando la activación de este método de pago a tu entidad bancaria. Este tipo de conexión no requiere de ningún desarrollo técnico ni enrolamiento externo.
Cuando el método de pago esté activo, un botón se mostrará en la pantalla de introducción de datos de tarjeta de tu TPV Virtual por redirección. Al seleccionar ese método de pago, una ventana emergente solicitará los datos de inicio de sesión de Google al cliente si estos no están guardados en el navegador. Luego, se preguntará con qué tarjeta de las guardadas en su cuenta de Google desea pagar y posteriormente el pago será procesado, mostrándose el resultado en pantalla.
Cuando en la pantalla de introducción de datos de tarjeta se pulsa sobre el botón de Google Pay, una ventana emergente solicitará el login en la cuenta de Google (o mostrará aquellas con las que ya se ha iniciado sesión en el ordenador) para poder realizar el pago.
Al seleccionar una cuenta, se mostrarán las tarjetas asociadas a la misma para poder seleccionar con cual se quiere realizar el pago. Una vez seleccionada la tarjeta con la que se quiere abonar el importe, al pulsar sobre el botón continuar, el pago se procesará automáticamente. En algunos casos, se podría solicitar autenticación del titular, deberá seguir las instrucciones de su banco (normalmente confirmar la operación en la aplicación oficial de la entidad).
Si se quiere forzar la ejecución del método de pago usando un X-PAY (Apple Pay o Google Pay), se debe enviar el campo Ds_Merchant_PayMethods con el valor xpay. Esto hará que se muestre la pantalla de pago sin los campos de introducción de datos de tarjeta.
Integración directa por parte del comercio
Para integrar Google Pay en tu app o sitio web, deberás seguir las guías de integración de Google Pay. Puedes consultar la guía de instalación y la guía de referencias para más información.
Una vez hayas completado todos los pasos de la guía, deberás incluir como parametrización obligatoria los siguientes datos:
const tokenizationSpecification = {
type: 'PAYMENT_GATEWAY',
parameters: {
'gateway': 'redsys',
'gatewayMerchantId': 'FUC proporcionado por tu entidad bancaria'
}
};
allowedCardNetworks = ["AMEX", "DISCOVER", "JCB", "MASTERCARD", "VISA"];
allowedCardAuthMethods = ["PAN_ONLY", "CRYPTOGRAM_3DS"];
paymentDataRequest.merchantInfo = {
//a merchant ID provided by Google is available for a production environment after approval by Google
merchantId: 'XXXXXXXXXXXXXXXXXXXX',
merchantName: 'Nombre del comercio',
merchantOrigin: 'URL del comercio'
};
Puede encontrar más información en las siguientes guías de la documentación oficial:
Una vez completada la itegración en el entorno de pruebas de Google Pay, se deberá solicitar el acceso a producción para aceptar pagos de sus clientes. Este proceso es muy sencillo:
- Solicitar el acceso a producción desde el portal de desarrolladores de Google.
- Google revisará la información que hayas enviado y te podrán enviar modificaciones que, en todo caso, validarán en el mismo entorno de pruebas.
- Google revisará la información que hayas aportado ante esta revisión y, en caso de aprobación, se permitirá su uso en producción.
Una vez hayas seguido todos los pasos que se describían en el apartado anterior, será el momento de probar el funcionamiento de Google Pay en tu TPV Virtual.
Es muy importante que, en primer lugar, solicites el alta del método de pago a tu entidad bancaria.
Una vez activado, en la opearción de autorización enviada al TPV Virtual, se deben añadir los siguientes parámetros adicionales:
- InApp: Si la integración es sobre una App Móvil.
- WEB: Si la integración es vía web.
Principales errores y como subsanarlos
SIS0499 (9499)
Error al descifrar el mensaje. Este error suele surgir por alguna de estas razones:
- No se ha indicado bien el parámetro Gateway. Al realizar la integración con por parte del comercio, se debe indicar el parámetro ‘gateway’: ‘redsys’ y el fuc proporcionado por la entidad de forma correcta.
- Porque el base64 que se envía no tiene un formato correcto. El base64 del campo paymentData.paymentMethodData puede que se esté enviando de forma incorrecta. Se recomienda hacer el base64 en el momento que se reciban los datos de Google. Si se envía al servidor y se hace allí, puede que algún carácter se pierda. Se adjunta un ejemplo de formato del dato a enviar. No es un mensaje válido, únicamente es un ejemplo para poder comparar que lo que se envía a Redsys tiene el formato correcto. El mensaje puede tener más caracteres de los que aparecen en este ejemplo.
El mensaje que se envía a Google sería algo como esto:
{"signature":"MEYCVF312sIkd9q+JKSP2LLp57m6YYscXhu5M131FnBUYmAWpwIhANDyutZiDCoJNSQTAF4K2WHyEUt11ngqW1r4UZUT1JG4","protocolVersion":"ECv1","signedMessage":"\"encryptedMessage\":\"hOdy1b/mHfrLKTn!DKQOXk15Hc4vRjElsYI5ZPN6ALpAtUgNJvc8YK+73xn4nQGAL9VkayH1s2pOn+f+voHPYbVOK0PUSqpxS45KJqyVOUi3jq2BEHjPyksDfGlopfCO1y0s4L6z4n5Vp0PLBhpLdkFJlNd7D4sJIaUPOVPOFhGIK1zrL3DKDvYnDQaJ4k6OcWi1wvLgNBSc5vMkLK68MK36nYyEi2ASFGtNyGFOypvejBt2rX11JDHliMdKVt4JCW04znyaIMnxVLK1NoxfJXMNT86KBM/yFc8VQ0BXoY6RA6JB1zsugzEFI4JKLDokeUSUD0xWUTILD3oTJlYiXKkPPdIljLmuIXA1PfMJkFvwcAS4yXBy5gCUyofg7bABNyf9T5+vnLP/y5hxryBJkUFVJ)k1pT21hH9RjLoKWqKdmfSdH1ND2dP3QA329qLqCRB1hj7NghJqSqtH+ElpoFAyhTgA6i1Aw7+KLPi4Vp12dfKGCtH2s5LWIKR+s90G6lONNEWgppOJ1256wFGHRwxXzA43whDGF3WQhBdMvtD2KzbiJeqFS3AhWmYZSi4PBMZs4oNBDRww0k\\u003d\",\"ephemeralPublicKey\":\"JKPiLksnpT+dL3r9bKFFvS123g+/N9Gh4dHhqSfk3iddfhTWeu9T+LKPtecNaL3DWmYLDF80LwWp9fmk23QCUFsdl\\u003d\",\"tag\":\"LF5pk3Sdsbd3sGldu7+rKLXIGK0IDngJ4lnL92wDJOl\\u003d\"}"}
Y el mensaje codificado en base64 que se envía a Redsys luciría de esta manera:
eyJzaWduYXR1cmUiOiJNRVlDVkYzMTJzSWtkOXErSktTUDJMTHA1N202WVlzY1hodTVNMTMxRm5CVVltQVdwd0loQU5EeXV0WmlEQ29KTlNRVEFGNEsyV0h5RVV0MTFuZ3FXMXI0VVpVVDFKRzQiLCJwcm90b2NvbFZlcnNpb24iOiJFQ3YxIiwic2lnbmVkTWVzc2FnZSI6IntcImVuY3J5cHRlZE1lc3NhZ2VcIjpcImhPZHkxYi9tSGZyTEtUbiFES1FPWGsxNUhjNHZSakVsc1lJNVpQTjZBTHBBdFVnTkp2YzhZSys3M3huNG5RR0FMOVZrYXlIMXMycE9uK2Yrdm9IUFliVk9LMFBVU3FweFM0NUtKcXlWT1VpM2pxMkJFSGpQeWtzRGZHbG9wZkNPMXkwczRMNno0bjVWcDBQTEJocExka0ZKbE5kN0Q0c0pJYVVQT1ZQT0ZoR0lLMXpyTDNES0R2WW5EUWFKNGs2T2NXaTF3dkxnTkJTYzV2TWtMSzY4TUszNm5ZeUVpMkFTRkd0TnlHRk95cHZlakJ0MnJYMTFKREhsaU1kS1Z0NEpDVzA0em55YUlNbnhWTEsxTm94ZkpYTU5UODZLQk0veUZjOFZRMEJYb1k2UkE2SkIxenN1Z3pFRkk0SktMRG9rZVVTVUQweFdVVElMRDNvVEpsWWlYS2tQUGRJbGpMbXVJWEExUGZNSmtGdndjQVM0eVhCeTVnQ1V5b2ZnN2JBQk55ZjlUNSt2bkxQL3k1aHhyeUJKa1VGVkopazFwVDIxaEg5UmpMb0tXcUtkbWZTZEgxTkQyZFAzUUEzMjlxTHFDUkIxaGo3TmdoSnFTcXRIK0VscG9GQXloVGdBNmkxQXc3K0tMUGk0VnAxMmRmS0dDdEgyczVMV0lLUitzOTBHNmxPTk5FV2dwcE9KMTI1NndGR0hSd3hYekE0M3doREdGM1dRaEJkTXZ0RDJLemJpSmVxRlMzQWhXbVlaU2k0UEJNWnM0b05CRFJ3dzBrXFx1MDAzZFwiLFwiZXBoZW1lcmFsUHVibGljS2V5XCI6XCJKS1BpTGtzbnBUK2RMM3I5YktGRnZTMTIzZysvTjlHaDRkSGhxU2ZrM2lkZGZoVFdldTlUK0xLUHRlY05hTDNEV21ZTERGODBMd1dwOWZtazIzUUNVRnNkbFxcdTAwM2RcIixcInRhZ1wiOlwiTEY1cGszU2RzYmQzc0dsZHU3K3JLTFhJR0swSURuZ0o0bG5MOTJ3REpPbFxcdTAwM2RcIn0ifQo=
SIS0754 (9998)
Operación a la espera de solicitud de datos, errores de autenticación. Este error se produce debido a la falta de datos necesarios para autenticar al titular.
Google ofrece dos opciones de pago:
- Pago con token. La autenticación es gestionada por Google a través del dispositivo móvil del usuario.
- Pago con tarjeta. Por normativa, estas transacciones requieren autenticación.
Para evitar inconvenientes a los comercios, se recomienda redirigir las solicitudes de pago de Google a la URL de Redsys (https://sis.redsys.es/sis/realizarPago), donde Redsys se encargará de la autenticación del titular.
Un ejemplo de la petición sería:
<DATOSENTRADA> <DS_MERCHANT_AMOUNT>42</DS_MERCHANT_AMOUNT> <DS_MERCHANT_ORDER>813734</DS_MERCHANT_ORDER> <DS_MERCHANT_MERCHANTCODE>999008881</DS_MERCHANT_MERCHANTCODE> <DS_MERCHANT_CURRENCY>978</DS_MERCHANT_CURRENCY> <DS_MERCHANT_TRANSACTIONTYPE>0</DS_MERCHANT_TRANSACTIONTYPE> <DS_MERCHANT_TERMINAL>871</DS_MERCHANT_TERMINAL> <DS_XPAYDATA>eyJzaWduYXR1cmUiOiJNRVlDVkYzMTJzSWtkOXErSktTUDJMTHA1N202WVlzY1hodTVNMTMxRm 5CVVltQVdwd0loQU5EeXV0WmlEQ29KTlNRVEFGNEsyV0h5RVV0MTFuZ3FXMXI0VVpVVDFKRzQiLCJwcm90b2NvbFZlcn Npb24iOiJFQ3YxIiwic2lnbmVkTWVzc2FnZSI6IntcImVuY3J5cHRlZE1lc3NhZ2VcIjpcImhPZHkxYi9 SGZyTEtUbiFES1FPW GsxNUhjNHZSakVsc1lJNVpQTjZBTHBB…</DS_XPAYDATA> <DS_XPAYTYPE>Google</DS_XPAYTYPE> <DS_XPAYORIGEN>InApp</DS_XPAYORIGEN> </DATOSENTRADA>
Para subsanar el problema de peticiones que den error de autenticación, es recomendable, en vez de enviar las peticiones al flujo:
Enviar las peticiones a https://sis.redsys.es/sis/realizarPago.
Funcionalidades avanzadas: envío de datos descifrados en comercio
IMPORTANTE
Esta funcionalidad podría tener implicaciones en el cumplimiento de la normativa PCI-DSS.
Deberás encargarte de descodificar los datos, obteniendo un objeto con un formato como el de la documentación de Google. El objeto descodificado será algo similar al siguiente bloque.
{
"gatewayMerchantId": "some-merchant-id",
"messageExpiration": "1561533871082",
"messageId": "AH2Ejtc8qBlP_MCAV0jJG7ErQKeDrkEUt…",
"paymentMethod": "CARD",
"paymentMethodDetails":
{
"expirationYear": 2026,
"expirationMonth": 12,
"pan": "489537XXXXXX3478",
"authMethod": "CRYPTOGRAM_3DS",
"eciIndicator": "07",
"cryptogram": "AgAAAAAABk4DWZ4C28yUQAAAAAA="
}
}
Estos datos se enviarán al TPV Virtual en el parámetro Ds_XPayDecodedData en formato JSON, tal y como se muestra en el siguiente bloque de código.
{
"cryptogram": "AgAAAAAABk4DWZ4C28yUQAAAAAA=",
"eciInd": "07",
"expirationDate":"2612",
"token": "489537XXXXXX3478",
"paymentMethod": "CARD"
}
Los parámetros tienen los siguientes significados.
- Cryptogram = Referencia al criptograma.
- EciInd = Referencia al eciIndicator.
- ExpirationDate = Formato AAMM de la tarjeta que envía Google (Para esta tarjeta, habría que enviar 2612).
- Token = Referencia al campo pan.
- PaymentMethod = Referencia al campo paymentMethod, podrá ser únicamente CARD o TOKENIZED_CARD.
En la petición de autorización al TPV Virtual sería necesario incorporar los siguientes datos:
- InApp: Si la integración es sobre una App Móvil.
- WEB: Si la integración es vía web.
Y estos datos se adjuntan a la petición al TPV Virtual, tal y como se muestra.
{
<DATOSENTRADA>
<DS_MERCHANT_AMOUNT></DS_MERCHANT_AMOUNT>
<DS_MERCHANT_ORDER></DS_MERCHANT_ORDER>
<DS_MERCHANT_MERCHANTCODE></DS_MERCHANT_MERCHANTCODE>
<DS_MERCHANT_CURRENCY></DS_MERCHANT_CURRENCY>
<DS_MERCHANT_TRANSACTIONTYPE></DS_MERCHANT_TRANSACTIONTYPE>
<DS_MERCHANT_TERMINAL></DS_MERCHANT_TERMINAL>
<DS_XPAYDECODEDDATA>
{
"cryptogram": "AgAAAAAABk4DWZ4C28yUQAAAAAA=",
"eciInd": "07",
"expirationDate":"2612",
"token": "489537XXXXXX3478",
"paymentMethod": "CARD"
}
</DS_XPAYDECODEDDATA>
<DS_XPAYTYPE></DS_XPAYTYPE>
<DS_XPAYORIGEN></DS_XPAYORIGEN>