links.create responde 422.
De onde vem o productId
Toda página de cobrança pede um productId. Ele vem de um destes três lugares:
A corrente
products.create já devolve a versão 1 em draft — você não cria versão na mão,
só lista e publica.
Preço: você provavelmente não precisa de prices.add
Para produto avulso de valor fixo, o basePrice do produto é o preço — a
fatura e o link já saem com ele. products.prices.add existe para taxa por
meter (por token, por request), não para preço flat.
Meter só entra quando você cobra por uso:
Vender da sua própria página: checkout()
Se você não quer mandar link e sim ter um botão “Comprar” no seu app, é uma
chamada. Ela cria a fatura e devolve a URL hospedada onde a pessoa paga (Pix,
boleto, cartão):
amount só para sobrescrever.
A pessoa é inscrita no produto no processo, então você recebe uma fatura ligada
ao produto (e não uma cobrança solta).
Chamando via curl. Todo
POST/PUT/DELETE da API autenticada exige header Idempotency-Key — sem ele volta
400 idempotency_key_required. O SDK gera um por chamada; no curl você manda o
seu.Próximo passo
Link de pagamento
Com a versão publicada, o link é uma linha.
Entregar o produto
Anexe o arquivo ou o link; a entrega sai sozinha quando o pagamento confirma.
Testar no sandbox
Pagar a fatura de teste e ver o status virar
paid.Saber que pagou
Webhook em produção, polling em sandbox.