Simular pagamentos
Dados de teste do sandbox para forçar cada resultado e cada webhook.
No sandbox nenhum dinheiro se move. O resultado de um pagamento é decidido pelo CPF (Pix) ou pelo número do cartão que você usar no checkout. Assim você testa o caminho feliz e cada falha sem depender de ninguém.
Use as credenciais de sandbox
Tudo aqui vale para https://sandbox.xpayz.us/payment-link. Em produção esses dados são tratados
como pagamentos reais e serão recusados.
Como funciona
- 1Crie um linkPOST /links no sandbox. Guarde a url devolvida.
- 2Pague com um dado de testeAbra a url e use um CPF ou cartão desta página.
- 3Receba os webhooksevent.created na hora, o evento final entre 3 e 5 segundos depois.
Antes, cadastre um webhook assinando os tópicos que quer ver (veja o Começo rápido). Um endpoint do webhook.site é suficiente para testar.
Pix
Gere o QR Code no checkout informando um destes CPFs como documento do pagador. Não é preciso pagar o QR Code: o sandbox simula o resultado sozinho.
Pagamento aprovado. Libere o pedido.
Pagamento cancelado antes de concluir.
O QR Code expirou sem pagamento.
Pagamento recusado.
Cartão de crédito
Use um destes números no checkout. Validade: qualquer data futura. CVV: quaisquer 3 dígitos. Nome: qualquer um.
Pagamento aprovado. Libere o pedido.
Pagamento cancelado antes de concluir.
O pagamento expirou.
Pagamento recusado.
Clique em um valor para copiar. CPFs e cartões são copiados só com os dígitos.
O que você deve receber
Todo pagamento iniciado emite event.created assim que o pagador confirma no checkout. Depois
chega um, e só um, evento final:
{
"topic": "event.completed",
"data": {
"external_id": "0d4ba8f5-bbc6-4cbb-ae65-13de2f903271",
"amount": "100",
"currency": "BRL",
"status": "done",
"method": "pix",
"payer": { "name": "John Doe", "email": "john@example.com", "document": "***.000.001-**" },
"link": { "external_id": "b3e1c2d4-5f67-4890-9abc-1234567890ab", "external_ref": "pedido-123" }
}
}| Cenário | Eventos, em ordem | data.status final |
|---|---|---|
| Aprovado | event.created → event.completed | done |
| Cancelado | event.created → event.cancelled | cancelled |
| Expirado | event.created → event.expired | expired |
| Recusado | event.created → event.rejected | rejected |
Checklist antes de ir para produção
- Seu endpoint responde
2xxem menos de 30 segundos. - Você valida o
X-Signaturee rejeita assinaturas inválidas. - Receber o mesmo evento duas vezes não libera o pedido duas vezes.
- Os quatro cenários acima levam o pedido ao estado certo no seu sistema.
- Um link de uso único (
single_use: true) recusa um segundo pagamento. - Você trocou as credenciais e a URL base para as de produção.