Skip to main content
POST
Confirmar sessão de checkout
Paga a sessão. Na primeira chamada a Upag resolve o pagador, cria a fatura (e a assinatura, se houver itens recorrentes) e cobra. As chamadas seguintes pagam a mesma fatura: é assim que se tenta de novo depois de um cartão recusado, ou se troca entre Pix e cartão.
  • Cartão: a resposta já traz o resultado. Aprovado, a sessão fica complete; recusado, continua open e dá para tentar de novo.
  • Pix: a sessão fica open com o QR code na cobrança, e vira complete quando o pagamento é confirmado. Acompanhe por webhook.
  • Nada a pagar hoje (um teste cobre todos os itens): não há cobrança nem fatura. A assinatura nasce trialing e a sessão fica complete na hora. Envie paymentMethod em vez de charge. Veja Teste grátis.
Dois chamadores podem confirmar, com a mesma rota e respostas diferentes: Permissão: checkout_session.write.
Os exemplos usam o sandbox (https://api.upag.dev/v1). Em produção use https://api.upag.io/v1 com sk_live_…; no navegador, o upag-js usa só a chave pública.

Do servidor

Cartão

Tokenize o cartão antes (Criar cartão) e envie o id. Com 3D Secure, abra antes a sessão 3DS da sessão de checkout e envie o ID dela em threeDSecureSession.

Teste grátis (nada a pagar hoje)

Do navegador

Com o clientSecret de Iniciar sessão. Os cartões são tokenizados no navegador com upag.cards.create, usando a chave pública.
Cartão, no navegador:
upag-js
Num teste sem nada a pagar hoje (session.trial presente e session.amount === 0), envie paymentMethod em vez de charge:
upag-js
O navegador é limitado a 10 confirmações por minuto por sessão e por IP, e não aceita um UUID em customer.

Parâmetros

string (uuid)
required
ID da sessão.
string (uuid) | object
required
O pagador. Do servidor: UUID de um cliente da conta, ou os dados do pagador (a Upag acha o cliente pelo documento ou cria um, e atualiza o nome, e-mail, telefone e endereço enviados). Do navegador: só os dados.
  • name (obrigatório): nome.
  • document (obrigatório): { type: "cpf" | "cnpj", number }.
  • email: opcional.
  • phone: opcional, { countryCode, areaCode, number }.
  • address: opcional, com street, number, complement, neighborhood, city, state, country e zip.
Se a sessão já pertence a um cliente (a partir de uma tentativa anterior), outro cliente é recusado.
array
default:"[]"
UUIDs dos bumps da sessão que o pagador aceitou. Só valem na primeira tentativa.
object
Como pagar. Obrigatório quando há valor a pagar hoje; proibido quando não há. Não pode vir junto de paymentMethod.
  • method (obrigatório): pix ou card. Precisa estar em paymentMethods da sessão.
  • Pix: dueDate (ISO 8601, opcional): vencimento do QR code.
  • Cartão: card (obrigatório, UUID de um cartão tokenizado), installments (1 a 12, padrão 1), threeDSecureSession, ipAddress, location e softDescriptor, como em Pagar fatura.
object
Cartão a guardar para a cobrança depois do teste, quando nada é cobrado hoje: { type: "card", card }, com card o UUID de um cartão tokenizado. Obrigatório com paymentMethodCollection: "always"; opcional com if_required. Não pode vir junto de charge.

Resposta

200 OK Do servidor: a sessão com customer expandido e charge e invoice criados pela chamada. charge e invoice são null quando nada foi cobrado hoje. Exemplo de um Pix aguardando pagamento:
Response
Do navegador: a visão do pagador, com customer (documento mascarado), invoice (id e status) e charge preenchidos. Exemplo do mesmo Pix:
Response
Para um pagamento já aprovado, status da sessão vem complete e charge.status vem paid. Para um cartão recusado, a sessão segue open, charge.status vem failed e charge.error traz code e message.

Erros

Os erros do pagamento em si (cartão inexistente ou de outro cliente, 3DS inválido, falha de cobrança) seguem Pagar fatura.