Guía de activación: Google Pay™
Esta guía te muestra cómo activar Google Pay™ en cada una de nuestras integraciones disponibles.
Tipos de integración disponibles:
Integración Direct API:
Términos y Políticas del API de Google Pay
Al integrar Google Pay a través de Conekta, aceptas lo siguiente:
- Debes cumplir con la Política de Uso Aceptable de Google Pay y Wallet API.
- Debes aceptar los Términos de Servicio del API de Google Pay.
El incumplimiento de estas políticas puede resultar en la suspensión de tu integración con Google Pay.
Prerequisitos
- Tener una cuenta activa en Conekta.
- Tener configurado el pago con tarjetas en tu cuenta de Conekta.
Conekta gestiona el registro del Merchant ID de Google Pay en nombre de todos los comercios. No se requiere registro adicional en la Google Pay & Wallet Console.
Métodos de Autorización y Redes de Tarjetas Soportadas
La integración de Google Pay de Conekta utiliza exclusivamente el método de autorización CRYPTOGRAM_3DS. PAN_ONLY no está soportado.
| Propiedad | Valores Soportados |
|---|---|
| Método de Autorización | CRYPTOGRAM_3DS |
| Redes de Tarjetas | Visa, Mastercard, American Express |
| País de Liquidación | México (MXN) |
CRYPTOGRAM_3DS: Se devuelve un token de dispositivo con un criptograma 3DS para cada transacción. Este método proporciona seguridad a nivel de red, lo que significa que la verificación 3D Secure se maneja dentro del token mismo en lugar de requerir un desafío 3DS separado al tarjetahabiente.
Dado que Conekta no soporta PAN_ONLY, todas las transacciones de Google Pay están inherentemente protegidas por criptogramas 3DS a nivel de red, proporcionando una experiencia de pago segura y sin fricción. El parámetro force_3ds_flow disponible en la configuración del checkout no aplica a las transacciones de Google Pay — es exclusivo para pagos con tarjeta estándar.
Estos parámetros son gestionados por Conekta durante el flujo de transacción de Google Pay. Los comercios no necesitan configurarlos manualmente cuando utilizan Hosted Checkout o Links de Pago.
Dirección de Facturación
Google Pay puede devolver la dirección de facturación del cliente como parte del token de pago. Conekta maneja la configuración de BillingAddressParameters dentro del flujo de Hosted Checkout.
Para integraciones con Hosted Checkout, la recolección de la dirección de facturación es gestionada automáticamente por Conekta. No se requiere configuración adicional por parte del comercio.
Link de pago por Panel
-
Ingresa a tu panel de administración. https://panel.conekta.com/

-
Haz click en la opción "Link de pago" del menú lateral y luego haz click en el botón "Crear Link".

-
Completa los datos del link de pago a crear. Por defecto todos nuestros métodos de pago se encuentran habilitados al crear un link de pago desde esta sección, puedes verlo haciendo click en el botón "Configuración avanzada".

-
Verás las opciones de pago, entre ellas "Google Pay"
Link de Pago por API
Si estás creando link de pago por API, solo debes agregar el nuevo método de pago google al array de "allowed_payment_methods". Debes tener configurado el pago con tarjetas.
curl --request POST \
--url https://api.conekta.io/checkouts \
--header 'accept: application/vnd.conekta-v2.2.0+json' \
-u key_eYvWV7gSDkNYXsmr: \
--header 'content-type: application/json' \
--data '{
"name": "Payment Link Name",
"type": "PaymentLink",
"recurrent": false,
"expires_at": 1590882634,
"allowed_payment_methods": ["card", "google"],
"needs_shipping_contact": true,
"order_template": {
"line_items": [{
"name": "Red Wine",
"unit_price": 1000,//con este valor y quantity se calculará el parámetro amount de la petición
"quantity": 10
}],
"currency": "MXN",
"customer_info": {
"name": "Juan Perez",
"email": "[email protected]",
"phone": "5566982090"
}
}
}'Checkout redireccionado
Similar a la creación de Link de pago por API; solo debes agregar el nuevo método de pago google al array de "allowed_payment_methods". Debes tener configurado el pago con tarjetas.
curl -H "Accept: application/vnd.conekta-v2.2.0+json" \
-H "Content-type: application/json" \
-H 'Authorization: Bearer key_XXXXXXX' \
-X POST -d '{
"currency": "MXN",
"customer_info": {
"name": "Juan Perez",
"email": "[email protected]",
"phone": "+5218181818181"
},
"line_items": [
{
"name": "Box of Cohiba S1s",
"unit_price": 35000,
"quantity": 1
}
],
"shipping_lines": [
{
"amount": 0
}
],
"checkout": {
"allowed_payment_methods": [
"card",
"google"
],
"type": "HostedPayment",
"success_url": "https://www.mysite.com/payment/confirmation",
"failure_url": "https://www.mysite.com/payment/failure",
"monthly_installments_enabled": true,
"monthly_installments_options": [
3,
6,
9,
12
],
"redirection_time": 4 //Tiempo de Redirección al Success-Failure URL, umbrales de 4 a 120 seg.
},
"shipping_contact": {
"phone": "+5215555555555",
"receiver": "Marvin Fuller",
"address": {
"street1": "Nuevo Leon 4",
"country": "MX",
"postal_code": "06100"
}
}
}' https://api.conekta.io/orders<?php
require __DIR__ . '/../../vendor/autoload.php';
use Conekta\Api\OrdersApi;
use Conekta\ApiException;
use Conekta\Configuration;
use Conekta\Model\OrderRequest;
$apiKey = getenv("CONEKTA_API_KEY");
$config = Configuration::getDefaultConfiguration()->setAccessToken($apiKey);
$apiInstance = new OrdersApi(null, $config);
$accept_language = 'es';
$rq = new OrderRequest([
'currency' => 'MXN',
'customer_info' => [
'name' => 'fran carrero',
'email'=> '[email protected]',
'phone' => '+5218181818181'
],
'line_items' => [
[
'name' => 'Box of Cohiba S1s',
'unit_price' => 35000,
'quantity' => 1
]
],
'shipping_lines' => [
[
'amount' => 1500,
'carrier' => 'FEDEX'
]
],
'checkout' => [
'allowed_payment_methods' => [
'card',
'google'
],
'monthly_installments_enabled' => true,
'type' => 'HostedPayment',
'success_url' => 'https://www.example.com/success',
'failure_url' => 'https://www.example.com/failure',
'monthly_installments_options' => [3, 6, 12],
'redirection_time' => 4 //Redirect time to Success-Failure URL, thresholds 4 to 120 sec.
],
'shipping_contact' =>[
'phone' => '+5218181818181',
'receiver' => 'Marvin Fuller',
'address' => [
'street1' => '250 Alexis St',
'city' => 'Red Deer',
'state' => 'Alberta',
'country' => 'CA',
'postal_code' => '01000'
]
]
]);
try {
$result = $apiInstance->createOrder($rq, $accept_language);
$json_string = json_encode($result, JSON_PRETTY_PRINT);
print_r($json_string);
echo $result ->getCheckout()->getUrl();
} catch (ApiException $e) {
echo 'Exception when calling OrdersApi->createOrder: ', $e->getMessage(), PHP_EOL;
}
valid_order_with_checkout = {
line_items: [
{
name: 'Box of Cohiba S1s',
description: 'Imported From Mex.',
unit_price: 120000,
quantity: 1,
sku: 'cohbs1',
category: 'food',
tags: ['food', 'mexican food']
}
],
checkout: {
allowed_payment_methods: ["card", "google"],
expires_at: Time.now.to_i + 259200,
failure_url: "testredirect.com",
force_2fa_flow: true,
success_url: "testredirect.com",
monthly_installments_enabled: true,
monthly_installments_options: [3, 6, 9, 12],
type: "HostedPayment",
redirection_time: 4 # Tiempo de Redirección al Success/Failure URL, umbrales de 4 a 120 seg.
},
customer_info: {
customer_id: customer.id
},
currency: 'mxn',
metadata: {test: 'extra info'}
}
order = Conekta::Order.create(valid_order_with_checkout)
puts order.inspectorder = self.client.Order.create(order)
checkout = order.createCheckout({
"currency": "MXN",
"customer_info": {
"customer_id": "cus_2o3FvMEBiKitVK1vQ"
},
"line_items": [{
"name": "Box of Cohiba S1s",
"unit_price": 300000,
"quantity": 1
}],
"shipping_lines": [{
"amount": 0
}],
"checkout": {
"type":"HostedPayment",
"success_url": "testredirect.com",
"failure_url": "testredirect.com",
"allowed_payment_methods": ["card", "google"],
"multifactor_authentication": False,
"monthly_installments_enabled": True,
"monthly_installments_options": [3,6,9,12,18],
"expires_at": 1609891200,
"redirection_time": 4 //Tiempo de Redirección al Success/Failure URL, umbrales de 4 a 120 seg.
},
"shipping_contact": {
"phone": "+5215555555555",
"receiver": "Marvin Fuller",
"address": {
"street1": "Nuevo Leon 4",
"country": "MX",
"postal_code": "06100"
}
}
})conekta.Order.create({
"currency": "MXN",
"customer_info": {
"customer_id": customer.id
},
"line_items": [{
"name": "Box of Cohiba S1s",
"unit_price": 300000,
"quantity": 1
}],
"shipping_lines": [{
"amount": 0
}],
"checkout": {
"type":"HostedPayment",
"success_url": "testredirect.com",
"failure_url": "testredirect.com",
"allowed_payment_methods": ["card", "google"],
"multifactor_authentication": False,
"monthly_installments_enabled": True,
"monthly_installments_options": [3,6,9,12,18],
"expires_at": 1609891200,
"redirection_time": 4 //Tiempo de Redirección al Success/Failure URL, umbrales de 4 a 120 seg.
},
"shipping_contact": {
"phone": "+5215555555555",
"receiver": "Marvin Fuller",
"address": {
"street1": "Nuevo Leon 4",
"country": "MX",
"postal_code": "06100"
}
}
}, function(err, res) {
if(err){
console.log(err);
return;
}
console.log(res.toObject());
});using Newtonsoft.Json;
var validOrderWithCheckout = new
{
currency: "MXN",
customer_info = new
{
customer_id = "cus_2o3FvMEBiKitVK1vQ"
},
line_items = new
[
new
{
name = "Box of Cohiba S1s",
unit_price = 300000,
quantity = 1
}
],
shipping_lines = new
[
new
{
"amount" = 0
}
],
checkout = new
{
type = "HostedPayment",
success_url = "testredirect.com",
failure_url = "testredirect.com",
allowed_payment_methods = new string[]
{
"card",
"google"
},
multifactor_authentication = false,
monthly_installments_enabled = true,
monthly_installments_options = new int[]
{
3,
6,
9,
12
},
expires_at = 1609891200,
redirection_time= 4 //Tiempo de Redirección al Success/Failure URL, umbrales de 4 a 120 seg.
},
shipping_contact = new
{
phone = "+5215555555555",
receiver = "Marvin Fuller",
address = new
{
street1 = "Nuevo Leon 4",
country = "MX",
postal_code = "06100"
}
}
};
var order = new Order()
.create(JsonConvert.SerializeObject(validOrderWithCheckout));package main
import (
"context"
"fmt"
"io"
"net/http"
"github.com/conekta/conekta-go"
)
func main() {
const acceptLanguage = "es"
cfg := conekta.NewConfiguration()
client := conekta.NewAPIClient(cfg)
ctx := context.WithValue(context.TODO(), conekta.ContextAccessToken, "key_DwaOLXoX6YCGGvfNifZ3IPwi")
rq := conekta.OrderRequest{
Checkout: &conekta.CheckoutRequest{
AllowedPaymentMethods: []string{"card", "google"},
FailureUrl: conekta.PtrString("https://www.mysite.com/payment/failure"),
MonthlyInstallmentsEnabled: conekta.PtrBool(true),
MonthlyInstallmentsOptions: []int32{3, 6, 9, 12},
SuccessUrl: conekta.PtrString("https://www.mysite.com/payment/confirmation"),
Type: conekta.PtrString("HostedPayment"),
},
Currency: "MXN",
CustomerInfo: conekta.OrderRequestCustomerInfo{
CustomerInfoJustCustomerId: conekta.NewCustomerInfoJustCustomerId("cus_2nHprwaWFn7QJ21Lj"),
},
LineItems: []conekta.Product{
{
Name: "Box of Cohiba S1s",
UnitPrice: 35000,
Quantity: 1,
},
},
ShippingContact: &conekta.CustomerShippingContacts{
Phone: conekta.PtrString("+5215555555555"),
Receiver: conekta.PtrString("Marvin Fuller"),
Address: conekta.CustomerShippingContactsAddress{
Street1: conekta.PtrString("Nuevo Leon 4"),
PostalCode: conekta.PtrString("06100"),
Country: conekta.PtrString("MX"),
},
},
ShippingLines: []conekta.ShippingRequest{{Amount: 0}},
}
order, response, err := client.OrdersApi.CreateOrder(ctx).
OrderRequest(rq).
AcceptLanguage(acceptLanguage).
Execute()
if err != nil {
panic(err)
}
if response.StatusCode != http.StatusCreated {
responseBody, err := io.ReadAll(response.Body)
if err != nil {
panic(err)
}
panic(fmt.Sprintf("response body: %s", responseBody))
}
fmt.Printf("order: %v", order)
}
try {
Order order = Order.create(
new JSONObject("{ 'currency': 'mxn'," +
" 'customer_info': {" +
" 'customer_id': 'cus_2o3FvMEBiKitVK1vQ'" +
" }," +
" 'line_items': [{" +
" 'name': 'Box of Cohiba S1s'," +
" 'unit_price': 300000," +
" 'quantity': 1," +
" }]," +
" 'checkout': {" +
" 'allowed_payment_methods': ['card','google']," +
" 'expired_at': " + (System.currentTimeMillis() / 1000L) + 259200 + "," +
" 'failure_url': 'testredirect.com'," +
" 'monthly_installments_enabled': true," +
" 'monthly_installments_options': [3,6,9,12,18]," +
" 'success_url': 'testredirect.com'," +
" 'type': 'HostedPayment'" +
" 'redirection_time': 4," +
" }," +
" 'shipping_contact': {" +
" 'phone': '5555555555'," +
" 'receiver': 'Marvin Fuller'" +
" }" +
"}")
);
} catch (Conekta::Error e) {
System.out.println(e.details.get(0).message);
}Esto regresa una respuesta como la siguiente:
{
"livemode": false,
"amount": 35000,
"currency": "MXN",
"amount_refunded": 0,
"customer_info": {
"email": "[email protected]",
"phone": "+5218181818181",
"name": "Juan Perez",
"object": "customer_info"
},
"shipping_contact": {
"receiver": "Marvin Fuller",
"phone": "+5215555555555",
"address": {
"street1": "Nuevo Leon 4",
"country": "mx",
"residential": true,
"object": "shipping_address",
"postal_code": "06100"
},
"id": "ship_cont_2yZr3Kg9BEXsDSUHW",
"object": "shipping_contact",
"created_at": 1756131674
},
"channel": {
"segment": "Checkout",
"checkout_request_id": "8ebff614-697a-41ea-a82a-66c666169047",
"checkout_request_type": "HostedPayment",
"id": "channel_2yZr3Kg9BEXsDSUHY"
},
"checkout": {
"id": "8ebff614-697a-41ea-a82a-66c666169047",
"name": "ord-2yZr3Kg9BEXsDSUHX",
"livemode": false,
"emails_sent": 0,
"success_url": "https://www.mysite.com/payment/confirmation",
"failure_url": "https://www.mysite.com/payment/failure",
"paid_payments_count": 0,
"sms_sent": 0,
"status": "Issued",
"type": "HostedPayment",
"recurrent": false,
"starts_at": 1756101600,
"expires_at": 1756360799,
"allowed_payment_methods": [
"card",
"google"
],
"exclude_card_networks": [],
"needs_shipping_contact": false,
"monthly_installments_options": [
3,
6,
9,
12
],
"monthly_installments_enabled": true,
"redirection_time": 4,
"force_3ds_flow": false,
"metadata": {},
"can_not_expire": false,
"object": "checkout",
"is_redirect_on_failure": true,
"slug": "8ebff614697a41eaa82a66c666169047",
"url": "https://pay.stg.conekta.io/checkout/8ebff614697a41eaa82a66c666169047"
},
"object": "order",
"id": "ord_2yZr3Kg9BEXsDSUHX",
"metadata": {},
"is_refundable": false,
"created_at": 1756131674,
"updated_at": 1756131674,
"line_items": {
"object": "list",
"has_more": false,
"total": 1,
"data": [
{
"name": "Box of Cohiba S1s",
"unit_price": 35000,
"quantity": 1,
"object": "line_item",
"id": "line_item_2yZr3Kg9BEXsDSUHT",
"parent_id": "ord_2yZr3Kg9BEXsDSUHX",
"metadata": {},
"antifraud_info": {}
}
]
},
"shipping_lines": {
"object": "list",
"has_more": false,
"total": 1,
"data": [
{
"amount": 0,
"object": "shipping_line",
"id": "ship_lin_2yZr3Kg9BEXsDSUHU",
"parent_id": "ord_2yZr3Kg9BEXsDSUHX"
}
]
}
}Al redirigir a la url del checkout podrás ver el nuevo botón de pago Google Pay.
Nota Técnica: Configuración del Gateway
Cuando agregas "google" al array de allowed_payment_methods, Conekta configura automáticamente los siguientes parámetros del gateway del API de Google Pay en tu nombre:
{
"type": "PAYMENT_GATEWAY",
"parameters": {
"gateway": "conekta",
"gatewayMerchantId": "<tu-conekta-merchant-id>"
}
}Los comercios no necesitan configurar estos valores manualmente. Conekta maneja la tokenización completa y la configuración del gateway como parte del flujo de Hosted Checkout.
Updated about 14 hours ago
