public function valida_cfdi($rfc_emisor, $rfc_receptor, $total_factura, $uuid) { /* * Mensajes de Respuesta Los mensajes de respuesta que arroja el servicio de consulta de CFDI´s incluyen la descripción del resultado de la operación que corresponden a la siguiente clasificación: Mensajes de Rechazo. N 601: La expresión impresa proporcionada no es válida. Este código de respuesta se presentará cuando la petición de validación no se haya respetado en el formato definido. N 602: Comprobante no encontrado. Este código de respuesta se presentará cuando el UUID del comprobante no se encuentre en la Base de Datos del SAT. Mensajes de Aceptación. S Comprobante obtenido satisfactoriamente. */ // printf("\n clase webservice rfce=$rfc_emisor rfcr=$rfc_receptor total=$total_factura uuid=$uuid"); $web_service = "https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc?wsdl"; try { $hora_envio = date("Y-m-d H:i:s"); $client = new SoapClient($web_service); } catch (Exception $e) { echo 'Excepción capturada: ', $e->getMessage(), "\n"; } $cadena = "re={$rfc_emisor}&rr={$rfc_receptor}&tt={$total_factura}&id={$uuid}"; $param = array('expresionImpresa' => $cadena); $respuesta = $client->Consulta($param); $hora_recepcion = date("Y-m-d H:i:s"); $xml = 0; if ($respuesta->ConsultaResult->Estado == 'Vigente') { $cadena_encriptar = $hora_envio . '│' . $rfc_emisor . '│' . $rfc_receptor . '│' . $total_factura . '│' . $uuid . '│' . $hora_recepcion; $md5 = md5($cadena_encriptar); $xml = $this->create_xml($respuesta, $rfc_emisor, $rfc_receptor, $total_factura, $uuid, $web_service, $hora_envio, $hora_recepcion, $md5); } return $xml; }
public static function ValidateWithWebServiceSAT($rfc_emisor, $rfc_receptor, $total_factura, $uuid) { $web_service = "https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc?wsdl"; $hora_envio = date("Y-m-d H:i:s"); try { $client = new SoapClient($web_service); } catch (Exception $e) { echo '\\n Error de validación en WS Sat: ', $e->getMessage(); return 0; } $cadena = "re={$rfc_emisor}&rr={$rfc_receptor}&tt={$total_factura}&id={$uuid}"; $param = array('expresionImpresa' => $cadena); try { $respuesta = $client->Consulta($param); } catch (Exception $ex) { echo "\n Error en WebService SAT. " . $ex; return 0; } $hora_recepcion = date("Y-m-d H:i:s"); if ($respuesta->ConsultaResult->Estado == 'Vigente') { $cadena_encriptar = $hora_envio . '│' . $rfc_emisor . '│' . $rfc_receptor . '│' . $total_factura . '│' . $uuid . '│' . $hora_recepcion; $md5 = md5($cadena_encriptar); return $xml = Receipt::CreateReceiptXml($respuesta, $rfc_emisor, $rfc_receptor, $total_factura, $uuid, $web_service, $hora_envio, $hora_recepcion, $md5); } else { return 0; } }
public function hacerPeticion() { try { $soapclient = new \SoapClient($this->url); $prm = array('expresionImpresa' => $this->formatoImpreso); $result = $soapclient->Consulta($prm); $satus = $result->ConsultaResult->CodigoEstatus; $estado = $result->ConsultaResult->Estado; $codigo = explode('-', $satus)[0]; if (str_contains($codigo, 'S')) { $archivo = Archivos::where('uuid', '=', $this->uuid)->first(); $archivo->validado = true; if ($archivo->status != $estado) { $this->canceladaRecientemente = true; } $archivo->status = $estado; $archivo->fecha_checado = Carbon::now(); $archivo->save(); $this->estatus = $satus; } return serialize($result); } catch (\Exception $e) { return null; } }
function valida_en_sat() { global $data; error_reporting(E_ALL & ~(E_STRICT | E_NOTICE | E_WARNING | E_DEPRECATED)); $url = "https://consultaqr.facturaelectronica.sat.gob.mx/consultacfdiservice.svc?wsdl"; $soapclient = new SoapClient($url); $rfc_emisor = utf8_encode($data['rfc']); $rfc_receptor = utf8_encode($data['rfc_receptor']); $impo = (double) $data['total']; $impo = sprintf("%.6f", $impo); $impo = str_pad($impo, 17, "0", STR_PAD_LEFT); $uuid = strtoupper($data['uuid']); $factura = "?re={$rfc_emisor}&rr={$rfc_receptor}&tt={$impo}&id={$uuid}"; echo "<h3>{$factura}</h3>"; $prm = array('expresionImpresa' => $factura); $buscar = $soapclient->Consulta($prm); echo "<h3>El portal del SAT reporta</h3>"; echo "El codigo: " . $buscar->ConsultaResult->CodigoEstatus . "<br>"; echo "El estado: " . $buscar->ConsultaResult->Estado . "<br>"; }
<?php require_once "lib/nusoap.php"; try { $client = new SoapClient("https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc?wsdl"); } catch (Exception $e) { echo 'Excepción capturada: ', $e->getMessage(), "\n"; } $rfc_emisor_ = 'AIC911114399'; $rfc_emisor = str_replace("&", "&", $rfc_emisor_); $rfc_receptor_ = 'HGP1307014D5'; $rfc_receptor = str_replace("&", "&", $rfc_receptor_); $total_factura = '163560'; $uuid = 'C09124CA-1FBC-46C3-A36E-B4F7CE40F23C'; $cadena = "re={$rfc_emisor}&rr={$rfc_receptor}&tt={$total_factura}&id={$uuid}"; $param = array('expresionImpresa' => $cadena); $valores = $client->Consulta($param); print_r(var_dump($valores)); echo "El codigo: " . $valores->ConsultaResult->CodigoEstatus . "<br>"; echo "El estado: " . $valores->ConsultaResult->Estado . "<br>"; // }}} Valida Sello // {{{ Valida este XML en el servidor del SAT // ftp://ftp2.sat.gob.mx/asistencia_servicio_ftp/publicaciones/cfdi/WS_ConsultaCFDI.pdf
function validarSAT($destination, $fileXML) { $filename = $fileXML['name']; //Emisor $rfc_emisor = getVariableXML('//cfdi:Comprobante//cfdi:Emisor', 'rfc', $destination); //Receptor $rfc_receptor = getVariableXML('//cfdi:Comprobante//cfdi:Receptor', 'rfc', $destination); //Total $total = getVariableXML('//cfdi:Comprobante', 'total', $destination); //UUID $id = getVariableXML('//t:TimbreFiscalDigital', 'UUID', $destination); //folio $folio = getVariableXML('//cfdi:Comprobante', 'folio', $destination); //Serie $serie = getVariableXML('//cfdi:Comprobante', 'serie', $destination); //Subtotal $subtotal = getVariableXML('//cfdi:Comprobante', 'subTotal', $destination); //Total $total = getVariableXML('//cfdi:Comprobante', 'total', $destination); //Impuestos $impuestos = getVariableXML('//cfdi:Comprobante//cfdi:Impuestos', 'totalImpuestosTrasladados', $destination); //Tasa $tasa = getVariableXML('//cfdi:Comprobante//cfdi:Impuestos//cfdi:Traslados//cfdi:Traslado', 'tasa', $destination); //Retenciones $retenciones = getVariableXML('//cfdi:Comprobante//cfdi:Impuestos//cfdi:Retenciones//cfdi:Retencion', 'importe', $destination); //Path $path = path(); $finalPath = $path . $rfc_emisor . '/'; $cadena = 're=' . $rfc_emisor; $cadena .= '&rr=' . $rfc_receptor; $cadena .= '&tt=' . $total; $cadena .= '&id=' . $id; $param = array('expresionImpresa' => $cadena); try { $client = new SoapClient('https://consultaqr.facturaelectronica.sat.gob.mx/ConsultaCFDIService.svc?wsdl'); } catch (Exception $e) { $error = $e->getMessage(); echo 'Excepción capturada: ' . $error; } $valores = $client->Consulta($param); $success = moveXML($destination, $finalPath, $filename); $response = array('codigo' => $valores->ConsultaResult->CodigoEstatus, 'estado' => $valores->ConsultaResult->Estado, 'error' => 'no', 'referencia' => '' . $serie . $folio . '', 'subtotal' => '' . $subtotal . '', 'total' => '' . $total . '', 'impuestos' => '' . $impuestos . '', 'tasa' => '' . $tasa[0] . '', 'ruta' => '' . $success . '', 'retenciones' => '' . $retenciones . '', 'uuid' => '' . $id . ''); return json_encode($response); }