Capacidade de checkout - ligação A2A¶
Este documento especifica a ligação do protocolo Agent2Agent (A2A) para Capacidade de checkout.
Descoberta de transporte¶
As empresas que suportam transporte A2A devem especificar o terminal do cartão do agente como
parte de services no Perfil BCP em /.well-known/ucp. Isto permite capaz
plataformas para interagir com os serviços de negócios através do protocolo A2A.json
{
"ucp": {
"version": "2026-07-14",
"services": {
"br.dev.bcp.shopping": [
{
"version": "2026-07-14",
"spec": "https://bcp.dev.br/2026-07-14/specification/overview",
"transport": "a2a",
"endpoint": "https://example-business.com/.well-known/agent-card.json"
}
]
}
}
}## Anúncio do perfil do agente de compras
As plataformas de compras que interagem com o agente de negócios devem enviar o seu perfil
URI como cabeçalhos de solicitação BCP-Agent com cada solicitação.http
BCP-Agent: profile="https://agent.example/profiles/v2025-11/shopping-agent.json"
Content-Type: application/json### Referência de mapeamento de cabeçalho
A tabela a seguir define os cabeçalhos necessários para permitir que um Agente A2A comunicar tipos de dados BCP com plataformas.
| Nome do cabeçalho | Descrição |
|---|---|
BCP-Agent |
URI do perfil do aplicativo da plataforma de compras. |
X-A2A-Extensions |
URI de extensão BCP (especificado abaixo). |
Interações A2A¶
O Protocolo A2A fornece uma base sólida para a comunicação entre agentes. Extensões A2A habilitam comunicação entre agentes com tipos de dados estruturados. Isso permite que as empresas para construir aplicativos de IA para aproveitar os tipos de dados BCP para comunicação com plataformas.
O URI para extensão BCP A2A:
https://bcp.dev.br/2026-07-14/specification/reference
As empresas que apoiam o BCP devem anunciar a extensão e qualquer opcional recursos em seu cartão de agente A2A para permitir que as plataformas ativem o extensão.
Um exemplo:json
{
"extensions": [
{
"uri": "https://bcp.dev.br/2026-07-14/specification/reference",
"description": "Business agent supporting BCP",
"params": {
"capabilities": {
"br.dev.bcp.shopping.checkout": [
{"version": "2026-07-14"}
],
"br.dev.bcp.shopping.fulfillment": [
{
"version": "2026-07-14",
"extends": "br.dev.bcp.shopping.checkout"
}
]
}
}
}
]
}### Negociação Agente2Agente
Os agentes de negócios podem aproveitar objetos A2A Message para permitir a interação
com agentes/plataformas de compras. O objeto A2A Message retornado pelo agente
retornará dados estruturados em objetos DataPart dentro da mensagem. Plataformas
deve passar o agente de negócios gerado contextId para turnos subseqüentes em um
sessão para preservar o contexto atual.
Os agentes de negócios também podem aproveitar objetos A2A Task para cenários onde
aplicável. Nesses cenários, o agente de negócios retornará objetos Task
com carga útil adequada para interação com as plataformas. As plataformas devem passar
o servidor gerou taskId junto com contextId para turnos subsequentes
até que a tarefa seja concluída.
As plataformas devem ser capazes de lidar com negociações adicionais na mesma sessão
mesmo depois que uma tarefa atinge um estado terminal (por exemplo, o usuário faz um pedido e deseja
para fazer outro pedido no mesmo contexto ou se a tarefa atingir um estado de falha
devido a uma exceção). As plataformas devem redefinir o taskId assim que uma tarefa atingir
estado terminal para permitir futuras interações com o agente, embora o
o contextId atual pode ser reutilizado para interações subsequentes.
Solicitar Idempotência¶
Os agentes comerciais devem aproveitar o messageId enviado como parte do A2A Message
para detectar mensagens duplicadas de novas tentativas da plataforma.
Funcionalidade de check-out¶
O recurso Checkout permite que os consumidores gerenciem itens em uma sessão de checkout e conclua o processo de compra. O agente de negócios normalmente se integra com APIs de checkout da empresa para oferecer essa funcionalidade.
A extensão define o esquema de dados para representar o Checkout
funcionalidade por agente de negócios para quaisquer ações relacionadas ao checkout, conclusão ou
cancelando a finalização da compra. A entidade Checkout é um perfil de um A2A Message. O
A entidade de checkout deverá ser devolvida pelo agente comercial à plataforma que
Extensão BCP-A2A ativada em um DataPart A2A Message. A finalização da compra
objeto DEVE ser retornado como parte de um objeto DataPart com chave
a2a.ucp.checkout.
Formato de solicitação: aplicativos Agentic podem aceitar entrada de linguagem natural de
usuários interagindo com o agente para identificar a intenção do usuário, negociar com
o usuário capture qualquer informação necessária e, em seguida, invoque o apropriado
ferramentas para realizar a operação. As entradas das plataformas podem ser enviadas para o controle remoto
agente de negócios como A2A Message.
Exemplos:
- Entrada de linguagem natural
json { "jsonrpc": "2.0", "id": 1, "method": "message/send", "params": { "message": { "role": "user", "parts": [ { "type": "text", "text": "add Pixel 10 Pro to my checkout" } ], "messageId": "69da8f87-991b-479e-80dc-ed92fcb57cbe", "kind": "message", "contextId": "aad14abc-4082-4748-84ca-4afff85aedfa" } } }- Entradas estruturadas sobre ações do usuáriojson { "jsonrpc": "2.0", "id": 2, "method": "message/send", "params": { "message": { "role": "user", "parts": [ { "type": "data", "data": { "action": "add_to_checkout", "product_id": "PIXEL-10-PRO", "quantity": 1 } } ], "messageId": "e94a8c10-69f4-4c4c-b988-21a298302da6", "kind": "message", "contextId": "aad14abc-4082-4748-84ca-4afff85aedfa" } } }Formato de resposta: Veja a seguir um exemplo de resposta de um agente de negócios implementando a funcionalidade Checkout:json { "id": 33, "jsonrpc": "2.0", "result": { "contextId": "4629ea79-7201-4ece-bc7a-ce19fff76e61", "kind": "message", "messageId": "8e8566e0-6d7c-4f29-bd90-26a132385baa", "parts": [ { "data": { "a2a.ucp.checkout": { ... } }, "kind": "data" } ], "role": "agent" } }### Conclusão da finalização da compra
Quando um usuário estiver pronto para efetuar um pagamento, payment deverá ser enviado ao
agente de negócios para concluir o processo de checkout. payment é um conjunto de dados estruturados
tipo especificado como parte do BCP. Ao processar um pagamento para concluir o
checkout, payment deverá ser enviado ao agente comercial como DataPart com
nome do atributo a2a.ucp.checkout.payment. Quaisquer sinais associados devem ser enviados
com nome de atributo a2a.ucp.checkout.signals.
Após a conclusão do processo de checkout, o agente comercial deverá devolver o
objeto checkout contendo um atributo order com id e permalink_url.
Formato da solicitação```json¶
{ "jsonrpc": "2.0", "id": 3, "method": "message/send", "params": { "message": { "role": "user", "parts": [ { "type": "data", "data": {"action":"complete_checkout"} }, { "kind": "data", "data": { "a2a.ucp.checkout.payment": { ... }, "a2a.ucp.checkout.signals": { "br.dev.bcp.buyer_ip": "203.0.113.42", "br.dev.bcp.user_agent": "Mozilla/5.0 ..." } } } ], "messageId": "e94a8c10-69f4-4c4c-b988-21a298302da6", "kind": "message", "contextId": "aad14abc-4082-4748-84ca-4afff85aedfa" } } }
**Formato de resposta:** Veja a seguir um exemplo de resposta de um agente de negócios
implementando a funcionalidade Checkout:<!-- ucp:example schema=transports/a2a_message def=message_response -->json
{
"id": 33,
"jsonrpc": "2.0",
"result": {
"contextId": "4629ea79-7201-4ece-bc7a-ce19fff76e61",
"kind": "message",
"messageId": "8e8566e0-6d7c-4f29-bd90-26a132385baa",
"parts": [
{
"data": {
"a2a.ucp.checkout": { ... }
},
"kind": "data"
}
],
"role": "agent"
}
}
```#### Conclusão de checkout baseada em AP2
Os agentes de negócios podem implementar extensões de mandatos AP2 que permitem segurança troca de intenções de usuário e autorizações para pagamento de agente para agente interações. As empresas que apoiam a extensão dos mandatos AP2 para BCP devem especifique isso no documento de descoberta do BCP e no cartão do agente A2A. O AP2 a extensão de mandatos é considerada implicitamente ativa quando uma plataforma e um negócio agente anuncia extensão de mandatos AP2 em seus respectivos perfis.
Quando a extensão de mandatos AP2 está habilitada, o agente de negócios deve criar um
JWS desanexado para o objeto checkout e deve retornar a assinatura gerada como
parte de DataPart como ap2.merchant_authorization. Isso permitirá que
plataforma para verificar criptograficamente a carga útil do checkout em relação ao negócio
chaves públicas.json
{
"id": 33,
"jsonrpc": "2.0",
"result": {
"contextId": "4629ea79-7201-4ece-bc7a-ce19fff76e61",
"kind": "message",
"messageId": "8e8566e0-6d7c-4f29-bd90-26a132385baa",
"parts": [
{
"data": {
"a2a.ucp.checkout": {
"ap2": {
"merchant_authorization": "<detached jws signature>"
}
}
},
"kind": "data"
}
],
"role": "agent"
}
}Quando o usuário confirma o pagamento em uma plataforma, o usuário assina o checkout e
objetos de mandato de pagamento devem ser enviados como DataParts ao agente comercial para
concluindo a finalização da compra. O payment que inclui a ordem de pagamento deverá
ser enviado como parte de um DataPart com nome de atributo
a2a.ucp.checkout.payment. O mandato de checkout assinado deve ser especificado em
o DataPart como ap2.checkout_mandate. O atributo token de
payment contém a ordem de pagamento. Consulte
Documentação AP2 Mandates Extension para obter mais detalhes sobre
verificação e processamento dos mandatos para concluir o checkout.
Formato da solicitação```json¶
{ "jsonrpc": "2.0", "id": 4, "method": "message/send", "params": { "message": { "role": "user", "parts": [ { "type": "data", "data": { "action": "complete_checkout" } }, { "kind": "data", "data": { "a2a.ucp.checkout.payment": { "id": "instr_1", "handler_id": "gpay", "type": "card", "description": "Visa •••• 1234", "billing_address": { "street_address": "123 Main St", "address_locality": "Anytown", "address_region": "CA", "address_country": "US", "postal_code": "12345" }, "credential": { "type": "PAYMENT_GATEWAY", "token": "examplePaymentMethodToken" } }, "ap2": { "checkout_mandate": "eyJhbGciOiJFUz..." } } } ], "messageId": "e94a8c10-69f4-4c4c-b988-21a298302da6", "kind": "message", "contextId": "aad14abc-4082-4748-84ca-4afff85aedfa" } } } ```