Documentação/Referência da API

API REFERENCE

Google Pay ™

POSThttps://mapi.yabandpay.com/Payments
Live API
API PLAYGROUND · Live API

Google Pay ™

POSThttps://mapi.yabandpay.com/Payments
Automatically signed with your credentials

Request parameters14

Required fields first

Google Pay ™

pay_methodRequiredstringdata.pay_methodonline
sub_pay_methodRequiredstringdata.sub_pay_methodGoogle Pay
operationRequiredstringdata.operation1. Sales; 2.Authorisation
amountRequiredstringdata.amount金额数字。例如 € 24.99 应该写成24.99
currencyRequiredstringdata.currency货币代码,ISO 4217,例如EUR,CHF
descriptionRequiredstringdata.description订单描述
payment_token_objectRequiredstringdata.payment_token_object从Google Pay拿到的“token”的字符串base64
cardinfoRequiredstringdata.cardinfo包括持卡人姓名和email
timeoutRequiredstringdata.timeout过期时间单位分钟(0-1440)
notify_urlRequiredstringdata.notify_url支付完成后异步通知地址
request_idRequiredstringdata.request_id请求id需保持唯一,建议24以上位数字+字母
Optional parameters 2
demoOptionalstringdata.demo自定义字段
redirect_urlOptionalstringdata.redirect_url支付完成后跳转地址

请求参数

3ds_initiateRequiredstringdata.3ds_initiate3ds设置。 01. 开启3ds验证;

Credentials stay on this page. Your secret key is never stored or sent to the documentation server.

Parâmetros

ParameterTypeDescriçãoObrigatório
data.pay_methodstringonline✓
data.sub_pay_methodstringGoogle Pay✓
data.operationstring1. Sales; 2.Authorisation✓
data.order_idinteger商户的订单ID✓
data.amountstring金额数字。例如 € 24.99 应该写成24.99✓
data.currencystring货币代码,ISO 4217,例如EUR,CHF✓
data.descriptionstring订单描述✓
data.demostring自定义字段—
data.payment_token_objectstring从Google Pay拿到的“token”的字符串base64✓
data.cardinfostring包括持卡人姓名和email✓
data.timeoutstring过期时间单位分钟(0-1440)✓
data.redirect_urlstring支付完成后跳转地址—
data.notify_urlstring支付完成后异步通知地址✓
data.request_idstring请求id需保持唯一,建议24以上位数字+字母✓
data.3ds_initiatestring3ds设置。 01. 开启3ds验证;✓

Para fluxos de pagamento compatíveis com Google Pay

O Google Pay funciona em navegadores e Apps nos principais dispositivos desktop e móveis. Por meio do Google Pay, a YabandPay oferece suporte a cartões de débito e crédito das seguintes bandeiras:

  • Visa / VPay

  • Mastercard / Maestro

  • UnionPay

A conta de liquidação deve estar no Espaço Econômico Europeu (EEE) ou no Reino Unido.

Dica

Todos os estabelecimentos que usam Google Pay devem cumprir os seguintes termos:

  • Google Pay APIs Acceptable Use Policy
  • Google Pay API Terms of Service

Ao integrar Google Pay pela solução hospedada da YabandPay, os estabelecimentos aceitam e concordam em cumprir os termos acima.

1. Tipos de credenciais e requisitos 3DS

Google Pay é compatível com os dois tipos de credenciais a seguir:

  • PAN_ONLY: Retorna um invólucro criptografado com o número da conta principal em texto simples (cardInfo.cardDetails) e a bandeira do cartão (cardInfo.cardNetwork), sem criptograma.

  • CRYPTOGRAM_3DS: Retorna credenciais criptografadas baseadas em token, com um token de rede (DPAN) e um criptograma, para transações que exigem maior segurança.

Requisitos 3DS:

Ao receber credenciais PAN_ONLY pela API do Google Pay, você deve realizar a verificação 3D Secure (defina 3ds_initiate=01). A YabandPay rejeita transações sem verificação 3DS.

Para garantir compatibilidade e segurança, siga estas recomendações de integração:

  • Ative ["CRYPTOGRAM_3DS", "PAN_ONLY"] na configuração frontend do Google Pay.

  • Sempre defina 3ds_initiate=01 ao enviar uma solicitação de pagamento à YabandPay.

  • O backend da YabandPay determina se deve realizar 3D Secure com base no tipo de credencial.

2. Integração em aplicativo ou web (hospedagem própria)

Os estabelecimentos podem integrar a API do Google para iniciar o fluxo de pagamento no próprio site ou App. O processo e a configuração estão descritos abaixo:

Fluxo de pagamento:

O Google Pay usa credenciais de um cartão vinculado ao dispositivo (DPAN, token de rede) em vez do número real do cartão (PAN). O fluxo de pagamento é:

  1. O cliente seleciona o botão Google Pay no site ou App do estabelecimento.

  2. O cliente autoriza usando Face ID / Touch ID / uma senha.

  3. O Google retorna um token criptografado.

  4. O estabelecimento envia o token à YabandPay para processamento.

Observação: no modo com hospedagem própria, os estabelecimentos devem cadastrar uma conta própria de comerciante do Google Pay no Google Pay & Wallet Console e obter um Merchant ID. Esse Merchant ID é vinculado ao canal de pagamento da YabandPay.

Exemplo de configuração da API:

"tokenizationSpecification": {
  "type": "PAYMENT_GATEWAY",
  "parameters": {
    "gateway": "yabandpay",
    "gatewayMerchantId": "<Merchant ID assigned by YabandPay>"
  }
}
  • Codifique o token recebido em Base64 e envie-o à API de pagamento da YabandPay em payment_token_object.

  • gateway: um valor fixo que deve ser "yabandpay".

  • Recomenda-se desativar a verificação de endereço, conforme a configuração abaixo:

billingAddressRequired: false

3. Hosted integration

A YabandPay oferece uma solução hospedada para Google Pay. Os estabelecimentos não precisam integrar um botão ou SDK do Google Pay. Envie um pedido pela API padrão e direcione o cliente à página hospedada da YabandPay em https://pay.yabandpay.com para concluir o pagamento.

No modo hospedado, Google Pay funciona na página da YabandPay, então os estabelecimentos não precisam configurar CSP, carregar scripts do Google ou definir uma versão do SDK.

Fluxo de integração:

  1. O estabelecimento envia um pedido usando a Hosted Payment Solution (HPP) da YabandPay. A YabandPay retorna pay_url.

  2. O cliente é redirecionado à página hospedada em pay_url.

  3. O cliente conclui o pagamento com Google Pay nessa página.

  4. Após o pagamento, o cliente é redirecionado a redirect_url, conforme configurado, e uma notificação assíncrona é enviada a notify_url.

Observações:

  • Os estabelecimentos não precisam carregar o JavaScript do Google Pay nem criar as próprias solicitações ao Google Pay.

  • A YabandPay trata de toda a descriptografia de backend e da verificação de transações do Google Pay.

  • Os estabelecimentos devem ativar Google Pay no portal de comerciantes da YabandPay.

  • A página hospedada exibe automaticamente o nome do estabelecimento, o valor do pedido e outras informações para o cliente identificar o pagamento.

  • Todas as transações são processadas usando o Google Merchant ID compartilhado da YabandPay.

4. Authorization methods

A YabandPay é compatível com os seguintes modos de autorização do Google Pay:

  • Há suporte para autorizações de transação única (DPAN + criptograma).

  • Não há suporte para Card-on-File (COF).

  • Não há suporte para autenticação biométrica FIDO.

5. Data submission requirements

  • Envie payment_token_object criptografado à YabandPay por HTTPS POST.

  • Todos os dados são criptografados em trânsito com TLS 1.2 ou posterior.

  • A YabandPay usa HSMs em conformidade com PCI DSS para descriptografia de backend.

6. Referências oficiais de integração do Google

Recursos gerais:

Guias de integração de App:

Guias de integração web:


ParâmetroTipoDescriçãoObrigatório
userStringConta de caixa UIDObrigatório
signStringSignatureObrigatório
methodStringv3.GooglePayObrigatório
timeLongTimestampObrigatório
  • Parâmetros
ParâmetroTipoDescriçãoObrigatório
pay_methodStringonlineObrigatório
sub_pay_methodStringGoogle PayObrigatório
operationString1. Sales; 2.AuthorisationObrigatório
order_idStringID do pedido do estabelecimentoObrigatório
amountStringValor como cadeia numérica. Por exemplo, informe 24.99 for € 24.99.Obrigatório
currencyStringCódigo da moeda ISO 4217 currency code, for example EUR or CHFObrigatório
descriptionStringDescrição do pedidoObrigatório
demoStringCampo personalizadoOpcional
3ds_initiateString3DS configuration. 01. Enable 3DS verification.Obrigatório
payment_token_objectStringCadeia "token" codificada em Base64, obtida do Google PayObrigatório
cardinfoStringInclui o nome e o e-mail do titular do cartãoObrigatório
cardinfo.card_holderstringNome do titular do cartãoObrigatório
cardinfo.emailstringE-mail do titular do cartãoObrigatório
timeoutStringTempo de expiração em minutos (0-1440)Obrigatório
redirect_urlStringURL de redirecionamento após o pagamentoOpcional
notify_urlStringURL de notificação assíncrona após o pagamentoObrigatório
request_idStringID de solicitação exclusivo; recomenda-se uma combinação de letras e números com pelo menos 24 characters is recommendedObrigatório

Obtaining payment_token_object:

Exemplo de token retornado pelo Google Pay:

{
	"signature": "MEUCIC+XtiYdlmjL2/1wEn33qnya8G4POk5jYkRNY5+MkdBlAiEAwoRYQu26ZopwpcOWlwUe/E+i4FKzpunCFZf44mS0cxQ\u003d",
	"intermediateSigningKey": {
		"signedKey": "{\"keyValue\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEUJW8LjUtTV7esDMJLtCe8hYjlcQih8g7HP5bgO4ysma4/CwGq0CnZ5G0t0o44D92d9L3SfXS2GyK2PJMtE/NBg\\u003d\\u003d\",\"keyExpiration\":\"1724120515000\"}",
		"signatures": ["MEYCIQC1ZWgFEaSR1pNbwTW6liQL7WXZQZExx1Idj7oQzHvoPQIhAOx1b+9CamfDeZUcHXpU01xTfa6EaaH3TgKaTBnrsuuG"]
	},
	"protocolVersion": "ECv2",
	"signedMessage": "{\"encryptedMessage\":\"y+XA1ltwldTcmVSZwfVayP7b0hPNLODGyi2UgCCJcSSs0iBj73HML5eWcYBiT+T+ZP8SmV54U9E2AmuRwVeVYHai8Z/ajrxE7fM+Fv/e9IXt36WjC4SWhAHM8T/DkOlE6BcuoKAMz6iLkJJ40g0zAkUKijln5YEbhLXHRoh/5l/8wGNDxErI7JdNZ4cA9vh8go/gR2YXKxVngFH4PFHcGyKa4MKnYDATMBDdx/F+MI4vVtPLXruTPpG0HBgLlJct95LZl9T686sOWuwg4pWLLSqcbuqd+MAZZihy2FW+9cdKNXsebL91rRbq7dahtET1K90YzyWzM9CfntcjHf5YqhnssApnE+Jb7OZ+mn5hO27Z93by7G3Fgi7YxJqcW4o/4D+NIANe0BqwbFyhw5Un8rIKkXg//WD9TlFHl2oIgyOKnZLO8NrnfEffoxstvRft1enafD0DadUk2IL5+Q\\u003d\\u003d\",\"ephemeralPublicKey\":\"BFzys/8Oy4iBu0ZYlLcy5SNZUOKFQhTx/985qiMFKGssVm4Fk9hweWlemyClMbI216lbsPS4Sy15ab/75gW1v08\\u003d\",\"tag\":\"jpHUeHrZuI1y77wRisFznOadAzlP2je8RFpT9PFpmHs\\u003d\"}"
}

O campo payment_token_object é a cadeia base64_encode dos dados do token obtidos na integração com o Google Pay.

Exemplo de assinatura:

Parâmetros ordenados concatenados em uma cadeia de consulta no formato de URL

"3ds_initiate=01&amount=0.1&cardinfo={"card_holder":"John Smith","email":"JohnSmith@gmail.com"}&currency=EUR&description=test&method=v3.GooglePayment&notify_url=https://www.yabandpay.com/notify&operation=1&order_id=1723517503&pay_method=online&payment_token_object=eyJzaWduYXR1cmUiOiJNRVVDSUMrWHRpWWRsbWpMMi8xd0VuMzNxbnlhOEc0UE9rNWpZa1JOWTUrTWtkQmxBaUVBd29SWVF1MjZab3B3cGNPV2x3VWUvRStpNEZLenB1bkNGWmY0NG1TMGN4UVx1MDAzZCIsImludGVybWVkaWF0ZVNpZ25pbmdLZXkiOnsic2lnbmVkS2V5Ijoie1wia2V5VmFsdWVcIjpcIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVVKVzhMalV0VFY3ZXNETUpMdENlOGhZamxjUWloOGc3SFA1YmdPNHlzbWE0L0N3R3EwQ25aNUcwdDBvNDREOTJkOUwzU2ZYUzJHeUsyUEpNdEUvTkJnXHUwMDNkXHUwMDNkXCIsXCJrZXlFeHBpcmF0aW9uXCI6XCIxNzI0MTIwNTE1MDAwXCJ9Iiwic2lnbmF0dXJlcyI6WyJNRVlDSVFDMVpXZ0ZFYVNSMXBOYndUVzZsaVFMN1dYWlFaRXh4MUlkajdvUXpIdm9QUUloQU94MWIrOUNhbWZEZVpVY0hYcFUwMXhUZmE2RWFhSDNUZ0thVEJucnN1dUciXX0sInByb3RvY29sVmVyc2lvbiI6IkVDdjIiLCJzaWduZWRNZXNzYWdlIjoie1wiZW5jcnlwdGVkTWVzc2FnZVwiOlwieStYQTFsdHdsZFRjbVZTWndmVmF5UDdiMGhQTkxPREd5aTJVZ0NDSmNTU3MwaUJqNzNITUw1ZVdjWUJpVCtUK1pQOFNtVjU0VTlFMkFtdVJ3VmVWWUhhaThaL2FqcnhFN2ZNK0Z2L2U5SVh0MzZXakM0U1doQUhNOFQvRGtPbEU2QmN1b0tBTXo2aUxrSko0MGcwekFrVUtpamxuNVlFYmhMWEhSb2gvNWwvOHdHTkR4RXJJN0pkTlo0Y0E5dmg4Z28vZ1IyWVhLeFZuZ0ZINFBGSGNHeUthNE1LbllEQVRNQkRkeC9GK01JNHZWdFBMWHJ1VFBwRzBIQmdMbEpjdDk1TFpsOVQ2ODZzT1d1d2c0cFdMTFNxY2J1cWQrTUFaWmloeTJGVys5Y2RLTlhzZWJMOTFyUmJxN2RhaHRFVDFLOTBZenlXek05Q2ZudGNqSGY1WXFobnNzQXBuRStKYjdPWittbjVoTzI3WjkzYnk3RzNGZ2k3WXhKcWNXNG8vNEQrTklBTmUwQnF3YkZ5aHc1VW44cklLa1hnLy9XRDlUbEZIbDJvSWd5T0tuWkxPOE5ybmZFZmZveHN0dlJmdDFlbmFmRDBEYWRVazJJTDUrUVx1MDAzZFx1MDAzZFwiLFwiZXBoZW1lcmFsUHVibGljS2V5XCI6XCJCRnp5cy84T3k0aUJ1MFpZbExjeTVTTlpVT0tGUWhUeC85ODVxaU1GS0dzc1ZtNEZrOWh3ZVdsZW15Q2xNYkkyMTZsYnNQUzRTeTE1YWIvNzVnVzF2MDhcdTAwM2RcIixcInRhZ1wiOlwianBIVWVIclp1STF5Nzd3UmlzRnpuT2FkQXpsUDJqZThSRnBUOVBGcG1Ic1x1MDAzZFwifSJ9&redirect_url=https://www.yabandpay.com/redirect_url&request_id=g77ur3oqhkqd348iljrb04pbj412rka3&sub_pay_method=Google Pay&time=1723517503&timeout=0&user=YOUR_CASHIER_UID"

Assine a stringA usando secret_key

A assinatura resultante é:

"YOUR_SIGNATURE"

Request example (operation=1 Sales):

{
    "user": "YOUR_CASHIER_UID",
    "sign": "YOUR_SIGNATURE",
    "method": "v3.GooglePay",
    "time": 1721979693,
    "data": {
        "description": "test",
        "timeout": "0",
        "pay_method": "online",
        "sub_pay_method": "Google Pay",
        "order_id": 1721979693,
        "amount": "0.1",
        "currency": "EUR",
        "operation": "1",
        "redirect_url": "https://www.yabandpay.com/redirect_url",
        "notify_url": "https://www.yabandpay.com/notify",
        "3ds_initiate": "01",
        "payment_token_object": "eyJzaWduYXR1cmUiOiJNRVVDSVFDOEJmbDJrSkttUjVvOUxNc3RCYnA0MGtBRW9FQnh4SlQ4VTl2UVgyc1JMd0lnTUJTOWpidDFxR0NoVmxmeElDUTdYOHBKM3VYN1lkY0M5UFd1eEVubmo5b1x1MDAzZCIsImludGVybWVkaWF0ZVNpZ25pbmdLZXkiOnsic2lnbmVkS2V5Ijoie1wia2V5VmFsdWVcIjpcIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVdabXZVODU3SnlOV2ZEbFFuVzBaRG1MUEpoSG91dlpsT09aZk5ORm9nWElJVlRVTnNYNGJ0MEZFakdpVEs4QTNGb094a0d5NStrQ0ZCWDUyL0hhcS93XHUwMDNkXHUwMDNkXCIsXCJrZXlFeHBpcmF0aW9uXCI6XCIxNzIwNTg5NjI3MTk5XCJ9Iiwic2lnbmF0dXJlcyI6WyJNRVVDSVFDbWpKSmFMYzUxWEo3T3dEaUY5QVVIVloyVytGMFJSVWdnNmI5YUc0S2hiUUlnVDBKeVdjRHNlcEpyc2ZyM0xzekdtTUpUNkxZSitzRmZ5YWtmYlIweHg1c1x1MDAzZCJdfSwicHJvdG9jb2xWZXJzaW9uIjoiRUN2MiIsInNpZ25lZE1lc3NhZ2UiOiJ7XCJlbmNyeXB0ZWRNZXNzYWdlXCI6XCJBaVhPT3BJYitNdGxSWnV3MW9nL3ZLVVdvT3FmVEcwZndMcG14WCtuSkFPRXJPQkFYa3dWWG8zd01DaVpQaEppZVN3dHZBNnFaVXpWVTBOVWJaWTVSdE1qZWxUWnVHV3dKcjdRVU9Ob3NXRzFXSmd4bjRHVVRPL2g2Nzdpd2ROajgzbVRDdWNPZnNHeDVMcTZCdXZXT1F0a21Gdk9qSnVSN1daQ2k3QTl4S2tWckxvVEsyWEpBNmNxb0pZMERpa1NMOU1WQW5JWVNyenpCakFwWVc0SGxXTm14ZnJYUUUzYTFKTW95UlRDWWR4azZwUGVzNi9xOG5zN2Fid1RHUGNicmNVZndaN0hiSnFWRVd1aFZxTWpxZW50RHgvRXd3SHFYd0s0YUhMc0hvOGVkc09jbEdMTXBNeFVVOHc0MHJ2ZFNxc3NyUEFmN0RnSGoydkNBNUt2amMrcnBaaGY0Wnl1UkFacHpHSmNvYXNTV3JVeXNqUG5FcFNyVnpzbWV3ejB1K2JyYmNFOTlFNnd0cHhnWVZwUVl0d3FmY2FRY3ZJWUZaT3FXaEJGNFpXcUZoUmdGSkZlQVJSQU1ndnlURmhDaVhObExqcFZcIixcImVwaGVtZXJhbFB1YmxpY0tleVwiOlwiQk83SUpTMVNBanlqWG9EUTVOblBqZmk3dWJ3UVB0Mkx1OFZVQm9SVlh0Q2pWV3h4UUNLWm9sbmc0cnBmUEdaVlRyQzNwOWRUMEtveWhBc2NsR0Z5ZFhFXHUwMDNkXCIsXCJ0YWdcIjpcImtoT1dIRUlSSzBuWVBiWU1OdnhkZVNUTzlsYWJRdlBYZWQrQ1NLZTFyZ1FcdTAwM2RcIn0ifQ==",
        "cardinfo": "{\"card_holder\":\"John Smith\",\"email\":\"JohnSmith@gmail.com\"}",
        "request_id": "2cwmm7wubqkgtzbtzjhvhkaubev81a0r"
    }
}


Response example (PAN_ONLY):

Observação: para PAN_ONLY, redirecione para o url retornado para concluir a verificação 3DS. Após o 3DS, o cliente será redirecionado para redirect_url:

{
    "status": true,
    "code": "200",
    "data": {
        "order_id": "YOUR_ORDER_ID",
        "trade_id": "e684679e-658b-ac70-fd9e-e4959e147e00",
        "amount": "0.10",
        "currency": "EUR",
        "sub_pay_method": "Google Pay",
        "state": "processing",
        "url": "https://pay.yabandpay.com/dispose_shift4_googlepay_3ds?data=eyJwc3QiOiJlNjg0Njc5ZS02NThiLWFjNzAtZmQ5ZS1lNDk1OWUxNDdlMDAiLCJzaWduX3RyYWRlX2lkIjoiNWZkNzc5Zjg0MmY1ZTc2ZjVmNGQzNGQyNGQ5MGZkMzYyZWMyZGY5ZjU0ODk5ZjBlZDgxYTRkYWUxODM2MmEwNCIsInVzZXIiOiIwMTY2ODMifQ=="
    },
    "message": "",
    "response_id": "202408131051432400124088"
}

Response example (CRYPTOGRAM_3DS):

Observação: para CRYPTOGRAM_3DS, não é necessária outra verificação 3DS e state é retornado diretamente:

{
    "status": true,
    "code": "200",
    "data": {
        "order_id": "YOUR_ORDER_ID",
        "trade_id": "e684679e-658b-ac70-fd9e-e4959e147e00",
        "amount": "0.10",
        "currency": "EUR",
        "sub_pay_method": "Google Pay",
        "state": "paid"
    },
    "message": "",
    "response_id": "202408131051432400124088"
}

Informações adicionais:

Resultado da resposta:
  1. Uma solicitação bem-sucedida retorna "status": true.

  2. Uma solicitação malsucedida retorna "status": false.

Avalie as informações retornadas: se contiverem url, redirecione para esse endereço; se não contiverem url, leia state diretamente.

Para PAN_ONLY, depois que o usuário conclui a verificação 3DS em url, ele é redirecionado de volta a redirect_url de forma síncrona. Recomendamos fortemente usar Order Query e Asynchronous Notifications para sincronizar e atualizar o status do pagamento e manter as informações corretas em tempo real. a) Se o status do pedido state for paid, o pagamento foi bem-sucedido; b) se o status do pedido state for authorized, a autorização foi bem-sucedida. Para capturar os fundos após a autorização bem-sucedida, chame a API de captura de autorização.

Códigos de resposta:
StatusCodeMessage
true200
false-1000Internal error
false-403The signature Error
false-2001The user not exist
false-3001Required field is missing
false-4118Incorrect request ID