🔍 PRUEBA DE CERTIFICADO DIGITAL SUNAT


1. Verificación de archivos

Certificado .pfx encontrado:
Ruta: 20612757594.pfx
Tamaño: 9546 bytes
Permisos: 0644
Estado: Archivo parece válido (no vacío)

Archivo JSON encontrado:
✓ JSON válido
✓ Estructura: Array con objeto (correcta para tu sistema)
Datos decodificados:
✓ rucEmisor: 20612757594
✓ clavCertificado (decodificado): ********
✓ userSol (decodificado): USERB001
✓ claveSol (decodificado): ********
✓ servidorSunat: 3
✓ nomCertificado (decodificado): 20612757594.pfx
Datos en Base64 (original):
• clavCertificado: RGIzMzA3ODA=
• userSol: VVNFUkIwMDE=
• claveSol: RGIzMzA3ODA=
• nomCertificado: MjA2MTI3NTc1OTQucGZ4
Verificación de contraseña:
✅ La contraseña decodificada coincide con la usada para el certificado

2. Prueba de lectura del certificado .pfx

Contraseña usada para prueba: ********
Longitud contraseña: 8 caracteres

✓ CERTIFICADO LEÍDO CORRECTAMENTE
La contraseña es correcta

Información del certificado:
• RUC/Emisor: No encontrado en certificado
• Razón Social: ||USO TRIBUTARIO|| DISTRIBUIDORA COMERCIAL BRAYAN S.A.C. CDT 20612757594
• Válido desde: 2024-07-05
• Válido hasta: 2027-07-05
• Días restantes: 512 días
✅ Certificado vigente
• Clave privada: PRESENTE

3. Extensiones PHP requeridas

✅ openssl: ACTIVADA (Para firma digital)
✅ curl: ACTIVADA (Para conexión con SUNAT)
✅ soap: ACTIVADA (Para Web Services SUNAT)
✅ zip: ACTIVADA (Para comprimir XML)
✅ xml: ACTIVADA (Para manejo de XML)
✅ dom: ACTIVADA (Para DOMDocument)
✅ mbstring: ACTIVADA (Para cadenas multibyte)

4. Prueba con archivo firmar-xml.php

✅ Archivo firmar-xml.php encontrado
✓ Usa base64_decode()
✓ Hace referencia a 'clavCertificado'

Fragmento del código (primeras 20 líneas):
1: <?php
2:     class firmadocpe
3:     {
4:         function FirmarCpe($Json_Fac, $Json_Emp)
5:         {
6:             // Leemos el json
7:             foreach ($Json_Emp as $cpe) 
8:             {
9:                 $ruc_Emisor = $cpe['rucEmisor'];
10:                 $nom_cert   = base64_decode($cpe['nomCertificado']);
11:                 $clav_cert  = base64_decode($cpe['clavCertificado']);
12:             } 
13: 
14:             foreach ($Json_Fac as $cpe) 
15:             {
16:                 $TipoComprobante    = $cpe['tipComp'];
17:                 $serieComp          = $cpe['serieComp'];
18:                 $numeroComp         = $cpe['numeroComp']; 
19:                 $VersionUbl         = $cpe['UBL'];      
20:             }

5. Soluciones sugeridas

Basado en tu estructura JSON:

1. Tu sistema ya está configurado correctamente
• JSON tiene estructura de array con objeto
• Contraseñas en Base64: SÍ
• Campos: clavCertificado, userSol, claveSol (no clave_certificado, usuario_sol)

2. Si firmar-xml.php falla, verifica que:
a) Use json_decode() y tome [0] del array
b) Decodifique con base64_decode()
c) Use los nombres correctos de campos
// Código esperado en firmar-xml.php
$json_content = file_get_contents('Json/20612757594.json');
$config_array = json_decode($json_content, true);
$config = $config_array[0]; // ← IMPORTANTE

// Decodificar desde Base64
$clave_cert = base64_decode($config['clavCertificado']);
$usuario_sol = base64_decode($config['userSol']);

3. Problema común:
Si firmar-xml.php busca 'clave_certificado' pero tu JSON tiene 'clavCertificado'
Solución: Actualizar firmar-xml.php para usar los nombres correctos

6. Resumen y enlaces

Estado actual:
1. Certificado: ✅ PRESENTE
2. JSON: ✅ PRESENTE
3. Lectura certificado: ✅ EXITOSA
4. Coincidencia contraseñas: ✅ COINCIDEN

Enlaces útiles:
Ver JSON actual
SUNAT Beta
Probar firmar-xml.php

📝 Diagnóstico final

✅ SISTEMA FUNCIONAL
El certificado se lee correctamente con la contraseña.
El JSON tiene la estructura correcta para tu sistema.
Posible problema: firmar-xml.php no está leyendo el JSON correctamente.