De-para de status
Define para qual status de pedido cada status de pagamento do Pagar.me leva, com sugestão automática.
Quando o gateway avisa que uma cobrança mudou ("paga", "recusada", "estornada"), a plataforma precisa decidir qual status o pedido deve assumir. O de-para é essa tabela: de um lado o status do Pagar.me (pagarme_key), do outro o código de status do pedido na sua loja (order_status_code). Cada loja tem os seus status de pedido, então o mapa é por loja.
Exigem o módulo pagarme e o privilégio manage_payments ou view_payments.
As chaves do lado do Pagar.me são fixas:
pagarme_key | Quando acontece | Padrão da plataforma |
|---|---|---|
pending | Cobrança criada, aguardando pagamento (PIX, boleto). | processing |
authorized | Cartão autorizado, ainda não capturado. | processing_payment |
processing | Pagamento em processamento no adquirente. | processing_payment |
paid | Cobrança paga ou capturada. | payment_approved |
failed | Cobrança recusada ou com erro. | payment_refused |
refused | Recusa síncrona do cartão. | payment_refused |
canceled | Cobrança cancelada. | cancelled |
cancelled | Mesma coisa que canceled, outra grafia. | cancelled |
refunded | Estorno total ou parcial confirmado. | refunded |
chargeback | Contestação do portador do cartão. | chargeback |
Ler o de-para
Devolve uma linha por chave, já combinando o que você gravou com os padrões, e as tabelas de referência.
/api/v1/admin/pagarme/status-mapAdminLê o de-para de status do Pagar.me
Exemplo de requisição
curl "$BASE_URL/api/v1/admin/pagarme/status-map" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"entries": [
{
"pagarme_key": "pending",
"order_status_code": "processing",
"order_status_letter": "P",
"order_status_name": "Processando",
"is_default": true,
"exists_in_registry": true
},
{
"pagarme_key": "paid",
"order_status_code": "payment_approved",
"is_default": true,
"exists_in_registry": false
}
],
"keys": [
{ "key": "pending", "label": "Pendente", "description": "Cobrança criada, aguardando pagamento (PIX/boleto ou pré-autorização)." },
{ "key": "paid", "label": "Pago", "description": "Cobrança paga/capturada (charge.paid)." }
],
"defaults": { "pending": "processing", "paid": "payment_approved" },
"legacy": { "pending": "pending", "paid": "processing" }
}Campos da resposta
entriesarrayentries[].pagarme_keystringentries[].order_status_codestringentries[].order_status_letterstringentries[].order_status_namestringentries[].is_defaultbooleantrue quando o código ainda é o padrão da plataforma para essa chave.entries[].exists_in_registrybooleanfalse quando o código mapeado não existe entre os status de pedido da loja.keysarraykey, label e description, para montar a tela.defaultsobjectlegacyobjectErros
| Status | Quando | Corpo |
|---|---|---|
| 500 | Falha ao ler | {"error":"failed to load pagarme status map","detail":"..."} |
Gravar o de-para
Grava as linhas enviadas. As chaves ausentes ficam como estão. A resposta traz o mapa completo já atualizado.
/api/v1/admin/pagarme/status-mapAdminGrava o de-para de status do Pagar.me
Corpo da requisição
entriesarrayobrigatórioLinhas a gravar. Pelo menos uma.
pagarme_keystringobrigatóriopendingauthorizedprocessingpaidfailedrefusedcanceledcancelledrefundedchargebackcharge.paid são aceitos e normalizados. Uma chave desconhecida é ignorada sem erro.order_status_codestringB) é aceita se existir na loja.Exemplo de requisição
curl -X PUT "$BASE_URL/api/v1/admin/pagarme/status-map" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"entries": [
{ "pagarme_key": "paid", "order_status_code": "processing" },
{ "pagarme_key": "refunded", "order_status_code": "refunded" }
]
}'Resposta
{
"entries": [
{
"pagarme_key": "paid",
"order_status_code": "processing",
"order_status_letter": "P",
"order_status_name": "Processando",
"is_default": false,
"exists_in_registry": true
}
]
}A resposta traz as 10 linhas; o exemplo mostra uma. Ao contrário do GET, não inclui keys, defaults e legacy.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | JSON inválido | {"error":"invalid request body","detail":"..."} |
| 400 | entries vazio ou ausente | {"error":"entries required","detail":"provide at least one mapping entry"} |
| 500 | Falha ao gravar | {"error":"failed to save pagarme status map","detail":"..."} |
Sugerir um de-para
Pede ao assistente de IA da plataforma uma proposta de mapa, comparando os nomes e letras dos status de pedido da sua loja com o significado de cada status do Pagar.me. Nada é gravado: você revisa e, se concordar, envia o resultado em PUT /status-map.
/api/v1/admin/pagarme/status-map/ai-suggestAdminSugere um de-para de status com IA
Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/pagarme/status-map/ai-suggest" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"summary_pt": "Mapeei pagamento aprovado para Processando e recusas para Falhou.",
"entries": [
{
"pagarme_key": "paid",
"order_status_code": "processing",
"order_status_letter": "P",
"order_status_name": "Processando",
"is_default": false,
"exists_in_registry": true
}
],
"reasons": { "paid": "Pagamento confirmado leva o pedido para a fila de preparo." }
}Campos da resposta
summary_ptstringentriesarrayGET. Só entram códigos que existem na loja; onde a sugestão não valeu, vem o padrão.reasonsobjectSe a resposta da IA não puder ser interpretada, a rota ainda devolve 200, com entries vazio, um summary_pt pedindo para tentar de novo e o texto bruto em raw.
Erros
| Status | Quando | Corpo |
|---|---|---|
| 422 | A loja não tem nenhum status de pedido | {"error":"no_order_statuses","detail":"nenhum status de pedido cadastrado no tenant"} |
| 502 | Falha ao consultar a IA | {"error":"completion_failed","detail":"..."} |
| 503 | IA não disponível neste ambiente | {"error":"intelligence_unavailable","detail":"..."} |
As mensagens no_order_statuses e intelligence_unavailable vêm do servidor em português.