# Documentación del Paso 3 de PagoPar - Formato Correcto

Este documento explica el formato correcto para realizar la consulta del Paso 3 en la integración con PagoPar.

## Formato Validado (20 de octubre, 2025)

```php
// FORMATO CORRECTO DE CONSULTA - Paso 3 PagoPar
$consulta_data = [
    'hash_pedido' => $hash_pedido,                      // Hash del pedido proporcionado por PagoPar
    'token' => sha1($private_key . "CONSULTA"),         // SHA1 del private_key + "CONSULTA"
    'token_publico' => $public_key                      // Public key SIN aplicar SHA1
];
```

## Observaciones Importantes

1. **NO aplicar SHA1 a la clave pública (token_publico)** - Usar el valor directo de la clave pública.
2. **Aplicar SHA1 al token de consulta** - Concatenar la clave privada con "CONSULTA" y luego aplicar SHA1.
3. **Orden de los campos** - En este caso, el orden no importa, pero es importante mantener los nombres exactos.
4. **Estado del pedido** - La consulta funciona tanto con pedidos pendientes como pagados, pero para validar el Paso 3, el pedido debe estar PAGADO.

## Validaciones realizadas

- **Fecha**: 20 de octubre, 2025
- **Herramienta**: diagnostico_token_paso3.php
- **Pedido de prueba**: #17859307
- **Respuesta exitosa**: Formato "Sin SHA1 para Public Key"

## Proceso para validar Paso 3

1. Crear un pedido nuevo con paso3_nuevo_pedido.php
2. Realizar el pago simulado en PagoPar (estado PAGADO)
3. Verificar con paso3_verificacion_final.php
4. Confirmar en panel.pagopar.com que Paso 3 está en verde

## Errores comunes

- **"Token no corresponde"** - Causas posibles:
  - Aplicar SHA1 a token_publico (incorrecto)
  - Pedido no existente en PagoPar
  - Credenciales incorrectas o renovadas
  - Hash de pedido incorrecto

## Referencia de código

```php
// Generar tokens según formato validado
$token_consulta = sha1($pagoparConfig['private_key'] . "CONSULTA");
$token_publico = $pagoparConfig['public_key']; // SIN SHA1

// Estructura exacta validada por diagnóstico
$consulta_data = [
    'hash_pedido' => $hash_pagopar,
    'token' => $token_consulta,
    'token_publico' => $token_publico
];

// Realizar consulta a PagoPar API
$ch = curl_init("https://api.pagopar.com/api/pedidos/1.1/traer");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($consulta_data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Accept: application/json'
]);
```

## Contacto PagoPar

Para cualquier duda adicional, contactar a:
- Email: soporte@pagopar.com
- Teléfono: +595 21 249-4000
- Web: https://www.pagopar.com