Checkouts customizados
Estes endpoints não exigem autenticação (@Public()) e são usados por páginas de checkout consumidas pelo pagador final. A criação/edição de payment links e checkouts é feita no painel; aqui documentamos apenas o consumo público.
Os endpoints são chaveados por slug.
GET /public/checkouts/:slug → 200
Seção intitulada “GET /public/checkouts/:slug → 200”Só checkouts de empresas ACTIVE com todos os produtos ativos (senão 404).
Resposta: id, slug, name, companyName, status: "ACTIVE", layout (ver abaixo), products[]: { id, name, description|null, priceCents, currency }.
POST /public/checkouts/:slug/orders → 201
Seção intitulada “POST /public/checkouts/:slug/orders → 201”Body (PublicCheckoutOrderDto):
customer(obrigatório):name(1–255),email,phone(8–20),documentNumber(11–18),documentType(CPF|CNPJ).address(opcional):zipCode,street,streetNumber,complement(opc),neighborhood,city,state(len 2),country(default"BR"). Seaddressfor enviado, os campos (excetocomplement) precisam ser não-vazios.selectedBumpsarray de string (default[]).paymentMethodenum['PIX']default"PIX".couponCodestring 1–64 opcional.
Resposta (201):
{ "orderId": "string", "status": "PENDING", "pix": { "qrcode": "string", "expiresAt": "ISO" }, "amount": { "value": 10000, "currency": "BRL" }}status ∈ PENDING | PAID | FAILED | CANCELED.
POST /public/checkouts/:slug/coupon-preview → 200
Seção intitulada “POST /public/checkouts/:slug/coupon-preview → 200”Body: couponCode (1–64, obrigatório), selectedBumps (array, default []).
Resposta (union): igual à do payment-link coupon-preview.
Objeto layout (retornado em detalhes de checkout): version: 4, pageTitle, primaryColor (#RRGGBB), customerFields[] (name|email|phone|document), mainProductId, bumpProductIds[], showLogo, logoUrl|null, collectAddress, tracking ({ googleTagId, metaPixelId }), successRedirectUrl, themeOverrides ({ vars, logoUrl|null }).