🔍 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
📝 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.