Google Pay via API direta
Nesta página
Este guia aborda como integrar o Google Pay diretamente com a API da DEUNA. A integração direta oferece controle total sobre o fluxo de pagamento, tornando-a ideal para comerciantes que precisam de implementações personalizadas ou possuem sistemas de pagamento existentes. Esta integração suporta pagamentos únicos.
Google Pay com DEUNA#
A seguir está o processo padrão para uma compra do Google Pay com DEUNA:
- Obtenha os métodos de pagamento
- Inicialize o SDK da Web do Google Pay
- Compre com Google Pay
1. Obtenha os métodos de pagamento#
Recupere o ID da credencial do Google Pay e os parâmetros de configuração do SDK.
→ Consulte a referência da API Obter métodos de pagamento
Resposta
{
"data": [
{
"allow_installments_plan": true,
"credentials": {
"external_merchant_id": "DEUNA_GOOGLE_MERCHANT_ID"
},
"enabled": true,
"extra_params": {
"allowed_auth_methods": [
"PAN_ONLY",
"CRYPTOGRAM_3DS"
],
"allowed_card_networks": [
"VISA",
"MASTERCARD",
"AMEX"
],
"merchant_name": "Test DEUNA"
},
"id": "ef2319fe-f88d-4d8d-b4d1-e4fa08f18651",
"method_type": "wallet",
"payment_provider": "google_pay",
"processor_name": "google_pay"
}
]
}2. Inicialize o SDK da Web do Google Pay#
Consulte a seguinte documentação do Google Pay para referência completa:
- Visão geral do SDK da Web do Google Pay
- Criptografia de dados de pagamento (ECv2)
- Teste com tokens de amostra
Importe o SDK JS do Google Pay
Adicione o seguinte script à sua página:
<script src="https://pay.google.com/gp/p/js/pay.js"></script>Exemplo completo de integração
// 1. Check availability
const paymentsClient = new google.payments.api.PaymentsClient({
environment: 'PRODUCTION' // or 'TEST' for sandbox
});
const isReadyToPayRequest = {
apiVersion: 2,
apiVersionMinor: 0,
allowedPaymentMethods: [
{
type: 'CARD',
parameters: {
allowedAuthMethods: ['PAN_ONLY', 'CRYPTOGRAM_3DS'], // from extra_params.allowed_auth_methods
allowedCardNetworks: ['VISA', 'MASTERCARD', 'AMEX'] // from extra_params.allowed_card_networks
}
}
]
};
paymentsClient.isReadyToPay(isReadyToPayRequest).then((response) => {
if (!response.result) {
// Google Pay not available — hide the button or show a fallback
}
});
// 2. Build the payment data request (use values from Get Payment Methods endpoint)
const paymentDataRequest = {
apiVersion: 2,
apiVersionMinor: 0,
allowedPaymentMethods: [
{
type: 'CARD',
parameters: {
allowedAuthMethods: ['PAN_ONLY', 'CRYPTOGRAM_3DS'],
allowedCardNetworks: ['VISA', 'MASTERCARD', 'AMEX']
},
tokenizationSpecification: {
type: 'PAYMENT_GATEWAY',
parameters: {
gateway: 'deuna',
gatewayMerchantId: '{external_merchant_id}' // from credentials.external_merchant_id
}
}
}
],
merchantInfo: {
merchantId: '{google-merchant-id}',
merchantName: 'Test DEUNA' // from extra_params.merchant_name
},
transactionInfo: {
countryCode: 'MX',
currencyCode: 'MXN',
totalPrice: '1.00',
totalPriceStatus: 'FINAL'
}
};
// 3. Load payment data on button click (must be inside a user gesture)
// The credential-id comes from the `id` field in the Get Payment Methods response
paymentsClient.loadPaymentData(paymentDataRequest).then((paymentData) => {
// 4. Handle payment authorization
// Extract the raw token string — send it as-is to DEUNA, without parsing or re-serializing
const googlePayToken = paymentData.paymentMethodData.tokenizationData.token;
// Use googlePayToken in step 3 — Create Card or Purchase V2
}).catch((err) => {
console.error('Google Pay error:', err);
});3. Compre com Google Pay#
Assim que o cliente autorizar o pagamento, loadPaymentData() resolve e entrega um token ECv2 criptografado via paymentData.paymentMethodData.tokenizationData.token. Este token deve ser enviado tal como está, sem qualquer modificação, para a DEUNA.
Você tem três opções dependendo do seu caso de uso:
3.1 Criar cartão
Utilize esta opção quando quiser guardar o cartão para compras futuras. O token de tokenizationData.token é enviado para o endpoint Create Card, que retorna um card_id que podem ser reutilizados em compras subsequentes.
→ Consulte a referência da API de criação de cartão
{
"google_pay": {
"paymentData": {
"token": {
"protocolVersion": "ECv2",
"signature": "MEQCIH6Q4OwQ0jAceFEkGF0JID6sJNXxOEi4r+mA7biHQS9nwiiNwOrr24RyPeHA0Q==",...
"intermediateSigningKey": {
"signedKey": "{\"keyExpiration\":\"1542323393147\",\"keyValue\":\"MFJeFRxyCw==\"}",...
"signatures": [
"MEYCIQCO2EIi48s8VTH+ilMEpoXLFfkxAwHjfPSCVED/QDSHmQWpeNmIP+z+tCQHQxP0v"...
]
},
"signedMessage": "{\"tag\":\"jpGz1F1BVrKbRU9K8+7cZs=\",\"en:\"mKOoXwi8OavZ...\"}"...
}
}
},
"credential_source": "google_pay"
}3.2 Purchase with Card ID
Utilize esta opção quando o cartão já tiver sido salvo através de Criar Cartão. Esta é uma solicitação de compra padrão V2 usando o card_id retornado pelo endpoint Create Card – não é necessário token do Google Pay.
→ Consulte a referência da API de compra V2
{
"order_token": "{order-token}",
"order_type": "DEUNA_CHECKOUT",
"payer_info": {
"email": "customer@example.com",
"card_holder_dni": "12345678"
},
"payment_source": {
"method_type": "credit_card",
"card_info": {
"card_id": "{deuna-card-id}"
}
}
}3.3 Compra Direta
Use esta opção para pagamentos únicos onde você não precisa salvar o cartão. O token de tokenizationData.token é enviado diretamente na solicitação de compra.
→ Consulte a referência da API de compra V2
{
"order_token": "{{order-token}}",
"order_type": "DEUNA_CHECKOUT",
"payer_info": {
"email": "{{random_user}}@testuser.com",
"card_holder_dni": "12345678"
},
"payment_source": {
"method_type": "credit_card",
"card_info": {
"credential_source": "google_pay",
"credential_source_config": {
"type": "google_pay",
"values": {
"system": "DIRECT",
"encrypted_data": "{\"signature\":\"MEUCI...Qb27X0\\u003d\",\"intermediateSigningKey\":{\"signedKey\":\"{\\\"keyValue\\\":\\\"MFkwEw...dwluLc74w\\\\u003d\\\\u003d\\\",\\\"keyExpiration\\\":\\\"1732...316\\\"}\",\"signatures\":[\"MEU...z+94I\\u003d\"]},\"protocolVersion\":\"ECv2\",\"signedMessage\":\"{\\\"encryptedMessage\\\":\\\"06PdX...wYvlX4\\\\u003d\\\",\\\"ephemeralPublicKey\\\":\\\"BNPW...4O2S6j0\\\\u003d\\\",\\\"tag\\\":\\\"m3Iv...KY8g\\\\u003d\\\"}\"}"
}
}
}
},
"anti_fraud_info": {
"device": {
"id": "eyJPUEVOUEFZIjoiIiwiTUVSQ0FET1BBzAzLTk2NjRkYzE3MWQzYiJ9..."
}
}
}Resposta:
{
"order_type": "DEUNA_CHECKOUT",
"order_token": "4598f493-de86-4fe0-b9fd-c4c6c9847e39",
"order": {
"order_id": "DEUNA_CHECKOUT_b6a5c0b6-3df9-4b3b-b778-7086c190062b",
"currency": "MXN",
"total_amount": 10000,
"display_total_amount": "MXN 100,00",
"status": "succedeed",
"payment": {
"data": {
"status": "processed"
}
}
}
}