Google Pay
- Web
- Native Android App
Integración Web
Puedes empezar a aceptar pagos con Google Pay en la Web usando la Página de pago alojada o el Componente Payment Request. No se necesita ninguna configuración adicional.
Nuestro Componente Payment Request te ofrece una única integración para Apple Pay y Google Pay. Los clientes ven un botón de Google Pay o de Apple Pay, según qué combinación de dispositivo y navegador sea compatible.
Si prefieres integrar directamente contra la API de Google Pay, sigue la guía de integración directa con la API que se muestra a continuación.
Antes de empezar
Para aceptar pagos con Google Pay necesitas tener al menos un procesador de tarjetas configurado.
Para configurar los procesadores de tarjetas ve a MONEI Dashboard → Ajustes → Métodos de pago → Pagos con tarjeta.
Antes de empezar, necesitas:
- Asegurarte de que tienes Google Pay habilitado en MONEI Dashboard → Ajustes → Métodos de pago.
- Añadir una tarjeta en Chrome.
- Servir tu aplicación a través de HTTPS. Esto es un requisito tanto en desarrollo como en producción. Una forma de ponerse en marcha es usar un servicio como ngrok.
Para probar tu integración:
- Usa tu Account ID y clave de API del modo de prueba.
- Puedes usar cualquier dato de tarjeta real; no se realizará ningún cobro en el modo de prueba (los datos de la tarjeta se sustituyen automáticamente por la tarjeta de prueba).
- Puedes comprobar el estado del pago de prueba en tu MONEI Dashboard → Pagos (en modo de prueba).
Al integrar Google Pay™, aceptas la Política de uso aceptable de las APIs de Google Pay y los términos definidos en las Condiciones del servicio de la API de Google Pay.
Checkout Exprés
Usa el checkout exprés para recopilar las direcciones de envío y facturación directamente en la hoja de pago de Google Pay. Consulta la guía de Checkout Exprés para ver la configuración y los ejemplos.
Integración directa con la API
Si prefieres integrar directamente contra la API de Google Pay, sigue las instrucciones de Google.
Especifica la siguiente especificación de tokenización:
const tokenizationSpecification = {
type: 'PAYMENT_GATEWAY',
parameters: {
gateway: 'monei',
gatewayMerchantId: 'MONEI_ACCOUNT_ID'
}
};
Usa el merchantId de MONEI de la API Get PaymentMethods (metadata.googlePay.merchantId). No se requiere ningún registro adicional con Google.
paymentDataRequest.merchantInfo = {
merchantName: 'Your Business Name',
// Get merchantId from Get PaymentMethods API (metadata.googlePay.merchantId)
// Test: 12345678901234567890, Production: BCR2DN6T37ENLJ3M
merchantId: 'MONEI_GOOGLE_PAY_MERCHANT_ID'
};
Intercambia el token de Google Pay por un token de pago de MONEI que pueda usarse para confirmar el pago:
async function processPayment(paymentData) {
// Encode Google Pay token as a base64 string
const token = window.btoa(paymentData.paymentMethodData.tokenizationData.token);
const result = await monei.api.createToken({
paymentId: '{{payment_id}}',
paymentMethod: {
googlePay: {
token: token
}
}
});
return moneiTokenHandler(result.paymentToken);
}
Confirmar el pago
Una vez que hayas obtenido el token de pago de MONEI, puedes confirmar el pago usando el token.
async function moneiTokenHandler(token) {
try {
const result = await monei.confirmPayment({
paymentId: '{{payment_id}}',
paymentToken: token
});
// At this moment you can show a customer the payment result
// But you should always rely on the result passed to the callback endpoint
// on your server to update the order status
console.log(result);
} catch (error) {
console.error(error);
}
}
Integración con app nativa de Android
Google Pay funciona de inmediato en Android sin necesidad de configuración adicional de certificados. Simplemente integra la API de Google Pay y usa MONEI como tu pasarela de pago.
Requisitos previos
- Google Pay habilitado en MONEI Dashboard → Ajustes → Métodos de pago
- Al menos un procesador de tarjetas configurado en el MONEI Dashboard
- Dispositivo Android o emulador con Google Play Services
Añadir dependencias
Añade la biblioteca de Google Pay al build.gradle de tu aplicación:
dependencies {
implementation 'com.google.android.gms:play-services-wallet:19.2.1'
}
Añade los metadatos de la API de Google Pay a tu AndroidManifest.xml:
<meta-data
android:name="com.google.android.gms.wallet.api.enabled"
android:value="true" />
Comprobar la disponibilidad de Google Pay
Antes de mostrar el botón de Google Pay, verifica que esté disponible en el dispositivo:
val paymentsClient = Wallet.getPaymentsClient(
this,
Wallet.WalletOptions.Builder()
.setEnvironment(WalletConstants.ENVIRONMENT_TEST) // Use ENVIRONMENT_PRODUCTION for live
.build()
)
val isReadyToPayRequest = IsReadyToPayRequest.fromJson("""
{
"apiVersion": 2,
"apiVersionMinor": 0,
"allowedPaymentMethods": [{
"type": "CARD",
"parameters": {
"allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
"allowedCardNetworks": ["VISA", "MASTERCARD", "AMEX", "DISCOVER", "JCB"]
}
}]
}
""")
paymentsClient.isReadyToPay(isReadyToPayRequest)
.addOnCompleteListener { task ->
if (task.isSuccessful) {
// Show Google Pay button
}
}
Configurar la solicitud de pago
Crea una solicitud de pago con MONEI como pasarela. Usa el merchantId de la API Get PaymentMethods (metadata.googlePay.merchantId). No se requiere ningún registro adicional con Google:
val paymentDataRequest = PaymentDataRequest.fromJson("""
{
"apiVersion": 2,
"apiVersionMinor": 0,
"allowedPaymentMethods": [{
"type": "CARD",
"parameters": {
"allowedAuthMethods": ["PAN_ONLY", "CRYPTOGRAM_3DS"],
"allowedCardNetworks": ["VISA", "MASTERCARD", "AMEX", "DISCOVER", "JCB"]
},
"tokenizationSpecification": {
"type": "PAYMENT_GATEWAY",
"parameters": {
"gateway": "monei",
"gatewayMerchantId": "YOUR_MONEI_ACCOUNT_ID"
}
}
}],
"merchantInfo": {
"merchantName": "Your Store Name",
"merchantId": "MONEI_GOOGLE_PAY_MERCHANT_ID"
},
"transactionInfo": {
"totalPrice": "10.00",
"totalPriceStatus": "FINAL",
"currencyCode": "EUR",
"countryCode": "ES"
}
}
""")
Iniciar Google Pay
Inicia la hoja de pago de Google Pay cuando el usuario pulsa el botón:
private val googlePayLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result ->
when (result.resultCode) {
Activity.RESULT_OK -> {
result.data?.let { intent ->
val paymentData = PaymentData.getFromIntent(intent)
handlePaymentSuccess(paymentData)
}
}
Activity.RESULT_CANCELED -> {
// User cancelled
}
AutoResolveHelper.RESULT_ERROR -> {
// Handle error
}
}
}
fun requestPayment() {
val task = paymentsClient.loadPaymentData(paymentDataRequest)
AutoResolveHelper.resolveTask(task, this, GOOGLE_PAY_REQUEST_CODE)
}
Procesar el pago
Extrae el token de los datos del pago y envíalo a tu backend:
private fun handlePaymentSuccess(paymentData: PaymentData?) {
val paymentInfo = paymentData?.toJson() ?: return
val json = JSONObject(paymentInfo)
// Extract the Google Pay token
val token = json
.getJSONObject("paymentMethodData")
.getJSONObject("tokenizationData")
.getString("token")
// Base64 encode the token
val encodedToken = Base64.encodeToString(token.toByteArray(), Base64.NO_WRAP)
// Send to your backend to create MONEI payment token and confirm payment
sendToBackend(encodedToken)
}
Integración con el backend
En tu backend, intercambia el token de Google Pay por un token de pago de MONEI:
# 1. Create a payment
curl -X POST https://api.monei.com/v1/payments \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": 1000,
"currency": "EUR",
"orderId": "order_123"
}'
# 2. Create a token from Google Pay token
curl -X POST https://api.monei.com/v1/payment-tokens \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"paymentId": "PAYMENT_ID_FROM_STEP_1",
"paymentMethod": {
"googlePay": {
"token": "BASE64_ENCODED_GOOGLE_PAY_TOKEN"
}
}
}'
# 3. Confirm the payment
curl -X POST https://api.monei.com/v1/payments/PAYMENT_ID/confirm \
-H "Authorization: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"paymentToken": "MONEI_TOKEN_FROM_STEP_2"
}'
Antes de pasar a producción
- Asegúrate de que estás usando el Account ID y la clave de API del modo de producción (live).
- Asegúrate de que tienes al menos un procesador de tarjetas habilitado.
- Asegúrate de que tienes Google Pay habilitado en MONEI Dashboard → Ajustes → Métodos de pago.
- Para la integración directa con la API, usa el
merchantIdde la API Get PaymentMethods.