Métodos de pagamento do Customer Portal
Permita que um cliente gerencie os métodos de pagamento salvos no portal — listar, adicionar e remover cartões usando tokenização no navegador.
Estes endpoints permitem que um cliente autenticado gerencie os próprios métodos de pagamento: listar instrumentos salvos, adicionar um novo e remover um. Adicionar um cartão usa a mesma tokenização no navegador do checkout — os dados do cartão são criptografados em iframes isolados e nunca chegam aos seus servidores nem à Tokeflow em texto claro.
O que o cliente vê é o resumo não sensível — bandeira, últimos quatro dígitos, validade — nunca o cartão completo. A remoção de um instrumento contra o qual uma assinatura ainda cobra é protegida, para que uma renovação não fique órfã.
Estes endpoints alimentam o Customer Portal — a superfície self-service que os seus clientes finais usam, sob a sua marca. Eles são autenticados por um cookie de sessão do portal, estabelecido por meio do fluxo de magic-link (solicitar um link e depois verificar o token), e não por uma chave de API. Consulte Sessões e configuração.
O objeto do método de pagamento
Retornado pelos endpoints de listagem e consulta desta página.
| Field | Type | Description |
|---|---|---|
id | string | — |
instrument_type | string | — |
card_brand | string | null | — |
last4 | string | null | — |
exp_month | number | null | — |
exp_year | number | null | — |
is_default | boolean | — |
status | string | — |
Endpoints
GET/api/v1/portal/payment-methods
Autenticação: Customer Portal session (cookie definido pelo fluxo de magic-link).
Lista os cartões salvos.
Exemplo de requisição
curl https://api.tokeflow.com/api/v1/portal/payment-methods \
-H "Cookie: tf_portal_session=…"Exemplo de resposta — 200
{
"data": [
{
"id": "pi_123",
"instrument_type": "card",
"card_brand": "visa",
"last4": "4242",
"exp_month": 12,
"exp_year": 2027,
"is_default": true,
"status": "active"
}
]
}POST/api/v1/portal/payment-methods
Autenticação: Customer Portal session (cookie definido pelo fluxo de magic-link).
Cadastra um novo cartão.
Campos da requisição
| Field | Type | Required | Description |
|---|---|---|---|
card_ciphertext_id | string | Sim | o id de card-ciphertext do provedor de criptografia, proveniente do SDK do cliente. |
Exemplo de requisição
curl -X POST https://api.tokeflow.com/api/v1/portal/payment-methods \
-H "Cookie: tf_portal_session=…" \
-H "Content-Type: application/json" \
-d '{
"card_ciphertext_id": "tok_8f3c2a1b9d4e"
}'Exemplo de resposta — 201
{
"id": "pi_123",
"instrument_type": "card",
"card_brand": "visa",
"last4": "4242",
"exp_month": 12,
"exp_year": 2027,
"is_default": true,
"status": "active"
}DELETE/api/v1/portal/payment-methods/:id
Autenticação: Customer Portal session (cookie definido pelo fluxo de magic-link).
Remove um cartão salvo.
Parâmetros de caminho
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Sim | — |
Exemplo de requisição
curl -X DELETE https://api.tokeflow.com/api/v1/portal/payment-methods/obj_1a2b3c4d \
-H "Cookie: tf_portal_session=…"Exemplo de resposta — 204 No Content
Um corpo vazio é retornado em caso de sucesso.
POST/api/v1/portal/payment-methods/:id/set-default
Autenticação: Customer Portal session (cookie definido pelo fluxo de magic-link).
Define um cartão como padrão da carteira.
Parâmetros de caminho
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Sim | — |
Exemplo de requisição
curl -X POST https://api.tokeflow.com/api/v1/portal/payment-methods/obj_1a2b3c4d/set-default \
-H "Cookie: tf_portal_session=…"Exemplo de resposta — 200
{
"id": "pi_123",
"instrument_type": "card",
"card_brand": "visa",
"last4": "4242",
"exp_month": 12,
"exp_year": 2027,
"is_default": true,
"status": "active"
}POST/api/v1/portal/tokenization/session
Autenticação: Customer Portal session (cookie definido pelo fluxo de magic-link).
Inicia uma sessão de tokenização (credenciais de criptografia).
Exemplo de requisição
curl -X POST https://api.tokeflow.com/api/v1/portal/tokenization/session \
-H "Cookie: tf_portal_session=…"Exemplo de resposta — 201
{
"session_id": "sess_...",
"sdk": {
"js_url": "https://vault.tokeflow.com/v2",
"sri_expires_at": 1
},
"expires_at": "2026-01-15T12:30:00.000Z"
}POST/api/v1/portal/tokenization/tokens
Autenticação: Customer Portal session (cookie definido pelo fluxo de magic-link).
Registra um cartão criptografado.
Campos da requisição
| Field | Type | Required | Description |
|---|---|---|---|
session_id | string | Sim | Id da sessão de tokenização do portal. |
encryptedCard | object | Sim | — |
metadata | object | Sim | — |
Exemplo de requisição
curl -X POST https://api.tokeflow.com/api/v1/portal/tokenization/tokens \
-H "Cookie: tf_portal_session=…" \
-H "Content-Type: application/json" \
-d '{
"session_id": "sess_...",
"encryptedCard": {
"number": "ev:QkTC:q6/SoVBehipxsy6j:...",
"cvc": "ev:QkTC:JfW5fyt5eOb2vXAX:...",
"expiryMonth": "12",
"expiryYear": "25",
"name": "ev:QkTC:..."
},
"metadata": {
"brand": "visa",
"last4": "4242",
"expiryMonth": "12",
"expiryYear": "2025",
"bin": "424242"
}
}'Exemplo de resposta — 201
{
"token_id": "tok_8f3c2a1b9d4e",
"brand": "visa",
"last4": "4242",
"exp_month": "12",
"exp_year": "2027"
}Erros
Os erros usam o envelope padrão. Os casos mais comuns aqui:
| HTTP | Meaning |
|---|---|
400 | Parâmetros inválidos ou um estado que não permite esta operação. |
401 | Token de Dashboard session ausente, expirado ou inválido. |
403 | Autenticado, mas o usuário conectado não tem acesso a esta entidade. |
404 | O registro não existe ou não é visível para esta entidade. |