- Início
- API
- Kit de testes
Kit de testes
Coleção do Postman da API /v1, gerada do OpenAPI, com os ambientes de homologação e produção, e o roteiro para testar uma integração.
A coleção tem uma requisição para cada rota da API /v1, gerada da mesma especificação que a referência. Ela acompanha a API: a cada publicação deste site, a coleção é gerada de novo.
Coleção · Ambiente de homologação · Ambiente de produção
Começar
- No Postman, importe a coleção e os dois ambientes (Import, arraste os três arquivos).
- Escolha o ambiente Paystation homologação.
- Preencha
secret_keycom a sua chavesk_test_…eoffer_idcom o id de uma oferta publicada do seu cliente. Preencha só o local value: ele fica no seu computador. O shared value é sincronizado com a nuvem do Postman e com quem mais usa o seu workspace. - Rode me → Describe the key used on the request para conferir a chave.
| Variável | O que é |
|---|---|
base_url | O endereço da API do ambiente. |
secret_key, publishable_key | As chaves do seu cliente. A coleção usa a secreta em toda rota que a aceita, que hoje são todas. |
offer_id | A oferta usada nas cotações e nas cobranças. |
charge_id, subscription_id | Preenchidos sozinhos por uma cobrança criada, para as consultas, o estorno e o cancelamento. |
destination_id | Preenchido sozinho por um destino de webhook cadastrado. |
webhook_url | A URL do seu webhook, para cadastrar um destino. Vazia, o cadastro é recusado. Use um endereço seu e privado, nunca um serviço público de captura de requisições: o destino passa a receber os avisos de todos os compradores do cliente, com os dados deles. |
turnstile_token | O token do desafio, quando o Turnstile está ligado no seu cliente (veja abaixo). |
idempotency_key | Vazio: cada envio da cobrança é uma tentativa nova. Preenchido: todos os envios usam essa chave. |
last_attempt_key | A chave do último envio da cobrança, guardada antes de ele sair. Um novo envio a substitui: a de envios anteriores fica só no Console do Postman. |
allow_writes | Veja Escritas fora da homologação. |
Roteiro em homologação
- Cotação:
offers → Quote an offer: payment methods, instalments and totalsmostra os métodos e os totais da oferta. - Cobrança Pix:
charges → Create a chargejá vem com um corpo de Pix. A resposta201trazstatus: "pending"e o QR empayment.qr_code; ocharge_idfica guardado. - Mesma tentativa de novo: copie
last_attempt_keyparaidempotency_keye envie de novo. A resposta é a mesma cobrança, com o cabeçalhoIdempotent-Replayed: true. É o que fazer quando um envio fica sem resposta: repetir a mesma chave, nunca enviar de novo com uma chave nova, e só nos primeiros 10 minutos depois do primeiro envio. Depois disso, procure a cobrança pela listagem (passo 4) antes de qualquer coisa. - Consulta e busca:
charges → Retrieve a chargeresponde o estado atual. Emcharges → List your charges, newest first, ligue o filtrometadata[attempt_id], que usalast_attempt_key: a listagem acha a cobrança pela chave da tentativa, como na reconciliação. - Fim: esvazie
idempotency_key, ou toda cobrança seguinte repete essa tentativa.
Respostas que você pode ver ao repetir uma chave:
409 idempotency_key_in_use, enquanto o primeiro envio ainda está rodando (até uns 2 minutos);- o estado atual da cobrança, sem
Idempotent-Replayed, quando o primeiro envio terminou sem resposta guardada; 409 idempotency_key_unresolved, quando nem isso existe: pode ter cobrado; procure pela listagem, como no passo 4;409 idempotency_key_reuse, se algo além do cartão mudou no corpo, como o comprador: volte o corpo ao do primeiro envio;409 idempotency_key_expired, mais de 24 horas depois.
Os avisos de checkout dessa cobrança vão para o destino de checkout que o time configurou para o seu cliente.
Cartão não entra no Postman: o token do cartão só sai do navegador, pelo SDK. Para testar cartão, use o checkout de referência ou a sua própria página com a chave pk_test_….
Com o Turnstile ligado no seu cliente, toda cobrança pede o cabeçalho cf-turnstile-token, e o Postman não resolve o desafio. Resolva o desafio na sua página de homologação, copie o token (por exemplo, do challenge.getToken() no console do navegador) para turnstile_token e envie a cobrança em até uns 5 minutos: com turnstile_token preenchido, a coleção liga o cabeçalho sozinha. Cada token serve a poucas cobranças; resolva outro quando a resposta for 403 turnstile_*.
Escritas fora da homologação
Em produção, cada envio é real: uma cobrança cobra o comprador e avisa o seu webhook de produção, um estorno devolve dinheiro, um cancelamento encerra uma assinatura e um destino de webhook removido deixa de receber avisos. Por isso a coleção só envia uma escrita (tudo que não é GET, menos a busca de pagamento reutilizável) quando a requisição vai para a homologação e com uma chave _test_. Qualquer outra combinação é bloqueada antes de sair, com um aviso no Console, inclusive num ambiente que você copiou e trocou o endereço ou a chave.
Para enviar uma escrita em produção, mude allow_writes para true, envie uma requisição e volte para false. Nunca rode a coleção inteira (Run) com allow_writes ligado.
- Use o ambiente de produção para consultas: o estado de uma cobrança, a listagem, uma assinatura.
- Troque o comprador do corpo da cobrança pelo seu antes de cobrar em produção: o exemplo usa um CPF de teste, e uma cobrança paga com ele emite nota fiscal nesse CPF.
- Cada envio da cobrança é uma tentativa nova. Um segundo envio depois de um tempo esgotado cobra de novo: para repetir, copie
last_attempt_keyparaidempotency_key, nos primeiros 10 minutos; depois, procure a cobrança pela listagem. - A listagem e a consulta com a chave secreta respondem os dados completos do comprador, que ficam no histórico do Postman.
- Nunca grave a chave
sk_live_…no shared value nem exporte o ambiente com ela.
Os arquivos do kit são gerados quando o site é publicado. Numa cópia local do site sem a especificação da API, os links acima não existem.