Divisão do pagamento
Como o valor de um pedido de vários sellers é dividido entre cada seller e a loja, e o acompanhamento de cada fatia.
Em um marketplace, um único pagamento do cliente cobre itens de sellers diferentes. A divisão (split) registra quanto de cada pagamento pertence a cada seller e quanto fica com a loja de comissão. As rotas abaixo servem para o financeiro conferir e dar baixa nas fatias.
Listar divisões
Quando um pedido tem itens de sellers diferentes, o pagamento é dividido: uma fatia por seller e uma para a loja. Esta rota lista essas fatias, uma linha por destinatário.
/api/v1/admin/payment-splitsAdminLista as divisões do pagamento entre seller e loja
Autenticação: Authorization: Bearer <token> de um administrador com view_vendors ou manage_vendors (a escrita exige manage_vendors). Requer o módulo direct-payments ativo.
Parâmetros de consulta
statusstringpendingprocessingcompletedfailedrefundedpending, processing, completed, failed ou refunded. processing e pending retornam as mesmas linhas.vendor_iduuidorder_iduuidsearchstringpageintegerpadrão: 1per_pageintegerpadrão: 20Exemplo de requisição
Resposta
Campos da resposta
splitsarraysplits[].iduuidsplits[].order_iduuidsplits[].vendor_iduuidsplits[].vendor_namestringsplits[].order_numberstringsplits[].recipient_typestringvendormarketplacevendor (fatia de um seller) ou marketplace (fatia da loja).splits[].amountintegersplits[].commission_amountintegersplits[].statusstringpendingcompletedfailedrefundedpending, completed, failed ou refunded. Na leitura nunca aparece processing: ele é gravado junto com pending.splits[].payment_methodstringsplits[].payment_refstringsplits[].error_messagestringsplits[].processed_atstringsplits[].created_atstringsplits[].updated_atstringtotalintegerpageintegerper_pageintegertotal_pagesintegerErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido | {"error":"missing authorization header"} |
| 403 | Sem o privilégio exigido, ou módulo desligado | {"error":"module_disabled","module":"direct-payments"} / {"error":"insufficient privileges","required":"manage_vendors"} |
| 500 | vendor_id/order_id que não é UUID, ou falha na consulta | {"error":"failed to list payment splits","detail":"..."} |
Estatísticas das divisões
Totais agregados das fatias, da loja inteira ou de um seller.
/api/v1/admin/payment-splits/statsAdminTotais das divisões de pagamento
Autenticação: Authorization: Bearer <token> de um administrador com view_vendors ou manage_vendors (a escrita exige manage_vendors). Requer o módulo direct-payments ativo.
Parâmetros de consulta
vendor_iduuidExemplo de requisição
Resposta
Campos da resposta
total_splitsintegerpending_splitsinteger0 (veja o aviso).completed_splitsinteger0.failed_splitsinteger0.total_amountintegertotal_commissionintegerErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido | {"error":"missing authorization header"} |
| 403 | Sem o privilégio exigido, ou módulo desligado | {"error":"module_disabled","module":"direct-payments"} / {"error":"insufficient privileges","required":"manage_vendors"} |
| 500 | vendor_id que não é UUID ou falha na consulta | {"error":"failed to get split stats","detail":"..."} |
Alterar o estado de uma divisão
Registra o andamento do repasse de uma fatia: concluída (com o comprovante) ou falha (com o motivo). Só atualiza o registro; não movimenta dinheiro. Não há validação de transição: qualquer estado válido pode ir para qualquer outro.
/api/v1/admin/payment-splits/{id}/statusAdminAltera o estado de uma divisão de pagamento
Autenticação: Authorization: Bearer <token> de um administrador com view_vendors ou manage_vendors (a escrita exige manage_vendors). Requer o módulo direct-payments ativo.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
statusstringobrigatóriopendingprocessingcompletedfailedrefundedpayment_refstringerror_messagestringExemplo de requisição
Resposta
Campos da resposta
messagestringsplit_iduuidstatusstringErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token ou token inválido | {"error":"missing authorization header"} |
| 403 | Sem o privilégio exigido, ou módulo desligado | {"error":"module_disabled","module":"direct-payments"} / {"error":"insufficient privileges","required":"manage_vendors"} |
| 400 | Corpo inválido ou status ausente | {"error":"status is required"} |
| 500 | status fora da lista, divisão inexistente ou id que não é UUID | {"error":"failed to update split status","detail":"invalid split status: \"done\""} |