Venda pela loja SoftPay em qualquer site
O site pode ter o visual que você quiser. Produtos, preços, pedido e Pix vêm da loja no SoftPay, e cada pedido cai no painel do lojista, como numa compra pela vitrine.
Prompt mestre
Cole na IA que vai montar o site, como Lovable, v0, Bolt, Cursor, ChatGPT ou Claude. Ele explica a API, o fluxo de compra e as regras da loja. Depois é só descrever o visual.
É o que vem depois de /loja/ no link da loja. O lojista pode mandar o link já preenchido, assim: sdk.softpaybr.com/?loja=nome-da-loja
Carregando o prompt…
Do zero ao primeiro pedido
- O lojista liga a APINo SoftPay, em Catálogo → API: liga "Aceitar pedidos do meu site" e autoriza o endereço do site.
- A IA monta o siteCole o prompt mestre com o endereço da loja preenchido e descreva o visual que você quer.
- Teste e publiqueRode em http://localhost, faça um pedido com o nome TESTE e publique no endereço autorizado.
Rotas
Todas respondem JSON. Nos POST, envie Content-Type: application/json. Não há chave secreta nem login.
| Método e caminho | O que faz |
|---|---|
GET /lojas/{loja} | Nome, cores, contato, entrega, formas de pagamento, promoção e pixels. |
GET /lojas/{loja}/filtros | Categorias, tamanhos, cores e total de produtos. |
GET /lojas/{loja}/produtos | Lista paginada. Filtros: busca, categoria, secao, tamanho, cor, sem_tamanho=true, limite (até 48) e pagina. |
GET /lojas/{loja}/produtos/{id} | Um produto, com a galeria de fotos. |
GET /lojas/{loja}/sabores | Sabores que combinam no meio a meio. |
POST /lojas/{loja}/cupons/validar | Confere um cupom para um subtotal. |
POST /lojas/{loja}/pedidos | Cria o pedido e devolve o total calculado pela loja. |
POST /lojas/{loja}/pedidos/{id}/pix | Gera o Pix copia e cola do pedido. |
POST /lojas/{loja}/pedidos/{id}/pagamento | Corpo { "chave" }. Status: pendente, pago ou cancelado. |
POST /lojas/{loja}/visitas | Conta visitas do site para o lojista. |
Pelo navegador, só sites autorizados pelo lojista usam a API daquela loja. Chamadas de servidor (PHP, Node, app) não passam por essa checagem, mas seguem todas as outras regras. Sem plano ativo, a API da loja para em todo lugar.
Mostrar os produtos
curl "https://sdk.softpaybr.com/v1/lojas/nero-forno/produtos?categoria=Pizzas&limite=24"
{
"produtos": [
{
"id": "3f1c…",
"nome": "Calabresa",
"preco": 45,
"imagem": "https://…",
"variacoes": [{ "id": "g", "nome": "G", "tamanho": "G", "preco": 59, "estoque": null }],
"adicionais": [{ "id": "borda", "nome": "Borda de catupiry", "preco": 9 }],
"aceitaMeioAMeio": true
}
],
"pagina": 1,
"limite": 24
}
Variação sem preco usa o preço do produto. estoque vem null quando a loja não mostra estoque.
Criar o pedido
POST https://sdk.softpaybr.com/v1/lojas/nero-forno/pedidos
Content-Type: application/json
{
"chave": "2b0f1d9e-6c1a-4f7e-9b1e-5d7a8c3e4f21",
"cliente": { "nome": "Ana", "telefone": "11988887777", "cpf": "12345678909" },
"entrega": {
"tipo": "entrega",
"bairro": "Centro",
"endereco": { "rua": "Rua A", "numero": "10", "complemento": "ap 2" }
},
"pagamento": "pix",
"cupom": "PROMO10",
"observacao": "Sem cebola",
"itens": [
{ "produtoId": "3f1c…", "variacaoId": "g", "quantidade": 1, "adicionais": ["borda"], "sabores": ["8a2d…"] }
]
}
201 Created
{ "id": "c0de…", "chave": "2b0f1d9e-…", "total": 64, "subtotal": 59, "taxaDeEntrega": 5, "duplicado": false, "itensPulados": [] }
pagamento:pix,dinheiro,cartao(maquininha na entrega ou retirada) ououtro, só entre as formas que a loja aceita.- Gere uma
chave(UUID) por pedido e guarde. Se a conexão cair, envie de novo com a mesma chave: a loja devolve o pedido já criado, sem duplicar. A chave também autoriza o Pix e a consulta de pagamento. - O servidor recalcula preço, adicionais, meio a meio, promoção, frete e cupom. O
totalda resposta é o que o cliente paga. - O site segue a configuração do catálogo da loja: formas de pagamento, entrega ou retirada, pedido mínimo, bairros atendidos, horário e tamanhos pausados.
Cobrar no Pix
Quando pagamento.pixAutomatico vem true nos dados da loja, o Pix é confirmado sozinho:
POST /lojas/nero-forno/pedidos/{id}/pix { "chave": "2b0f1d9e-…" }
→ { "jaPago": false, "copiaECola": "000201…", "segundosRestantes": 598, "valor": 64 }
POST /lojas/nero-forno/pedidos/{id}/pagamento { "chave": "2b0f1d9e-…" }
→ { "status": "pendente" } … { "status": "pago" }
Desenhe o QR Code no navegador a partir do copiaECola e consulte o status a cada 3 segundos. Sem Pix automático, mostre pagamento.chavePix ou combine com a loja.
Atalho em JavaScript
<script src="https://sdk.softpaybr.com/v1.js"></script>
<script type="module">
const loja = SoftPayLoja.conectar('nero-forno');
const produtos = await loja.produtos({ categoria: 'Pizzas' });
const pedido = await loja.criarPedido({ cliente, entrega, pagamento: 'pix', itens });
const pix = await loja.gerarPix(pedido);
await SoftPayLoja.desenharQrCode('#qr', pix.copiaECola);
loja.acompanharPagamento(pedido, { aoPagar: () => mostrarConfirmacao() });
</script>
O SDK gera a chave, reenvia com segurança e acompanha o Pix. SoftPayLoja.precoDoItem(produto, escolha, info) mostra o preço antes do pedido, pela mesma regra da loja.
Erros
Todo erro vem como { "erro": { "codigo": "…", "mensagem": "…" } }. A mensagem já está em português, pronta para o cliente.
| HTTP | Código | Quando |
|---|---|---|
| 403 | site_nao_autorizado | O navegador está num site que o lojista não autorizou. |
| 403 | api_indisponivel | A loja não está vendendo pelo site agora. O lojista confere em Catálogo → API. |
| 403 | exige_conta | A loja exige conta também no site, e a API não tem login. Confira exigeConta antes do checkout. |
| 404 | loja_nao_encontrada | Endereço errado ou loja fora do ar. |
| 409 | sem_pix_automatico, pedido_nao_pendente | Pix automático indisponível ou pedido já resolvido. |
| 422 | forma_indisponivel, endereco_obrigatorio, telefone_invalido, item_invalido… | O pedido não segue a configuração da loja. |
| 422 | pedido_recusado | A loja recusou (bairro fora da área, pedido mínimo, cupom…). Mostre a mensagem. |
| 429 | muitos_pedidos, loja_ocupada_ou_fechada | Muitos pedidos seguidos ou loja fechada agora. |
| 503 | indisponivel, api_em_manutencao | Tente de novo em instantes. |
A lista completa de códigos, com o que o site deve fazer em cada um, está no prompt mestre.
Limites
- Até 48 produtos por página.
- 8 pedidos e 10 cobranças Pix a cada 2 minutos por conexão, por loja.
- 3 pedidos a cada 2 minutos por navegador e 120 pedidos por hora por loja.
- Cartão é na maquininha, na entrega ou na retirada. Não há cobrança de cartão online.