Processar Pagamentos em Etapa Única
Este guia detalha como implementar o fluxo de pagamento padrão (Venda). Neste fluxo, você envia uma única requisição para a API, e o terminal lida com a interação com o portador do cartão.
Como as interações com o terminal físico levam tempo, este processo é assíncrono. Você iniciará o pagamento por meio de uma chamada direta à API e receberá o resultado final via uma notificação de webhook.
O Ciclo de Vida da Transação
- Requisição: Seu servidor envia uma requisição
POSTpara o endpoint/pago. - Reconhecimento: A API retorna um
200 OKsíncrono indicando que o terminal recebeu o comando. - Interação: O terminal solicita que o cliente insira o cartão e digite o PIN.
- Notificação: Assim que a transação for concluída (Aprovada, Negada ou Cancelada), a API envia um payload JSON para a sua
urlNotificacion.
Passo 1: Enviar a Requisição de Pagamento
Para iniciar uma venda, envie uma requisição POST para o endpoint /pago.
- Endpoint de Teste:
https://tpvpc-i.redsys.es:27443/TPV_PC/services/rest/tpvpcwss/v1/pago - Endpoint de Produção:
https://tpvpc.redsys.es/TPV_PC/services/rest/tpvpcwss/v1/pago
Payload da Requisição
O payload deve incluir o valor, sua referência interna de fatura e a URL de notificação onde você deseja receber o resultado final.
{
"info": {
"comercio": "777888991",
"terminal": 1,
"timestamp": "20250428 111217",
"notificacion": {
"urlNotificacion": "https://your-server.com/api/webhooks/payment-results",
"correoNotificacion": "[email protected]"
},
"datosOperacion": {
"importe": "25.50",
"factura": "ORD-2025-001"
}
},
"signature": "YOUR_CALCULATED_SIGNATURE"
}Certifique-se de que o importe esteja formatado como XXXXXXXXX.XX (ex.: 25.50 ou 0.01). Não utilize vírgulas.
Passo 2: Tratar a Resposta Síncrona
Imediatamente após enviar a requisição, a API retornará uma resposta.
Resposta Esperada:
{
"info": {
"resultado": {
"codigo": "0"
}
},
"signature": "SERVER_SIGNATURE"
}codigo: "0": Sucesso. O terminal agora está processando o pagamento.- Qualquer outro código: A requisição falhou (ex.: erro de validação, terminal offline). Consulte a referência do Catálogo de Códigos de Erro e Negação.
NÃO libere os produtos/serviços ainda. Um código 0 aqui significa apenas “Requisição Aceita”. Isso não significa que o pagamento foi pago ou autorizado.
Passo 3: Receber a Notificação Assíncrona
Quando o cliente finaliza (ou cancela) a transação, a API Cloud envia uma requisição POST para a sua urlNotificacion.
Exemplo de Notificação de Sucesso
{
"info": {
"comercio": "777888991",
"terminal": 1,
"timestamp": "20250428 111500",
"datosRespuesta": {
"tipoPago": "PAGO",
"importe": "25.50",
"moneda": "978",
"factura": "ORD-2025-001",
"resultado": "Autorizada",
"codigoRespuesta": "998877",
"estado": "F",
"tarjetaClienteRecibo": "************1234",
"marcaTarjeta": "1"
}
},
"signature": "SERVER_SIGNATURE"
}Campos Principais para Validação
Você deve inspecionar campos específicos em datosRespuesta para confirmar o status do pagamento:
| Campo | Valor para Sucesso | Descrição |
|---|---|---|
resultado | Autorizada | Declara explicitamente que a transação foi aprovada. |
estado | F | Indica que a operação está “Finalizada” (Finalized). |
codigoRespuesta | (Código de Autorização) | O código de autorização do banco. Se a transação foi negada, conterá um código de negação (ex.: 101, 117). |
importe | (Seu Valor) | Verifique se o valor autorizado corresponde ao valor que você solicitou. |
Tratamento de Negações e Erros
Se o pagamento falhar, a notificação refletirá a falha:
resultado:DenegadacodigoRespuesta: Um código de negação (ex.:117para PIN Incorreto).estado: Pode serG(Negada),A(Cancelada) ouT(Falha Técnica).
Próximos Passos
- Configurar Webhooks e Notificações: Guia detalhado sobre como processar (parse) e validar o payload de notificação.
- Especificações de Impressão de Recibos: Use os dados da notificação (
tarjetaClienteRecibo,marcaTarjeta) para imprimir o recibo obrigatório em conformidade.