Os exemplos usam o sandbox (
https://api.upag.dev/v1) com sk_test_…. Em produção use https://api.upag.io/v1 com sk_live_….1. Criar produto e preço recorrente
Valores em centavos (mínimo 100). A resposta de Criar produto traz só o produto; o preço é lido em Listar preços. Se preferir, crie o produto semdefaultPrice e use Criar preço, que devolve o preço direto.
2. Criar o cliente
3. Criar a assinatura
Escolha o método de cobrança. Os dois dependem do cliente do passo 2.Pix
Não precisa de nada além do cliente e do preço. A assinatura nasceincomplete e vira active quando o cliente paga a fatura do primeiro período.
status=open), ache a de subscription igual ao ID e leia a cobrança em payments[].charge (Obter cobrança). Nas renovações, cada fatura nova traz um QR code com vencimento de 3 dias.
Cartão
POST /subscriptions com paymentMethod: "card" exige um cartão ativo que já pertença ao cliente. Um cartão recém-tokenizado (Criar cartão) não pertence a ninguém; ele passa a ser do cliente quando é usado numa cobrança de cartão do cliente (Criar cobrança) ou numa confirmação de checkout. Usá-lo antes disso devolve 404 SUBSCRIPTION_CARD_NOT_FOUND.
Por isso, para o primeiro cartão de um cliente, o caminho é o checkout: crie um link de pagamento com o preço recorrente e deixe o pagador confirmar com o cartão. A confirmação cria a fatura, cobra, vincula o cartão ao cliente e cria a assinatura. Depois disso o cartão fica na conta do cliente:
Node.js SDK
active. Se o cartão for recusado, a criação não falha: a assinatura fica incomplete. Todos os campos e erros: Criar assinatura.
4. Acompanhar por webhook
Valide a assinatura do webhook (upag.webhooks.validateSignature sobre o corpo cru, veja Segurança) e reaja aos eventos:
Node.js SDK
Renovações
A cada período a Upag cria a fatura e cobra: no cartão, à vista, e no Pix, com um novo QR code de 3 dias. Se a cobrança falhar, a assinatura vai parapast_due e novas tentativas são feitas. Para ver o valor da próxima fatura antes de ela existir, use Fatura futura:
Node.js SDK
Mudar itens
Adicionar, alterar ou remover itens não gera fatura nem proporcional. ComapplyAt: 'now' a mudança vale já; com 'period_end' ela fica agendada e é aplicada na renovação.
Node.js SDK
Cancelar
Por padrão o cancelamento é imediato. Para manter o acesso até o fim do período já pago, useatPeriodEnd: