Cost+Docs

Autorizações, Capturas e Anulações

Gerir fluxos de autorização, captura e anulação de pagamentos

Alguns métodos de pagamento suportam um fluxo em dois passos: primeiro autorizar (reservar fundos), depois capturar (cobrar os fundos) ou anular (libertar a reserva).

Modos de Captura

Defina capture_mode na encomenda para controlar quando os fundos são capturados:

ModoComportamento
manualCaptura explicitamente quando estiver pronto (ex.: após a expedição). Se não capturar antes da encomenda expirar, a autorização é perdida e não pode ser capturada.
delayedOs fundos são automaticamente capturados no momento em que o expiration_period decorre.
POST /v1/orders/ (manual capture)
{
  "currency": "EUR",
  "amount": 5000,
  "capture_mode": "manual",
  "return_url": "https://www.example.com",
  "webhook_url": "https://www.example.com/webhook",
  "transactions": [
    {
      "payment_method": "credit-card"
    }
  ]
}

Com captura manual, deve capturar antes do período de expiração da encomenda terminar. Depois de expirada, a autorização é libertada e os fundos não podem ser capturados. Defina um expiration_period apropriado para o seu cronograma de processamento.

Pode definir capture_mode ao nível da encomenda sem especificar transactions. A página de pagamento alojada mostrará então apenas os métodos de pagamento que suportam o modo de captura especificado.

Verificar Montantes Capturáveis

Antes de capturar, pode verificar quanto está disponível para captura solicitando amount_details:

curl -u YOUR_API_KEY: \
  "https://api.costplus.online/v1/orders/{order_id}/?fields[]=amount_details"

A resposta inclui um objeto amount_details:

{
  "amount": 5000,
  "amount_details": {
    "capturable": 5000,
    "captured": 0,
    "refundable": 0,
    "refunded": 0,
    "voidable": 5000,
    "voided": 0
  }
}

Linhas da Encomenda

Ao utilizar capturas e anulações por linha de encomenda, utilize estes tipos:

TipoDescrição
physicalProduto físico
discountMontante de desconto
shipping_feeCusto de envio
sales_taxImposto sobre vendas
digitalProduto digital
gift_cardCartão presente
store_creditCrédito de loja
surchargeSobretaxa

Capturar Pagamentos

Captura por Linha de Encomenda

POST /v1/orders/{id}/transactions/{transaction_id}/captures/orderlines
Request body
{
  "description": "Shipping item #1",
  "order_line": {
    "merchant_order_line_id": "item-001",
    "quantity": 1
  }
}

Captura por Montante

POST /v1/orders/{id}/transactions/{transaction_id}/captures/amount
Request body
{
  "description": "Partial capture",
  "amount": 2500
}

Anular Pagamentos

A anulação liberta os fundos autorizados de volta ao cliente.

Anulação por Linha de Encomenda

POST /v1/orders/{id}/transactions/{transaction_id}/voids/orderlines
Request body
{
  "description": "Voiding item #2",
  "order_line": {
    "merchant_order_line_id": "item-002",
    "quantity": 1
  }
}

Anulação por Montante

POST /v1/orders/{id}/transactions/{transaction_id}/voids/amount
Request body
{
  "description": "Partial void",
  "amount": 1500
}

Parâmetros de Consulta

Adicione parâmetros de consulta para incluir detalhes adicionais na resposta:

ParâmetroDescrição
?fields[]=order_line_detailsIncluir detalhes das linhas de encomenda
?fields[]=amount_detailsIncluir detalhes dos montantes

Bloqueio Otimista

Os endpoints de captura e anulação suportam bloqueio otimista baseado em ETag através do cabeçalho if-match. Isto previne condições de corrida quando múltiplos sistemas tentam capturar a mesma transação.

Capture with optimistic locking
curl -X POST https://api.costplus.online/v1/orders/{id}/transactions/{tid}/captures/amount \
  -u {api_key}: \
  -H "Content-Type: application/json" \
  -H "if-match: \"etag-value\"" \
  -d '{"description": "Capture", "amount": 2500}'

Se o ETag não corresponder (a encomenda foi modificada desde a sua última consulta), receberá uma resposta 412 Precondition Failed.

A Cost+ suporta uma captura por autorização, e as anulações só podem ser processadas antes de qualquer captura. Planeie a sua estratégia de captura em conformidade.

Endpoints Relacionados

On this page