# Prueba la conexión con la API de suscripción usando el mismo TLS de Windows que usa Sabio. # Con un CUIT inexistente: no graba nada en el CRM. $url = 'https://apiportal.sabiogo.com/suscripcion' $cuerpo = '{"Modo":1,"CUIT":"00-00000000-0","Empresa":"PRUEBA","Denomi":"PRUEBA","Telefo":"","EMail":"","DataBase":"PRUEBA","HardID":"00000000000000000000000000000000","SysInfo":"prueba","Version":"6400","User":"PRUEBA","NumSucurs":1,"NomSucurs":"PRUEBA","IpPubl":""}' $salida = Join-Path ([Environment]::GetFolderPath('Desktop')) 'prueba-suscripcion.txt' $lineas = New-Object System.Collections.ArrayList $resultados = @{} function Anotar([string]$texto) { [void]$lineas.Add($texto) Write-Host $texto } function Probar([string]$nombre) { try { $wc = New-Object System.Net.WebClient $wc.Headers.Add('Content-Type', 'application/json') $respuesta = $wc.UploadString($url, $cuerpo) Anotar ($nombre + ' -> CONECTA. La API contesto: ' + $respuesta) $resultados[$nombre] = $true } catch { $e = $_.Exception $detalle = $e.Message while ($e.InnerException) { $e = $e.InnerException $detalle = $detalle + ' | ' + $e.Message } Anotar ($nombre + ' -> NO CONECTA: ' + $detalle) $resultados[$nombre] = $false } } Anotar ('Fecha: ' + (Get-Date).ToString('dd/MM/yyyy HH:mm:ss')) Anotar ('Equipo: ' + $env:COMPUTERNAME) Anotar ('Windows: ' + [Environment]::OSVersion.VersionString) Anotar ('PowerShell: ' + $PSVersionTable.PSVersion.ToString()) Anotar ('.NET (CLR): ' + [Environment]::Version.ToString()) $net = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -ErrorAction SilentlyContinue if ($net) { Anotar ('.NET Framework 4 release: ' + $net.Release) } else { Anotar '.NET Framework 4: no instalado' } foreach ($clave in @('HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319', 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\.NETFramework\v4.0.30319')) { $v = Get-ItemProperty $clave -ErrorAction SilentlyContinue if ($v) { Anotar ($clave + ' SchUseStrongCrypto=' + $v.SchUseStrongCrypto + ' SystemDefaultTlsVersions=' + $v.SystemDefaultTlsVersions) } } Anotar ('Protocolos por defecto: ' + [System.Net.ServicePointManager]::SecurityProtocol) Anotar '' Probar 'Como Sabio (TLS por defecto)' try { [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]3072 Probar 'Forzando TLS 1.2' } catch { Anotar ('Este .NET no conoce TLS 1.2: ' + $_.Exception.Message) } $comoSabio = $resultados['Como Sabio (TLS por defecto)'] -eq $true $conTls12 = $resultados['Forzando TLS 1.2'] -eq $true Anotar '' Anotar '=================== VEREDICTO ===================' if ($comoSabio) { Anotar 'CANAL CORRECTO: esta PC se conecta bien con la API de Sabio.' Anotar 'La prueba usa un CUIT inventado a proposito, por eso la API contesta' Anotar '"Suscripcion NO Valida". Es lo esperado: no es un problema de esta PC.' Anotar 'Si Sabio igual no valida, pasar a desarrollo el mensaje que muestra Sabio.' } elseif ($conTls12) { Anotar 'PROBLEMA DE TLS: Windows usa por defecto un TLS viejo.' Anotar 'Forzando TLS 1.2 si conecta. Arreglo: aplicar el .reg de TLS 1.2 para .NET' Anotar 'y reiniciar Sabio.' } else { Anotar 'SIN CONEXION SEGURA: esta PC no logra conectarse con la API.' Anotar 'Revisar el detalle de arriba: si dice "canal seguro" falta TLS 1.2 en Windows' Anotar '(Windows 7: KB3140245 + .reg); si dice "relacion de confianza" faltan' Anotar 'certificados raiz; si no resuelve el nombre o hay timeout, es red o firewall.' } Anotar '=================================================' [System.IO.File]::WriteAllLines($salida, [string[]]$lineas) Write-Host '' Write-Host ('Resultado guardado en: ' + $salida)