Integration Types
Otras características
Card Payments
Mobile Wallets
Alternative Payment Methods
Resources
Google Pay es un servicio de pago móvil y billetera digital de Google, que permite a los usuarios disfrutar de una experiencia de pago en línea sin problemas en aplicaciones Android y en la web móvil, utilizando métodos de pago guardados en una cuenta de Google o en un dispositivo Android. Google Pay es un pago con dispositivo compatible en el Mastercard Gateway.
En esta página se describe el procesamiento específico de los pagos con dispositivos Google Pay. Se recomienda que lea las pautas de integración para los pagos con dispositivo, antes de crear su integración de Google Pay.
El Mastercard Gateway ofrece Google Pay desde API v47 en adelante.
Para aceptar pagos con Google Pay:
La integración de Hosted Checkout le permite recopilar detalles de pago del pagador a través de una interacción que el motor de pagos hospeda y muestra.
Desde la API versión 72 en adelante, Google Pay Later está disponible automáticamente como método de pago una vez que su proveedor de servicios de pago lo habilita y configura para este método de pago.
La integración de Direct Payment le permite ofrecer el método de pago de Google Pay en su propia página de pago.
Puede integrar Google Pay en su aplicación móvil o en la página de pago de su sitio web mediante Direct Payment.
Si quiere encargarse de descifrar el token de pago en su servidor, consulte Descifrar el token de pago.
tokenizationSpecification
de la API de Google Pay: type
): configure esto en PAYMENT_GATEWAY
gateway
): configure esto en mpgs
gatewayMerchantId
): un identificador de negocio único que el motor de pagos puede utilizar para verificar e identificar al negocio al descifrar el token de pago. Este identificador de negocio debe ser el mismo que su merchantId
enviado en la solicitud API de su motor de pagos.Al finalizar la interacción del pagador con la interfaz de usuario de Google Pay, recibirá una carga que contiene un token de pago cifrado firmado por Google. El token de pago se emitirá para un pago con dispositivo o con tarjeta.
allowedAuthMethods
en PAN_ONLY
en el objeto allowedPaymentMethods
de la API de Google Pay.Check Enrollment
.order.walletProvider
=GOOGLE_PAY
sourceOfFunds.provided.card.devicePayment.paymentToken
: el token de pago cifrado obtenido del SDK de Google Pay.El motor de pagos descifrará el token de pago y, si incluye un FPAN, entonces se procederá con la solicitud Check Enrollment
de 3DS. Si el token de pago contiene un DPAN, la solicitud se rechazará (la autenticación 3DS no es compatible con los DPAN). Para obtener más información sobre cómo realizar la integración con el motor de pagos mediante 3DS, consulte Autenticación 3D Secure.
Authorize
/Pay
o Update Session
.order.walletProvider
=GOOGLE_PAY
order.amount
: el valor que proporcione debe ser el monto final del pedido (incluidos el envío y otros montos adicionales).order.currency
sourceOfFunds.provided.card.devicePayment.paymentToken
: el token de pago cifrado obtenido del SDK de Google Pay.sourceOfFunds.provided.card.devicePayment.paymentToken [REST][NVP]
Además de los campos estándar, se devuelven los siguientes campos de respuesta para una autorización correcta con el token de pago.
Si la carga contenía un DPAN (para pagos con dispositivos):
sourceOfFunds.provided.card.encryption
=DEVICE
sourceOfFunds.provided.card.deviceSpecificNumber
: el DPAN en formato enmascarado.sourceOfFunds.provided.card.deviceSpecificExpiry.month
sourceOfFunds.provided.card.deviceSpecificExpiry.year
sourceOfFunds.provided.card.number
: el FPAN en formato enmascarado.sourceOfFunds.provided.card.expiry.month
sourceOfFunds.provided.card.expiry.year
sourceOfFunds.provided.card.devicePayment.cryptogramFormat
Si la carga útil contenía un FPAN (para pagos con billetera digital Google Pay):
sourceOfFunds.provided.card.encryption
=DIGITAL_WALLET
sourceOfFunds.provided.card.number
: el FPAN en formato enmascarado.sourceOfFunds.provided.card.expiry.month
sourceOfFunds.provided.card.expiry.year
Aquí hay una solicitud de autorización de muestra en REST, donde el motor de pagos descifra el token de pago.
URL | 'https://evopaymentsmexico.gateway.mastercard.com/api/rest/version/71/merchant/MADA_DMS_AU/order/810663616/transaction/911988788' |
Método HTTP | PUT |
Encabezado | 'Authorization: Basic bWVyY2hhbnQuTUFEQV9ETVNfQVU6M2RjYTQ2YTU1ODYwNDlmMjhhM2FmZGJmZDEwMGNmNWQ=' |
'{ "apiOperation": "AUTHORIZE", "order": { "amount": "30.10", "currency": "USD", "walletProvider": "GOOGLE_PAY" }, "sourceOfFunds": { "provided": { "card": { "devicePayment": { "paymentToken"{\n \"protocolVersion\" : \"ECv1\",\n \"signature\" : \"MEYCIQCiSE4dCSwpXwJLo1lKYOZNmFyL...\",\n \"signedMessage\" : \"{\\\"encryptedMessage\\\":\\\"gTVbbw8Nsv4kTulngmSVsZijvS5x7sAM9UZiqyaKfjkqxxJ1pkqRvhWBFc4FnEiMm2rjUPlX55e0dUqI00iQwAfePuhrna...\\\",\\\"ephemeralPublicKey\\\":\\\"BKoBQYjYIEYgw9nzA+0Q06FD77ZhrOXQh9yNUX0LasjL2W9eMvWZ0pCGGRzPKZLCtk...\\\",\\\"tag\\\":\\\"fnZGEbpCkXzKU3xhS5u1E3c6OoB6RzkHbhHx58...\\\"}\"\n}" //This is only a sample token and will not pass validation. You should substitute this with an actual payment token returned from Google Pay. //The gateway considers this value to be a string, NOT JSON itself. The parenthesis are a part of the string. } } }, "type": "CARD" }, "device": { "ani": "12341234" }, "transaction": { "source": "INTERNET" } }'
{ "authorizationResponse": { "commercialCard": "123", "commercialCardIndicator": "1", "date": "0314", "financialNetworkCode": "MCC", "posData": "1025104006600", "posEntryMode": "812", "processingCode": "003000", "responseCode": "00", "stan": "45467", "time": "105002", "transactionIdentifier": "906660122", "transactionIntegrityClass": "A1" }, "device": { "ani": "12341234" }, "gatewayEntryPoint": "WEB_SERVICES_API", "merchant": "MADA_DMS_AU", "order": { "amount": 30.10, "authenticationStatus": "AUTHENTICATION_NOT_IN_EFFECT", "certainty": "FINAL", "chargeback": { "amount": 0, "currency": "USD" }, "creationTime": "2023-03-14T10:50:01.524Z", "currency": "USD", "id": "810663616", "lastUpdatedTime": "2023-03-14T10:50:02.092Z", "merchantAmount": 30.10, "merchantCategoryCode": "1234", "merchantCurrency": "USD", "status": "AUTHORIZED", "totalAuthorizedAmount": 30.10, "totalCapturedAmount": 0.00, "totalDisbursedAmount": 0.00, "totalRefundedAmount": 0.00, "walletProvider": "GOOGLE_PAY" }, "response": { "acquirerCode": "00", "acquirerMessage": "Approved", "gatewayCode": "APPROVED", "gatewayRecommendation": "NO_ACTION" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "devicePayment": { "cryptogramFormat": "3DSECURE" }, "deviceSpecificExpiry": { "month": "1", "year": "39" }, "deviceSpecificNumber": "512345xxxxxx0008", "fundingMethod": "UNKNOWN", "number": "xxxxxxxxxxxxxxxx", "scheme": "MASTERCARD", "storedOnFile": "NOT_STORED" } }, "type": "CARD" }, "timeOfLastUpdate": "2023-03-14T10:50:02.092Z", "timeOfRecord": "2023-03-14T10:50:01.625Z", "transaction": { "acquirer": { "batch": 20230314, "date": "0314", "id": "SYSTEST_ACQ_S2I", "merchantId": "12345678", "transactionId": "906660122" }, "amount": 30.10, "authenticationStatus": "AUTHENTICATION_NOT_IN_EFFECT", "authorizationCode": "112233", "currency": "USD", "id": "911988788", "receipt": "307310045467", "source": "INTERNET", "stan": "45467", "terminal": "1111", "type": "AUTHORIZATION" }, "version": "71" }
Puede descifrar el token de pago en su servidor, en lugar de proporcionar el token de pago para el descifrado al motor de pagos. En este caso, tendrá que asumir la responsabilidad de almacenar las credenciales de cifrado y ejecutar el descifrado.
Clave JSON de Google Pay |
Campo de solicitud de API correspondiente |
Descripción |
---|---|---|
pan | sourceOfFunds.provided.card.number | El número de cuenta principal específico del dispositivo (DPAN) de la tarjeta que financió esta transacción. |
expirationMonth | sourceOfFunds.provided.card.expiry.month | El mes de vencimiento del pan. |
expirationYear | sourceOfFunds.provided.card.expiry.year | El año de vencimiento del pan. |
authMethod | sourceOfFunds.provided.card. devicePayment.cryptogramFormat |
El formato del criptograma. Configure esto en 3DSECURE. |
cryptogram | sourceOfFunds.provided.card.devicePayment. onlinePaymentCryptogram |
Criptograma en formato 3DSecure. |
eciIndicator | sourceOfFunds.provided.card.devicePayment. eciIndicator |
Proporcione el indicador de comercio electrónico (ECI), si está disponible. |
sourceOfFunds.provided.card.nameOnCard | (Opcional) El nombre del titular de la tarjeta. | |
order.currency | El código de moneda ISO 4217 para la transacción. | |
order.amount | El monto del pedido. |
Check Enrollment
.order.walletProvider
=GOOGLE_PAY
sourceOfFunds.provided.card.number
: vea la tabla a continuación.Para obtener más información sobre cómo realizar la integración con el motor de pagos mediante 3DS, consulte Autenticación 3D Secure.
Clave JSON de Google Pay |
Campo de solicitud de API correspondiente |
Descripción |
---|---|---|
pan | sourceOfFunds.provided.card.number | El número de tarjeta (FPAN) de la tarjeta que financió esta transacción. La carga útil contiene un FPAN cuando el pagador elige pagar utilizando una tarjeta guardada en su cuenta de Google Play. Tenga en cuenta que, en el caso de los pagos con tarjeta, la captura de CSC no es compatible con la API de Google Pay. |
expirationMonth | sourceOfFunds.provided.card.expiry.month | El mes de vencimiento del pan. |
expirationYear | sourceOfFunds.provided.card.expiry.year | El año de vencimiento del pan. |
sourceOfFunds.provided.card.nameOnCard | (Opcional) El nombre del titular de la tarjeta. | |
order.currency | El código de moneda ISO 4217 para la transacción. | |
order.amount | El monto del pedido. |
PAYER_TERMINAL_OFF_PREMISES
o PAYER_TERMINAL_ON_PREMISES
. Si no proporciona un valor, se utiliza PAYER_TERMINAL_OFF_PREMISES
:Aquí hay una solicitud Authorization de muestra en REST, donde los valores del token de pago descifrado se proporcionan al motor de pagos.
{ "apiOperation": "AUTHORIZE", "order": { "amount": "30.10", "currency": "INR", "walletProvider": "GOOGLE_PAY" }, "sourceOfFunds": { "provided": { "card": { "expiry": { "month": "01", "year": "39" }, "number": "5123450000000008", "devicePayment": { "cryptogramFormat": "3DSECURE", : { "onlinePaymentCryptogram": "IA/8pdiWftSsxpFT6wABoDABhgA=", "eciIndicator": "20" } } } }, "type": "CARD" }, "device": { "ani": "12341234" }, "transaction": { "source": "INTERNET" } }
{ "authorizationResponse": { "commercialCard": "123", "commercialCardIndicator": "1", "date": "0330", "financialNetworkCode": "MCC", "posData": "1025104006600", "posEntryMode": "812", "processingCode": "003000", "responseCode": "00", "stan": "290026", "time": "220509", "transactionIdentifier": "865442937", "transactionIntegrityClass": "A1" }, "device": { "ani": "12341234" }, "gatewayEntryPoint": "WEB_SERVICES_API", "merchant": "LOVECRAFTS2I", "order": { "amount": 30.10, "authenticationStatus": "AUTHENTICATION_NOT_IN_EFFECT", "certainty": "ESTIMATED", "chargeback": { "amount": 0, "currency": "INR" }, "creationTime": "2022-03-30T22:05:09.395Z", "currency": "INR", "id": "09765d59-cdd8-432c-96c9-d6ae91588251", "lastUpdatedTime": "2022-03-30T22:05:09.857Z", "merchantAmount": 30.10, "merchantCategoryCode": "1234", "merchantCurrency": "INR", "status": "AUTHORIZED", "totalAuthorizedAmount": 30.10, "totalCapturedAmount": 0.00, "totalDisbursedAmount": 0.00, "totalRefundedAmount": 0.00, "walletProvider": "GOOGLE_PAY" }, "response": { "acquirerCode": "00", "acquirerMessage": "Approved", "gatewayCode": "APPROVED" }, "result": "SUCCESS", "sourceOfFunds": { "provided": { "card": { "brand": "MASTERCARD", "devicePayment": { "cryptogramFormat": "3DSECURE" }, "deviceSpecificExpiry": { "month": "1", "year": "39" }, "deviceSpecificNumber": "512345xxxxxx0008", "fundingMethod": "UNKNOWN", "number": "xxxxxxxxxxxxxxxx", "scheme": "MASTERCARD", "storedOnFile": "NOT_STORED" } }, "type": "CARD" }, "timeOfLastUpdate": "2022-03-30T22:05:09.857Z", "timeOfRecord": "2022-03-30T22:05:09.410Z", "transaction": { "acquirer": { "batch": 20220330, "date": "0330", "id": "SYSTEST_ACQ_S2I", "merchantId": "123463", "transactionId": "865442937" }, "amount": 30.10, "authenticationStatus": "AUTHENTICATION_NOT_IN_EFFECT", "authorizationCode": "112233", "currency": "INR", "id": "1", "receipt": "208922290026", "source": "INTERNET", "stan": "290026", "terminal": "CBAS2I02", "type": "AUTHORIZATION" }, "version": "71" }
Si va a descifrar el token de pago, Google debe aprobar su integración. Siga las instrucciones de prueba que proporciona Google aquí: Android/Web.
Sin embargo, antes de enviar la integración para su aprobación a Google, debe realizar algunas transacciones de prueba. Puede probar su integración con el motor de pagos en producción usando su perfil de pruebas del negocio y DPAN o FPAN admitidos. Para obtener más información, consulte Prueba con tokens de muestra.
Si realiza una prueba para un pago mediante dispositivo (tarjeta guardada en su dispositivo Android), utilice un DPAN compatible de la tabla siguiente.
Esquema |
DPAN |
Fecha de vencimiento |
---|---|---|
Visa | 4895370012003478 | 12/2027 |
American Express | 370295136149943 | 12/2027 |
Si realiza una prueba para un pago mediante tarjeta (tarjeta guardada en su cuenta de Google Play), utilice el FPAN compatible de la tabla siguiente.
Esquema |
FPAN |
Fecha de vencimiento |
---|---|---|
Visa | 4111111111111111 | 12/2027 |
Una vez que Google haya aprobado su integración, debe realizar las pruebas finales de verificación de la producción antes de iniciar las transacciones en producción.
Si el motor de pagos descifra el token de pago, su aplicación deberá especificar el motor de pagos ("mpgs") como su proveedor de servicios de pago. Esta información es necesaria para permitir que el token de pago que Google genera se cifre mediante la clave pública del motor de pagos.
Para realizar transacciones de prueba, debe utilizar el ID de negocio de producción de su motor de pagos en la producción: el ID de negocio del motor de pagos de prueba no puede descifrar los tokens de pago.
Si las transacciones tienen el estado APPROVED o DECLINED, entonces el motor de pagos fue capaz de procesar sus transacciones de prueba con éxito.
El Mobile SDK le ayuda a desarrollar una aplicación móvil que aceptará pagos digitales mediante el Mastercard Gateway. El motor de pagos ofrece soporte para Google Pay mediante el Mobile SDK. Haga clic aquí para ver las pautas de integración de Mobile SDK para la plataforma Android.