- Do seu servidor, com a chave secreta: Criar sessão. Você paga a sessão por Confirmar, também no servidor.
- Do navegador do pagador, a partir de um link de pagamento: Iniciar sessão. A sessão é uma cópia do link no momento da abertura (itens, bumps, métodos, URLs, trial); editar o link depois não muda uma sessão já aberta. A resposta traz o
clientSecret, a única credencial que o navegador usa para ler e pagar aquela sessão.
open por 24 horas (ou até expiresAt) e vira complete quando o pagamento é aprovado (ou, num teste sem nada a cobrar hoje, quando é confirmada).
Endpoints
Gerenciamento, com chave secreta (sk_…):
Ler e pagar uma sessão: aceitam a chave secreta ou o
clientSecret da própria sessão (Authorization: Bearer <clientSecret>):
Públicos, sem autenticação:
Sandbox:
https://api.upag.dev/v1 com sk_test_…. Produção: https://api.upag.io/v1 com sk_live_…. O clientSecret nunca vai para uma chave secreta nem para logs; trate-o como uma senha de uma sessão só.Estrutura
É o que o servidor devolve em Criar, Listar, Obter e Atualizar:Atributos
string
UUID da sessão.
string | null
string | null
UUID do layout de checkout copiado do link.
null em sessões criadas por Criar.string | null
UUID do link de pagamento de origem.
null em sessões criadas por Criar e Shopify.array
Métodos aceitos:
pix e/ou card.object
Como começa a assinatura que os itens recorrentes criam.
trial: duração relativa do teste (interval:day,weekoumonth;intervalCount), contada a partir do momento em que a assinatura é criada.nullsem teste.trialEnd: data fixa de fim do teste, em ISO 8601.nullsem teste ou comtrial.trialSettings.endBehavior.missingPaymentMethod:create_invoice(cobra o primeiro período por Pix) oucancel, quando o teste acaba sem método de pagamento. Veja Teste grátis.
string
always (padrão) ou if_required. Com if_required, uma sessão sem nada a pagar hoje (teste) pode terminar sem método de pagamento.string
open, complete ou expired.string | null
Endereço da página de checkout hospedada da sessão.
null quando o checkout hospedado não está configurado.string | null
ISO 8601 do vencimento. Depois dele a sessão não aceita mais pagamento.
null quando a sessão nunca expira.string
ISO 8601.
string
ISO 8601.
string
auto, required ou none: se a página pede o endereço de cobrança.string | null
URL para onde o pagador volta depois de pagar.
string | null
URL para onde o pagador volta se desistir.
number | null
Reservado para a localização do pagador. A API não preenche no momento (
null), assim como longitude, country, region e city.string | null
UUID da fatura criada na primeira confirmação.
null antes dela, e também numa sessão confirmada sem nada a cobrar hoje.string | null
UUID da assinatura criada quando a sessão tem itens recorrentes.
null antes da confirmação.string | null
Código do cupom aplicado.
array
Ofertas extras (order bumps) que o pagador pode aceitar na confirmação.
id: UUID do bump.price: UUID do preço.quantity: quantidade.amount:valor do preço × quantity, em centavos, calculado quando a sessão foi criada.title,description: textos opcionais (nullquando ausentes).
array
Descontos aplicados por cupom, um por item elegível.
id: UUID do desconto.item: UUID do item da sessão.coupon: UUID do cupom.type:coupon.amount: desconto em centavos.
Status
Visão do pagador
As rotas que o navegador chama com oclientSecret (Iniciar, Obter, Confirmar, cupom) devolvem uma visão achatada e pronta para a página de checkout, em vez da estrutura acima: itens com o preço e o produto expandidos, subtotal, discountAmount e amount (em centavos), opções de parcelamento por método, trial, customer, charge, invoice e dados da conta. A forma é a mesma em todas essas rotas; só clientSecret muda (vem preenchido apenas em Iniciar, null nas demais). Os campos estão em Obter sessão (pagador).