borted at new DOMException (node:internal/per_context/domexception:76:18) at AbortController.abort (node:internal/abort_controller:504:18) at /home/ubuntu/.vscode-server/extensions/github.copilot-chat-0.33.3/dist/extension.js:1920:11561 at UJe.invoke (/home/ubuntu/.vscode-server/extensions/github.copilot-chat-0.33.3/dist/extension.js:114:46214) at n.fire (/home/ubuntu/.vscode-server/extensions/github.copilot-chat-0.33.3/dist/extension.js:114:46986) at HIe.cancel (/home/ubuntu/.vscode-server/extensions/github.copilot-chat-0.33.3/dist/extension.js:114:47920) at $Je.cancel (/home/ubuntu/.vscode-server/extensions/github.copilot-chat-0.33.3/dist/extension.js:114:48316) at $A.cancelRequest (/home/ubuntu/.vscode-server/extensions/github.copilot-chat-0.33.3/dist/extension.js:2143:2203) at $A.getFirstMatchingRequest (/home/ubuntu/.vscode-server/extensions/github.copilot-chat-0.33.3/dist/extension.js:2143:1955) at /home/ubuntu/.vscode-server/extensions/github.copilot-chat-0.33.3/dist/extension.js:2155:5203 at process.processTicksAndRejections (node:internal/process/task_queues:105:5)] 2025-12-02 12:56:45.065 [info] [fetchCompletions] Request 57e9be39-4301-4188-aadc-d8fa491a096d at finished with 200 status after 191.5382150001824ms 2025-12-02 12:56:45.105 [error] [AsyncCompletionManager] [57e9be39-4301-4188-aadc-d8fa491a096d] Request errored with [DOMException [AbortError]: This operation was aborted at new DOMException (node:internal/per_context/domexception:76:18) at AbortController.abort (node:internal/abort_controller:504:18) at /home/ubuntu/.vscode-server/extensions/github.copilot-chat-0.33.3/dist/extension.js:1920:11561 at UJe.invoke (/home/ubuntu/.vscode-server/extensions/github.copilot-chat-0.33.3/dist/extension.js:114:46214) at n.fire (/home/ubuntu/.vscode-server/extensions/github.copilot-chat-0.33.3/dist/extension.js:114:46986) at HIe.cancel (/home/ubuntu/.vscode-server/extensions/github.copilot-chat-0.33.3/dist/extension.js:114:47920) at $Je.cancel (/home/ubuntu/.vscode-server/extensions/github.copilot-chat-0.33.3/dist/extension.js:114:48316) at $A.cancelRequest (/home/ubuntu/.vscode-server/extensions/github.copilot-chat-0.33.3/dist/extension.js:2143:2203) at $A.getFirstMatchingRequest (/home/ubuntu/.vscode-server/extensions/github.copilot-chat-0.33.3/dist/extension.js:2143:1955) at /home/ubuntu/.vscode-server/extensions/github.copilot-chat-0.33.3/dist/extension.js:2155:5203 at process.processTicksAndRejections (node:internal/process/task_queues:105:5)] 2025-12-02 12:56:45.304 [info] [fetchCompletions] Request 5186bbd7-e075-49f0-b947-d114638a19d8 at finished with 200 status after 197.50859499908984ms 2025-12-02 12:56:45.370 [info] [streamChoices] solution 0 returned. finish reason: [stop] 2025-12-02 12:56:48.012 [info] [fetchCompletions] Request fd3a7a14-8b15-43b8-9a16-f67f6e73d5ba at finished with 200 status after 204.5639640018344ms 2025-12-02 12:56:48.094 [info] [streamChoices] solution 0 returned. finish reason: [stop] 2025-12-02 12:56:55.266 [info] [fetchCompletions] Request 81ec72c6-d06c-48a9-972b-3805b634331e at finished with 200 status after 292.6409530006349ms 2025-12-02 12:56:55.377 [info] [streamChoices] solution 0 returned. finish reason: [stop] 2025-12-02 12:56:55.805 [info] [fetchCompletions] Request 8b7536d9-7529-4eec-bf65-7a92a1788f9f at finished with 200 status after 307.4832040015608ms 2025-12-02 12:56:55.895 [info] [streamChoices] solution 0 returned. finish reason: [stop] 2025-12-02 12:56:56.161 [info] [fetchCompletions] Request a36b6e49-2a3d-46da-aa5d-d0037984c722 at finished with 200 statu "300", "message" => "ERROR - [wsInvoiceSF] Parametros incompletos para el Servicio Web, faltan el Propoietario de la Aplicación"); $Resultado = json_encode($j_array); echo $Resultado; return; } if($bRecId == "") { $j_array = array('code' => "300", "message" => "ERROR - [wsCancelAsyncInvoiceSFJ_v33] Parametros incompletos para el Servicio Web, faltan el ID del CFDI a actualizar"); $Resultado = json_encode($j_array); echo $Resultado; return; } if($bDatPAC == "") { $j_array = array('code' => "300", "message" => "ERROR - [wsCancelAsyncInvoiceSFJ_v33] Parametros incompletos para el Servicio Web, faltan los Datos del PAC"); $Resultado = json_encode($j_array); echo $Resultado; return; } ### 0. EXTRACCION DE PARAMETROS PARA EL CFDI ###################################################### #== Primero, extraemos el JSON del string en base 64 $bdDatPAC = base64_decode($bDatPAC); #== Segundo, decodificamos el JSON a un arreglo $abdDatPAC = json_decode($bdDatPAC,true); $dirBase = realpath("../"); # Configuración de zona horaria date_default_timezone_set('America/Mexico_City'); // ### DEFINICIÓN DE CONSTANTES ################################################### $SendaPEMS = "archs_pem/"; $SendaCFDI = "archs_cfdi/"; // Datos de acceso del usuario (proporcionados por el PAC). if($abdDatPAC["tipoTim"] == 1){ ## Timbrado en producción $urlPAC = "https://solucionfactible.com/ws/services/Cancelacion?wsdl"; } else { ## Timbrado en pruebas $urlPAC = "https://testing.solucionfactible.com/ws/services/Cancelacion?wsdl"; } // Datos para la configuracion del SOAP y los resultados. $username = $abdDatPAC["username"]; $password = $abdDatPAC["password"]; $bdUUID = $abdDatPAC["UUID"]; $fact_serie = $abdDatPAC["serie"]; $fact_folio = $abdDatPAC["folio"]; $invoiceNumber = $abdDatPAC["invoice"]; $invoiceID = $abdDatPAC["invoiceID"]; $RfcEmisor = $abdDatPAC["RfcEmi"]; // Datos "constantes" para los archivos CER y KEY del cliente $noCertificado = $abdDatPAC["Certificado_SAT"]; $file_cer = $abdDatPAC["Archivo_CER"]; $file_key = $abdDatPAC["Archivo_KEY"]; $clavePrivada = $abdDatPAC["Clave_Privada"]; $organi_id_ZB = $abdDatPAC["organization_id_ZB"]; $authtoken_ZB = $abdDatPAC["authtoken_ZB"]; $authtoken_ZC = $abdDatPAC["authtoken_ZC"]; // Leemos el archivo CER del cliente $nombre_fichero = $SendaPEMS.$file_cer; $gestor = fopen($nombre_fichero, "r"); $cerFile = fread($gestor, filesize($nombre_fichero)); fclose($gestor); // Leemos el archivo KEY del cliente $nombre_fichero = $SendaPEMS.$file_key; $gestor = fopen($nombre_fichero, "r"); $keyFile = fread($gestor, filesize($nombre_fichero)); fclose($gestor); // Conversion de los archivos CER y KEY leidos a formato Base64 $bCertB64 = base64_encode($cerFile); $bKeyB64 = base64_encode($keyFile); /* echo "Tipo Timbrado: ".$abdDatPAC["tipoTim"]; echo "
"; echo "username: ".$username; echo "
"; echo "password: ".$password; echo "
"; echo "bdUUID: ".$bdUUID; echo "
"; echo "Motivo: ".$motCancela; echo "
"; echo "UUID Sust: ".$uuidSustit; echo "
"; echo "fact_serie: ".$fact_serie; echo "
"; echo "fact_folio: ".$fact_folio; echo "
"; echo "invoiceNumber: ".$invoiceNumber; echo "
"; echo "invoiceID: ".$invoiceID; echo "
"; echo "RfcEmisor: ".$RfcEmisor; echo "
"; echo "urlPAC: ".$urlPAC; echo "
"; echo "file_cer: ".$SendaPEMS.$file_cer; echo "
"; echo "bCertB64: ".$bCertB64; echo "
"; echo "file_key: ".$SendaPEMS.$file_key; echo "
"; echo "bKeyB64: ".$bKeyB64; echo "
"; echo "
"; */ ### PROCESO DE CACELACION ######################################################## $response = ''; // Datos para la localización del WebService para resolución del WSDL. if($abdDatPAC["tipoTim"] == 1){ ## Timbrado en producción $urlLocation = 'https://solucionfactible.com/ws/services/Cancelacion'; } else { ## Timbrado en pruebas $urlLocation = 'https://testing.solucionfactible.com/ws/services/Cancelacion'; } #== Se lleva a cabo cancelacion del CFDI ============================ #== Se lleva a cabo cancelacion del CFDI ============================ try { // Configurar el cliente SOAP con trace $client = new SoapClient($urlPAC, [ 'trace' => 1, 'exceptions' => 1, 'cache_wsdl' => WSDL_CACHE_NONE ]); $client->__setLocation($urlLocation); //JFA: Cambio por SF para enviar el motivo de cancelacion $params = array('usuario' => $username, 'password' => $password, 'uuid' => $bdUUID . $motCancela . $uuidSustit, 'rfcEmisor' => $RfcEmisor, 'emailNotifica' => "", 'derCertCSDBase64' => $bCertB64, 'derKeyCSDBase64' => $bKeyB64, 'contrasenaCSD' => $clavePrivada, 'properties' => ""); $response = $client->__soapCall('cancelarAsincrono', array('parameters' => $params)); $xmlEnviado = $client->__getLastRequest(); error_log("XML ENVIADO:\n" . $xmlEnviado); // También puedes guardarlo en un archivo para comparar file_put_contents('soap_request.xml', $xmlEnviado); } catch (SoapFault $fault) { $j_array = array('code' => "900", "message" => "Error al ejecutar el WebService del PAC (SOAP)", 'status' => $fault->faultcode,'mensaje' => $fault->faultstring); //$j_array = array('code' => "900", "message" => $fault->faultcode."-".$fault->faultstring); $Resultado = json_encode($j_array); echo $Resultado; return; } /* print_r($response); echo "
"; echo "
"; */ $ret = $response->return; if($ret->status != 200) { $sErrMsg = $ret->mensaje; /* switch ($ret->status) { case 204: $sErrMsg = "El comprobante no se puede cancelar"; case 211: $sErrMsg = "La cancelación está en proceso"; case 213: $sErrMsg = "La solicitud de cancelación fue rechazada por el receptor"; case 303: $sErrMsg = "El certificado CSD no corresponde al RFC del contribuyente."; case 305: $sErrMsg = "La fecha de cancelación no está dentro del la vigencia del CSD del emisor."; case 306: $sErrMsg = "Las llaves utilizadas para sellar no corresponden a un CSD."; case 308: $sErrMsg = "El certificado CSD no fue emitido por la Autoridad de SAT."; case 402: $sErrMsg = "El RFC del contribuyente no existe conforme al régimen autorizado LCO."; case 500: $sErrMsg = "Han ocurrido errores internos que han impedido que se registre la solicitud de cancelación, reintentar."; case 501: $sErrMsg = "Ha ocurrido un error interno de comunicación con la base de datos, reintentar."; case 601: $sErrMsg = "Error de autenticación, el nombre de usuario o contraseña son incorrectos."; case 602: $sErrMsg = "La cuenta de usuario se encuentra bloqueada."; case 603: $sErrMsg = "La contraseña de la cuenta ha expirado."; case 604: $sErrMsg = "Se ha superado el número máximo permitido de intentos fallidos de autenticación."; case 605: $sErrMsg = "El usuario se encuentra inactivo."; case 611: $sErrMsg = "Los datos recibidos están incompletos o no se encuentran donde se esperarían."; case 620: $sErrMsg = "Permiso denegado."; case 621: $sErrMsg = "Los datos recibidos no son válidos."; case 633: $sErrMsg = "Uso indebido de cuenta de producción en pruebas o cuenta de prueba en producción."; case 701: $sErrMsg = "Ya existe una transacción asíncrona para el UUID especificado."; } */ $j_array = array('code' => "901", "message" => "Se presento un problema al momento de realizar la cancelación. ", 'status' => $ret->status,'mensaje' => $sErrMsg, 'urlPAC' => $urlPAC ,'params' => $params); $Resultado = json_encode($j_array); echo $Resultado; return; } $RespServ = $ret; $j_array = array('code' => "200", "message" => "Proceso de cancelacion de CFDI fue exitoso", 'status' => $ret->status, 'mensaje' => $ret->mensaje); $Resultado = json_encode($j_array); echo $Resultado; return;