Este guia fornece a Referência da API técnica e os esquemas de payload para a versão
2026-04-08 do checkout nativo do Protocolo de Comércio Universal (UCP).
Antes de criar seus endpoints, consulte a visão geral do checkout nativo para conhecer o processo de finalização da compra de alto nível, os requisitos de autenticação e as ferramentas para desenvolvedores.
Criar sessão de finalização de compra
Esse endpoint permite a criação de uma sessão de finalização da compra com os produtos que um usuário tem interesse em comprar.
- Endpoint:
POST /checkout-sessions - Gatilho:o usuário clica em "Comprar agora" em um produto ou em "Finalizar compra no Google" no carrinho.
Solicitação:o Google envia os itens de linha e informações limitadas de endereço sobre o comprador, incluindo cidade, estado e CEP.
// Request Example: Create checkout with multiple items.
{
"line_items": [
{
"item": {
// Must match ID in product feed
"id": "product_12345"
},
"quantity": 1
},
{
"item": {
// Must match ID in product feed
"id": "product_67890"
},
"quantity": 1
}
],
"context": {
"language": "en"
},
"fulfillment": {
"methods": [
{
"type": "shipping",
"line_item_ids": [
"line_1",
"line_2"
],
"destinations": [
{
"id": "addr_1",
"address_locality": "Sunnyvale",
"address_region": "CA",
"postal_code": "94089",
"address_country": "US"
}
],
"selected_destination_id": "addr_1"
}
]
}
}
Resposta:você retorna a sessão inicializada com totais, tributos (inicialmente estimados) e recursos de pagamento.
Observação sobre o campo ucp.status:
Introduzido na versão 2026-04-08, o campo ucp.status indica o resultado da criação:
"success"(ou omitido): padrão. Sessão criada, mesmo commessagesrecuperável."error":a criação da sessão falhou devido a um erro irrecuperável (por exemplo, todos os itens estão esgotados). Nesse caso, o corpo da resposta precisa ser um objeto de resposta de erro, e não um objeto de finalização da compra. Consulte o exemplo de erro irrecuperável na seção "Tratamento de erros".
Observação sobre mudanças na matriz totals:
- O campo
typeem cada objeto da matriztotalsagora é uma string aberta. - O campo
amountagora pode ser negativo (por exemplo, para representar descontos). - Os objetos em
totals(comotype: "fee"etype: "tax") podem incluir opcionalmente uma matrizlinespara detalhar subcomponentes (por exemplo, taxas de serviço ou reciclagem ou detalhamentos de tributos provinciais e federais de vários níveis, como IBS, PST ou QST do Canadá). - Preços com tributos incluídos:para mercados com tributos incluídos, o
subtotalprecisa incluir tributos, o item de linhataxdeve ser omitido, edisplay_textprecisa ser fornecido explicitamente para entradassubtotalefulfillmentemtotals. Consulte Preços com tributos incluídos para mais detalhes.
// Response Example: Initialize Session with multiple items.
{
"ucp": {
"version": "2026-04-08",
"status": "success",
"capabilities": {
"dev.ucp.shopping.checkout": [ { "version": "2026-04-08" } ],
"dev.ucp.shopping.fulfillment": [ { "version": "2026-04-08", "extends": "dev.ucp.shopping.checkout" } ]
},
"payment_handlers": {
"com.google.pay": [
{
"id": "8c9202bd-63cc-4241-8d24-d57ce69ea31c",
"version": "2026-01-23",
"spec": "https://pay.google.com/gp/p/ucp/2026-01-23/",
"schema": "https://pay.google.com/gp/p/ucp/2026-01-23/schemas/config.json",
"config": {
"api_version": 2,
"api_version_minor": 0,
"environment": "TEST",
"merchant_info": {
"merchant_name": "Example Merchant",
"merchant_id": "KWMZPRLQFTYNXSDB",
"merchant_origin": "checkout.merchant.com"
},
"allowed_payment_methods": [
{
"type": "CARD",
"parameters": {
"allowed_auth_methods": [ "PAN_ONLY", "CRYPTOGRAM_3DS" ],
"allowed_card_networks": [ "AMEX", "DISCOVER", "JCB", "MASTERCARD", "VISA" ],
"billing_address_required": true,
"billing_address_parameters": {
"format": "FULL",
"phone_number_required": true
}
},
"tokenization_specification": {
"type": "PAYMENT_GATEWAY",
"parameters": {
"gateway": "example",
"gatewayMerchantId": "exampleGatewayMerchantId"
}
}
}
]
}
}
]
}
},
"id": "bf8c1b4b-6b1c-4c6a-8f2a-53c2a7c3b2e1",
"status": "incomplete",
"messages": [
{
"type": "error",
"code": "missing_buyer_info",
"path": "$.buyer",
"content_type": "plain",
"content": "Buyer information is required for checkout",
"severity": "recoverable"
},
{
"type": "error",
"code": "missing_fulfillment_info",
"path": "$.fulfillment.methods[0].destinations[0]",
"content_type": "plain",
"content": "Shipping address is incomplete",
"severity": "recoverable"
}
],
"currency": "USD",
"line_items": [
{
"id": "line_1",
"item": {
"id": "product_12345",
"title": "Running Shoes",
"price": 10000,
"image_url": "https://merchant.example.com/images/product_12345.png"
},
"quantity": 1,
"totals": [
{
"type": "subtotal",
"amount": 10000
},
{
"type": "total",
"amount": 10000
}
]
},
{
"id": "line_2",
"item": {
"id": "product_67890",
"title": "T-Shirt",
"price": 2500,
"image_url": "https://merchant.example.com/images/product_67890.png"
},
"quantity": 1,
"totals": [
{
"type": "subtotal",
"amount": 2500
},
{
"type": "total",
"amount": 2500
}
]
}
],
"totals": [
{
"type": "subtotal",
"display_text": "Subtotal", // Tax-inclusive markets: Set to "Subtotal (including taxes)".
"amount": 12500 // Tax-inclusive markets: Amount must include tax.
},
{
"type": "fee",
"display_text": "Fees",
"amount": 549,
"lines": [
{ "display_text": "Service Fee", "amount": 399 },
{ "display_text": "Recycling Fee", "amount": 150 }
]
},
{
"type": "fulfillment",
"display_text": "Ground Shipping", // Tax-inclusive markets: Provide display text for fulfillment totals.
"amount": 500
},
{
"type": "tax", // Tax-inclusive markets: Omit this entry.
"display_text": "Estimated Tax",
"amount": 1050
},
{
"type": "total",
"display_text": "Total",
"amount": 14599
}
],
"fulfillment": {
"methods": [
{
"id": "method_shipping",
"type": "shipping",
"line_item_ids": [
"line_1",
"line_2"
],
"destinations": [
{
"id": "addr_1",
"address_locality": "Sunnyvale",
"address_region": "CA",
"postal_code": "94089",
"address_country": "US"
}
],
"selected_destination_id": "addr_1",
"groups": [
{
"id": "group_1",
"line_item_ids": [
"line_1",
"line_2"
],
"options": [
{
"id": "ship_ground",
"title": "Ground (3-5 days)",
"description": "Estimated Delivery: Fri 5/8", // Maximum length: 200 characters.
"totals": [ {"type": "total", "amount": 500} ]
},
{
"id": "ship_express",
"title": "Express (1-2 days)",
"description": "Estimated Delivery: Wed 5/6", // Maximum length: 200 characters.
"totals": [ {"type": "total", "amount": 1500} ]
}
],
"selected_option_id": "ship_ground"
}
]
}
]
},
"links": [
{
"type": "terms_of_service",
"url": "https://m.com/terms",
"title": "Terms of Service"
},
{
"type": "privacy_policy",
"url": "https://m.com/privacy",
"title": "Privacy Policy"
}
]
}
Preços com tributos
Nos mercados em que o tributo é incluído no subtotal exibido em vez de ser detalhado separadamente, sua implementação precisa obedecer aos seguintes requisitos ao fornecer dados da sessão de finalização da compra:
- Incluir tributos no subtotal:o campo
amountda entradasubtotalprecisa incluir todos os tributos aplicáveis. - Omitir entradas de tributos separadas:não inclua um objeto dedicado com
type: "tax"na matriztotals. - Forneça um texto de exibição personalizado:inclua um atributo
display_textno objeto de subtotal que declare explicitamente que os tributos estão incluídos, como"Subtotal (including taxes)". Você também precisa incluir um atributodisplay_textpara entradas de atendimento (por exemplo,"Shipping").
Exemplo: matriz de totais com tributos
O exemplo a seguir demonstra uma matriz totals para um comerciante em um mercado com tributos incluídos:
"totals": [
{
"type": "subtotal",
"display_text": "Subtotal (including taxes)",
"amount": 12500
},
{
"type": "fulfillment",
"display_text": "Shipping",
"amount": 399
},
{
"type": "total",
"display_text": "Total",
"amount": 12899
}
]
Detalhamento de itens fiscais em vários níveis
Para mercados que exigem divulgações fiscais detalhadas de vários níveis ou jurisdições (como GST ou HST federal canadense e PST ou QST provincial), é possível fornecer um objeto type: "tax" de nível superior com uma matriz lines aninhada:
- Agregar tributos de nível superior:retorne um único objeto
taxagregado que contenha o tributo totalamounte umdisplay_textdescritivo (por exemplo,"Taxes"). - Detalhamento da sublinha:liste os componentes fiscais individuais na matriz
linescom os respectivosdisplay_text(por exemplo,"TPS / GST (5%)","TVQ / QST (9.975%)") eamount. - Invariante:a soma de todos os valores dos subitens de linha precisa ser igual ao
amountda entradataxprincipal.
Exemplo: detalhamento de tributos em vários níveis
{
"type": "tax",
"display_text": "Taxes",
"amount": 1498,
"lines": [
{ "display_text": "TPS / GST (5%)", "amount": 500 },
{ "display_text": "TVQ / QST (9.975%)", "amount": 998 }
]
}
Acessar sessão de finalização de compra
Esse endpoint permite a recuperação de uma sessão de finalização da compra.
- Endpoint:
GET /checkout-sessions/{id}
Solicitação:o Google envia o ID da sessão de finalização da compra. Se você usa IDs globais (por exemplo, gid://merchant.example.com/Checkout/session_abc123), o ID no caminho da solicitação será apenas o último componente desse ID (por exemplo, session_abc123).
Resposta:você retorna o objeto de finalização de compra completo. Para uma sessão com vários itens
criada na versão 2026-01-23 ou posterior, a matriz line_items
vai conter várias entradas de itens.
Atualizar sessão de finalização de compra
Esse endpoint permite atualizações em uma sessão de finalização de compra. Quando o endereço de entrega é atualizado, ele precisa recalcular e retornar os tributos e as opções de envio.
- Endpoint:
PUT /checkout-sessions/{id}
Atualizar endereço de entrega
- Gatilho:o usuário seleciona ou muda o endereço de entrega.
Solicitação:o Google atualiza o endereço de atendimento quando o usuário muda o endereço de entrega.
// Request Example: Update shipping address with multiple items.
{
"line_items": [
{
// line_items id from Create Checkout response
"id": "line_1",
"item": {
"id": "product_12345"
},
"quantity": 1
},
{
// line_items id from Create Checkout response
"id": "line_2",
"item": {
"id": "product_67890"
},
"quantity": 1
}
],
"context": {
"language": "en"
},
"fulfillment": {
"methods": [
{
"id": "method_shipping",
"type": "shipping",
"line_item_ids": [
"line_1",
"line_2"
],
"destinations": [
{
"id": "addr_1",
"address_locality": "Mountain View",
"address_region": "CA",
"postal_code": "94043",
"address_country": "US"
}
],
"selected_destination_id": "addr_1",
"groups": [
{
"id": "group_1",
"selected_option_id": "ship_ground"
}
]
}
]
}
}
Resposta:você recalcula os tributos e as opções de envio conforme necessário e retorna o objeto de finalização de compra completo.
// Response Example: Updated session with new address for multiple items.
{
"id": "bf8c1b4b-6b1c-4c6a-8f2a-53c2a7c3b2e1",
"currency": "USD",
"line_items": [
{
"id": "line_1",
"item": {
"id": "product_12345",
"title": "Running Shoes",
"price": 10000,
"image_url": "https://merchant.example.com/images/product_12345.png"
},
"quantity": 1,
"totals": [
{ "type": "subtotal", "amount": 10000 },
{ "type": "total", "amount": 10000 }
]
},
{
"id": "line_2",
"item": {
"id": "product_67890",
"title": "T-Shirt",
"price": 2500,
"image_url": "https://merchant.example.com/images/product_67890.png"
},
"quantity": 1,
"totals": [
{ "type": "subtotal", "amount": 2500 },
{ "type": "total", "amount": 2500 }
]
}
],
"totals": [
{ "type": "subtotal", "display_text": "Subtotal", "amount": 12500 },
// Shipping cost might change based on new address
{ "type": "fulfillment", "display_text": "Ground Shipping", "amount": 600 },
{
"type": "fee",
"display_text": "Fees",
"amount": 549,
"lines": [
{ "display_text": "Service Fee", "amount": 399 },
{ "display_text": "Recycling Fee", "amount": 150 }
]
},
// Tax will likely change based on new address
{ "type": "tax", "display_text": "Estimated Tax", "amount": 1120 },
{ "type": "total", "display_text": "Total", "amount": 14769 }
],
"fulfillment": {
"methods": [
{
"id": "method_shipping",
"type": "shipping",
"line_item_ids": ["line_1", "line_2"],
"selected_destination_id": "addr_1",
"destinations": [
{
"id": "addr_1",
"address_locality": "Mountain View",
"address_region": "CA",
"postal_code": "94043",
"address_country": "US"
}
],
"groups": [
{
"id": "group_1",
"line_item_ids": ["line_1", "line_2"],
"selected_option_id": "ship_ground",
"options": [
{
"id": "ship_ground",
"title": "Ground (3-5 days)",
"description": "Estimated Delivery: Fri 5/8", // Maximum length: 200 characters.
"totals": [ { "type": "total", "amount": 600 } ]
},
{
"id": "ship_express",
"title": "Express (1-2 days)",
"description": "Estimated Delivery: Wed 5/6", // Maximum length: 200 characters.
"totals": [ { "type": "total", "amount": 1600 } ]
}
]
}
]
}
]
}
// ... other fields like ucp, status, messages, links
}
Hidratação completa do objeto de finalização da compra
Solicitação:o Google envia o objeto de finalização de compra completo com as informações atualizadas (incluindo o endereço de entrega completo e o contato do comprador) quando o comprador clica em "Pagar com o GPay".
// Request Example: full checkout object hydration for multiple items.
{
"buyer": {
"first_name": "John",
"last_name": "Buyer",
"email": "johnbuyer@example.com",
"phone_number": "+18888888888"
},
"line_items": [
{
"id": "line_1",
"item": { "id": "product_12345" },
"quantity": 1
},
{
"id": "line_2",
"item": { "id": "product_67890" },
"quantity": 1
}
],
"fulfillment": {
"methods": [
{
"id": "method_shipping",
"type": "shipping",
"line_item_ids": ["line_1", "line_2"],
"selected_destination_id": "addr_1",
"destinations": [
{
"id": "addr_1",
"first_name": "Alice",
"last_name": "Receiver",
"street_address": "1600 Amphitheatre Pkwy",
"extended_address": "Suite #60",
"address_locality": "Mountain View",
"address_region": "CA",
"postal_code": "94043",
"address_country": "US",
"phone_number": "+18888888888"
}
],
"groups": [
{
"id": "group_1",
"selected_option_id": "ship_ground"
}
]
}
]
}
}
Resposta:você recalcula os tributos e as opções de envio conforme necessário e retorna o objeto de finalização de compra completo.
// Response Example: Session after full hydration with multiple items.
{
"ucp": {
"version": "2026-04-08",
"status": "success",
"capabilities": {
"dev.ucp.shopping.checkout": [ { "version": "2026-04-08" } ],
"dev.ucp.shopping.fulfillment": [ { "version": "2026-04-08", "extends": "dev.ucp.shopping.checkout" } ]
},
"payment_handlers": {
"com.google.pay": [
{
"id": "8c9202bd-63cc-4241-8d24-d57ce69ea31c",
"version": "2026-01-23",
"spec": "https://pay.google.com/gp/p/ucp/2026-01-23/",
"schema": "https://pay.google.com/gp/p/ucp/2026-01-23/schemas/config.json",
"config": {
"api_version": 2,
"api_version_minor": 0,
"environment": "TEST",
"merchant_info": {
"merchant_name": "Example Merchant",
"merchant_id": "KWMZPRLQFTYNXSDB",
"merchant_origin": "checkout.merchant.com"
},
"allowed_payment_methods": [
{
"type": "CARD",
"parameters": {
"allowed_auth_methods": [ "PAN_ONLY", "CRYPTOGRAM_3DS" ],
"allowed_card_networks": [ "AMEX", "DISCOVER", "JCB", "MASTERCARD", "VISA" ],
"billing_address_required": true,
"billing_address_parameters": {
"format": "FULL",
"phone_number_required": true
}
},
"tokenization_specification": {
"type": "PAYMENT_GATEWAY",
"parameters": {
"gateway": "example",
"gatewayMerchantId": "exampleGatewayMerchantId"
}
}
}
]
}
}
]
}
},
"id": "bf8c1b4b-6b1c-4c6a-8f2a-53c2a7c3b2e1",
"status": "ready_for_complete",
"currency": "USD",
"buyer": {
"first_name": "John",
"last_name": "Buyer",
"email": "johnbuyer@example.com",
"phone_number": "+18888888888"
},
"line_items": [
{
"id": "line_1",
"item": {
"id": "product_12345",
"title": "Running Shoes",
"price": 10000,
"image_url": "https://merchant.example.com/images/product_12345.png"
},
"quantity": 1,
"totals": [
{ "type": "subtotal", "amount": 10000 },
{ "type": "total", "amount": 10000 }
]
},
{
"id": "line_2",
"item": {
"id": "product_67890",
"title": "T-Shirt",
"price": 2500,
"image_url": "https://merchant.example.com/images/product_67890.png"
},
"quantity": 1,
"totals": [
{ "type": "subtotal", "amount": 2500 },
{ "type": "total", "amount": 2500 }
]
}
],
"totals": [
{ "type": "subtotal", "display_text": "Subtotal", "amount": 12500 },
{ "type": "fulfillment", "display_text": "Ground Shipping", "amount": 600 },
{
"type": "fee",
"display_text": "Fees",
"amount": 549,
"lines": [
{ "display_text": "Service Fee", "amount": 399 },
{ "display_text": "Recycling Fee", "amount": 150 }
]
},
{ "type": "tax", "display_text": "Estimated Tax", "amount": 1120 },
{ "type": "total", "display_text": "Total", "amount": 14769 }
],
"fulfillment": {
"methods": [
{
"id": "method_shipping",
"type": "shipping",
"line_item_ids": ["line_1", "line_2"],
"selected_destination_id": "addr_1",
"destinations": [
{
"id": "addr_1",
"first_name": "Alice",
"last_name": "Receiver",
"street_address": "1600 Amphitheatre Pkwy",
"extended_address": "Suite #60",
"address_locality": "Mountain View",
"address_region": "CA",
"postal_code": "94043",
"address_country": "US",
"phone_number": "+18888888888"
}
],
"groups": [
{
"id": "group_1",
"line_item_ids": ["line_1", "line_2"],
"selected_option_id": "ship_ground",
"options": [
{
"id": "ship_ground",
"title": "Ground (3-5 days)",
"description": "Estimated Delivery: Fri 5/8", // Maximum length: 200 characters.
"totals": [ { "type": "total", "amount": 600 } ]
},
{
"id": "ship_express",
"title": "Express (1-2 days)",
"description": "Estimated Delivery: Wed 5/6", // Maximum length: 200 characters.
"totals": [ { "type": "total", "amount": 1600 } ]
}
]
}
]
}
]
},
"links": [
{
"type": "terms_of_service",
"url": "https://m.com/terms",
"title": "Terms of Service"
},
{
"type": "privacy_policy",
"url": "https://m.com/privacy",
"title": "Privacy Policy"
}
]
}
Concluir a sessão de finalização de compra
Esse endpoint permite concluir uma sessão de finalização da compra e fazer um pedido. Ele precisa retornar a sessão de finalização de compra concluída e incluir as informações do pedido. O processamento do pagamento deve começar depois que essa chamada for recebida.
- Endpoint:
POST /checkout-sessions/{id}/complete - Acionador:o usuário clica em "Pagar com o GPay", e o Google recebe uma resposta bem-sucedida de uma atualização de finalização de compra totalmente hidratada.
Solicitação:o Google envia o instrumento de pagamento selecionado do manipulador de pagamentos, incluindo a credencial (por exemplo, dados de tokenização do Google Pay) e indicadores de risco sobre o comprador para que você realize sua própria detecção de fraude. O conteúdo do token depende do seu provedor de serviços de pagamento.
{
"payment": {
"instruments": [
{
"billing_address": {
"first_name": "John",
"last_name": "Buyer",
"street_address": "100 Main St",
"extended_address": "Apt 4B",
"address_locality": "San Francisco",
"address_region": "CA",
"postal_code": "94105",
"address_country": "US",
"phone_number": "+18888888888"
},
"credential": {
"token": "examplePaymentMethodToken",
"type": "PAYMENT_GATEWAY"
},
"display": {
"brand": "VISA",
"description": "Visa •••• 1234",
"last_digits": "1234"
},
"handler_id": "8c9202bd-63cc-4241-8d24-d57ce69ea31c",
"id": "94e7fee0-1a82-4c2a-9ef4-0861a3c829b2",
"selected": true,
"type": "card"
}
]
},
"signals": {
"com.google.authentication_triggered": "",
"com.google.authorization_processed_with_3ds": "",
"com.google.avs_full_result": "",
"com.google.cvv_result": "",
"com.google.ip_address": "203.0.113.1",
"dev.ucp.buyer_id": "ec46fedc6aad89d3660a50a61d00b4908fd160ecf5dda6d49ed41a605c5b180a",
"dev.ucp.buyer_ip": "203.0.113.1"
}
}
Se você precisar de informações obrigatórias para concluir a finalização da compra que não foram fornecidas na sessão, impeça a conclusão e solicite essas informações retornando um status incompleto na resposta.
Se o Google puder coletar as informações ausentes usando campos definidos pela UCP (por exemplo, o endereço de e-mail do comprador), defina status como incomplete e inclua uma ou mais mensagens na matriz messages com severity definido como recoverable, indicando quais informações estão faltando.
{
"ucp": {
"version": "2026-04-08",
"status": "success"
},
"id": "bf8c1b4b-6b1c-4c6a-8f2a-53c2a7c3b2e1",
"status": "incomplete",
"messages": [
{
"type": "error",
"code": "missing_buyer_info",
"severity": "recoverable",
"content": "Buyer email is required"
},
{
"type": "error",
"code": "missing_fulfillment_info",
"severity": "recoverable",
"content": "Select delivery window for your purchase"
}
]
}
Ao receber um instrumento de pagamento do Google Pay, você precisa:
- Validador de gerenciador:confirme se
handler_idcorresponde ao gerenciador de pagamentos do Google Pay definido na sua configuração. - Extrair token:recupere o token gerado da forma de pagamento de
payment.instruments[0].credential.token. - Processar pagamento:use o token e os detalhes da transação para concluir o pagamento. Consulte a documentação da API Google Pay para informações detalhadas sobre a especificação e o processamento da tokenização.
Resposta:se o processo de finalização de compra puder ser concluído e você tiver processado o pagamento, retorne o objeto de finalização de compra completo indicando que o pedido foi concluído, incluindo o instrumento de pagamento confirmado (repetindo os metadados do instrumento e o endereço de faturamento, sem o token sensível credential ou signals), o ID do pedido e um URL permanente para o pedido.
{
"ucp": {
"version": "2026-04-08",
"status": "success",
"capabilities": [...]
},
"id": "bf8c1b4b-6b1c-4c6a-8f2a-53c2a7c3b2e1",
"status": "completed",
// ... other fields (line_items, currency, etc.)
"payment": {
"instruments": [
{
"id": "94e7fee0-1a82-4c2a-9ef4-0861a3c829b2",
"handler_id": "8c9202bd-63cc-4241-8d24-d57ce69ea31c",
"type": "card",
"selected": true,
"display": {
"brand": "VISA",
"description": "Visa •••• 1234",
"last_digits": "1234"
},
"billing_address": {
"first_name": "John",
"last_name": "Buyer",
"street_address": "100 Main St",
"extended_address": "Apt 4B",
"address_locality": "San Francisco",
"address_region": "CA",
"postal_code": "94105",
"address_country": "US",
"phone_number": "+18888888888"
}
}
]
},
"order": {
"id": "ORD1773956535.2727807",
// Example customer-facing order number
"label": "#100",
"permalink_url": "https://merchant.example.com/orders/789"
}
}
Cancelar sessão de finalização da compra
Esse endpoint cancela uma sessão de finalização de compra.
- Endpoint:
POST /checkout-sessions/{id}/cancel
Solicitação:o Google envia o ID da sessão de finalização da compra.
Resposta:retorne o objeto de finalização de compra completo com o status atualizado para
canceled.
Tratamento de erros
Para conferir diretrizes completas sobre como formatar mensagens de erro e a distinção entre erros de protocolo e de lógica de negócios, consulte a Visão geral dos códigos de erro.
Erro irrecuperável
A partir da versão 2026-04-08, quando um erro irrecuperável impedir a criação da sessão de finalização da compra (por exemplo, todos os itens estão esgotados), retorne um HTTP 200 OK. No corpo da resposta, defina "status": "error" no objeto ucp.
Isso informa ao Google que a solicitação era válida, mas uma regra de negócios bloqueou a criação da sessão. Nenhum ID de sessão de finalização de compra é retornado nesse caso.
HTTP/1.1 200 OK
Content-Type: application/json
{
"ucp": {
"version": "2026-04-08",
"status": "error"
},
"messages": [
{
"type": "error",
"code": "out_of_stock",
"content": "All requested items are currently out of stock",
"severity": "unrecoverable"
}
],
"continue_url": "https://merchant.com/"
}