Files
ventas_php/classes/pac.class.php

212 lines
5.3 KiB
PHP
Executable File

<?php
class Pac extends Util
{
function GetCfdiFromUUID($user, $pw, $rfc, $uuid, $idComprobante)
{
require_once(DOC_ROOT.'/libs/nusoap.php');
$client = new nusoap_client('https://cfdiws.sedeb2b.com/EdiwinWS/services/CFDi?wsdl', true);
$client->useHTTPPersistentConnection();
$params = array(
'user' => $user,
'password' => $pw,
'rfc' => $rfc,
'uuid' => $uuid
);
//Demo
$empresa = 15;
$response = $client->call('getCfdiFromUUID', $params, 'http://cfdi.service.ediwinws.edicom.com/');
print_r($response);
if($response["faultcode"])
{
return "fault#".$response['detail']['fault']['text'];
}
$data = base64_decode($response["getCfdiFromUUIDReturn"]);
//Save new zip
$file = DOC_ROOT."/xmlRecuperados/".$idComprobante.".zip";
$path = DOC_ROOT."/xmlRecuperados/";
$fh = fopen($file, 'w') or die("can't open file");
$fh = fwrite($fh, $data);
//fclose($fh);
$this->Unzip($path, $file);
return $response;
}
function CancelaCfdi($user, $pw, $rfc, $uuid, $pfx, $pfxPassword)
{
//open zip and encode it
$fh = fopen($pfx, 'r');
$theData = fread($fh, filesize($pfx));
$zipFileEncoded = base64_encode($theData);
fclose($fh);
require_once(DOC_ROOT.'/libs/nusoap.php');
$client = new nusoap_client('https://cfdiws.sedeb2b.com/EdiwinWS/services/CFDi?wsdl', true);
$client->useHTTPPersistentConnection();
$params = array(
'user' => $user,
'password' => $pw,
'rfc' => $rfc,
'uuid' => $uuid,
'pfx' => "$zipFileEncoded",
'pfxPassword' => $pfxPassword
);
$response = $client->call('cancelaCFDi', $params, 'http://cfdi.service.ediwinws.edicom.com/');
//errors
if($response["faultcode"])
{
print_r($response);
return "fault";
}
return $response;
}
function GetCfdi($user, $pw, $zipFile, $path, $newFile, $empresa)
{
//open zip and encode it
$fh = fopen($zipFile, 'r');
$theData = fread($fh, filesize($zipFile));
$zipFileEncoded = base64_encode($theData);
fclose($fh);
require_once(DOC_ROOT.'/libs/nusoap.php');
$client = new nusoap_client('https://cfdiws.sedeb2b.com/EdiwinWS/services/CFDi?wsdl', true);
$client->useHTTPPersistentConnection();
$params = array(
'user' => $user,
'password' => $pw,
'file' => "$zipFileEncoded"
);
//Demo
$empresa = 15;
if($empresa == 150)
{
$response = $client->call('getCfdiTest', $params, 'http://cfdi.service.ediwinws.edicom.com/');
if($response["faultcode"])
{
return "fault#".$response['detail']['fault']['text'];
}
$data = base64_decode($response["getCfdiTestReturn"]);
}
else
{
$response = $client->call('getCfdi', $params, 'http://cfdi.service.ediwinws.edicom.com/');
if($response["faultcode"])
{
return "fault#".$response['detail']['fault']['text'];
}
$data = base64_decode($response["getCfdiReturn"]);
}
//Save new zip
$fh = fopen($newFile, 'w') or die("can't open file");
$fh = fwrite($fh, $data);
//fclose($fh);
$this->Unzip($path, $newFile);
return $response;
}
function GetTimbreCfdi($user, $pw, $zipFile, $path, $newFile, $empresa)
{
//open zip and encode it
$fh = fopen($zipFile, 'r');
$theData = fread($fh, filesize($zipFile));
$zipFileEncoded = base64_encode($theData);
fclose($fh);
require_once(DOC_ROOT.'/libs/nusoap.php');
$client = new nusoap_client('https://cfdiws.sedeb2b.com/EdiwinWS/services/CFDi?wsdl', true);
$client->useHTTPPersistentConnection();
$params = array(
'user' => $user,
'password' => $pw,
'file' => "$zipFileEncoded"
);
$empresa = 15;
if($empresa == 150)
{
$response = $client->call('getTimbreCfdiTest', $params, 'http://cfdi.service.ediwinws.edicom.com/');
$data = base64_decode($response["getTimbreCfdiTestReturn"]);
}
else
{
$response = $client->call('getTimbreCfdi', $params, 'http://cfdi.service.ediwinws.edicom.com/');
$data = base64_decode($response["getTimbreCfdiReturn"]);
}
//save new zip
$fh = fopen($newFile, 'w') or die("can't open file");
$fh = fwrite($fh, $data);
//fclose($fh);
$this->Unzip($path."/timbres/", $newFile);
return $newFile;
}
function ParseTimbre($file)
{
$fh = fopen($file, 'r');
$theData = fread($fh, filesize($file));
//$theData = str_replace("<", "#", $theData);
//$theData = str_replace(">", "#", $theData);
//echo $theData;
$pos = strrpos($theData, "<tfd:TimbreFiscalDigital");
$theData = substr($theData, $pos);
$pos = strrpos($theData, "</cfdi:Complemento>");
$theData = substr($theData, 0, $pos);
$xml = @simplexml_load_string($theData);
$data = array();
foreach($xml->attributes() as $key => $attribute)
{
$data[$key] = (string)$attribute;
}
return $data;
}
function GenerateCadenaOriginalTimbre($data)
{
$cadenaOriginal = "||";
$cadenaOriginal .= $this->Util()->CadenaOriginalVariableFormat($data["version"]);
$cadenaOriginal .= $this->Util()->CadenaOriginalVariableFormat($data["UUID"]);
$cadenaOriginal .= $this->Util()->CadenaOriginalVariableFormat($data["FechaTimbrado"]);
$cadenaOriginal .= $this->Util()->CadenaOriginalVariableFormat($data["selloCFD"]);
$cadenaOriginal .= $this->Util()->CadenaOriginalVariableFormat($data["noCertificadoSAT"]);
$cadenaOriginal .= "|";
$cadena = utf8_encode($cadenaOriginal);
$data["original"] = $cadena;
$data["sha1"] = sha1($cadena);
return $data;
}
}
?>