ralego/laravel-timbox

使用 timbox 对 xml 进行盖章,适用于 Laravel

v1.0.0 2019-05-15 23:58 UTC

This package is auto-updated.

Last update: 2024-09-25 09:06:27 UTC


README

此包可以帮助您以简单的方式使用Timbox的所有服务。

安装

此包可用于 Laravel 5.5 或更高版本。

通过 composer 安装此包

composer require ralego/laravel-timbox

使用

盖章

在您需要盖章的类中添加 Ralego\Timbox\Traits\Timbrado trait

use Ralego\Timbox\Traits\Timbrado;

class HomeController extends Controller
{
    use Timbrado,

    // ...
}

示例

use Illuminate\Http\Request;
use Ralego\Timbox\Traits\Timbrado;

class HomeController extends Controller
{
    use Timbrado;

    public function timbrar()
    {
        // Cargamos el XML de prueba
        $xml = file_get_contents('ejemplo_cfdi33.xml');
        // Usuario y contraseña de la cuenta de timbox
        $credenciales = (object)[
            'username'  => 'AAA010101000',
            'password'  => 'h6584D56fVdBbSmmnB'
        ];
        // Cargamos la llave del SAT en formato PEM
        $key = file_get_contents('CSD01_AAA010101AAA.key.pem');
        // Sellamos y actualizamos la hora del cfdi versión 3.3.
        $xml = $this->sellar($xml, $key);
        // Timbramos el documento
        $resultado = $this->timbrar($credenciales, $xml);
        // Si ocurre algun error retornamos el mensaje con status 422
        if(!$resultado->success)
            return response($resultado->message, 422);
        
        $xml_timbrado = $resultado->xml;
        return $xml_timbrado;     
    }
}

取消

在您需要取消的类中添加 Ralego\Timbox\Traits\Cancelacion trait

use Ralego\Timbox\Traits\Cancelacion;

class HomeController extends Controller
{
    use Cancelacion,

    // ...
}

示例

use Illuminate\Http\Request;
use Ralego\Timbox\Traits\Cancelacion;

class HomeController extends Controller
{
    use Cancelacion;

    public function cancelar()
    {
        // Usuario y contraseña de la cuenta de timbox
        $credenciales = (object)[
            'username'  => 'AAA010101000',
            'password'  => 'h6584D56fVdBbSmmnB'
        ];
        // Cargamos el certificado y la llave del SAT en formato PEM
        $cer = file_get_contents('CSD01_AAA010101AAA.cer.pem');
        $key = file_get_contents('CSD01_AAA010101AAA.key.pem');
        // Colocamos los cfdis a cancelar
        $uuids = [
            [
                "uuid"          => 'EE728194-B356-4B84-9349-254F532A3E01',
                "rfc_receptor"  => 'IAD121214B34',
                "total"         => '1751.60'
            ]// ... n folio a cancelar           
        ];
        $resultado = $this->cancelar($credenciales, 'AAA010101AAA',$cer, $key, $uuids);
        // Si ocurre algun error retornamos el mensaje con status 422
        if(!$resultado->success)
            return response($resultado->message, 422);
        
        $xml_timbrado = $resultado->xml;
        return $xml_timbrado;     
    }
}

查询

use Ralego\Timbox\Traits\Status;

class HomeController extends Controller
{
    use Status,

    // ...
}

获取 cfdi 状态的示例

use Illuminate\Http\Request;
use Ralego\Timbox\Traits\Status;

class HomeController extends Controller
{
    use Status;

    public function estatus()
    {
        // Usuario y contraseña de la cuenta de timbox
        $credenciales = (object)[
            'username'  => 'AAA010101000',
            'password'  => 'h6584D56fVdBbSmmnB'
        ];
        // Colocamos el uuid, rfc_emisor, rfc_receptor y el total del cfdi
        $resultado = $this->status($credenciales, 'EE728194-B356-4B84-9349-254F532A3E01', 'AAA010101AAA','IAD121214B34', '1751.60');
        // Si ocurre algun error retornamos el mensaje con status 422
        if(!$resultado->success)
            return response($resultado->message, 422);
        
        $estatus = $resultado->estado;
        return $estatus;     
    }
}

查询待处理请求的示例

use Illuminate\Http\Request;
use Ralego\Timbox\Traits\Status;

class HomeController extends Controller
{
    use Status;

    public function pendientes()
    {
        // Usuario y contraseña de la cuenta de timbox
        $credenciales = (object)[
            'username'  => 'AAA010101000',
            'password'  => 'h6584D56fVdBbSmmnB'
        ];
         // Cargamos el certificado y la llave del SAT en formato PEM
        $cer = file_get_contents('CSD01_AAA010101AAA.cer.pem');
        $key = file_get_contents('CSD01_AAA010101AAA.key.pem');
        // Colocamos al final el rfc_receptor
        $result = $this->pendientes($credenciales, $cer, $key, 'AAA010101AAA');
        // Si ocurre algun error retornamos el mensaje con status 422
        if(!$resultado->success)
            return response($resultado->message, 422);
        
        $uuids_pendientes = $resultado->uuids;
        return $uuids_pendientes;     
    }
}

查询与 cfdi 相关的文档的示例

use Illuminate\Http\Request;
use Ralego\Timbox\Traits\Status;

class HomeController extends Controller
{
    use Status;

    public function relacionados()
    {
        // Usuario y contraseña de la cuenta de timbox
        $credenciales = (object)[
            'username'  => 'AAA010101000',
            'password'  => 'h6584D56fVdBbSmmnB'
        ];
         // Cargamos el certificado y la llave del SAT en formato PEM
        $cer = file_get_contents('CSD01_AAA010101AAA.cer.pem');
        $key = file_get_contents('CSD01_AAA010101AAA.key.pem');
        // Colocamos al final el rfc_receptor y el uuid
        $result = $this->relacionados($credenciales, $cer, $key, 'AAA010101AAA','EE728194-B356-4B84-9349-254F532A3E01');
        // Si ocurre algun error retornamos el mensaje con status 422
        if(!$resultado->success)
            return response($resultado->message, 422);
        
        $uuids_relacionados = $resultado;
        return $uuids_relacionados;     
    }
}

执行取消请求的接受/拒绝请求的示例

use Illuminate\Http\Request;
use Ralego\Timbox\Traits\Status;

class HomeController extends Controller
{
    use Status;

    public function responder()
    {
        // Usuario y contraseña de la cuenta de timbox
        $credenciales = (object)[
            'username'  => 'AAA010101000',
            'password'  => 'h6584D56fVdBbSmmnB'
        ];
         // Cargamos el certificado y la llave del SAT en formato PEM
        $cer = file_get_contents('CSD01_AAA010101AAA.cer.pem');
        $key = file_get_contents('CSD01_AAA010101AAA.key.pem');
        // Colocamos el rfc del receptor
        $respuestas = [
            [
                "uuid" => 'EE728194-B356-4B84-9349-254F532A3E01',
                "rfc_emisor" => 'AAA010101AAA',
                "total" => '1751.60',
                "respuesta" => 'A'
            ] // ... n folios_respuestas a procesar
        ];
        $resultado = $this->responder($credenciales, $cer, $key, 'IAD121214B34', $respuestas);
        // Si ocurre algun error retornamos el mensaje con status 422
        if(!$resultado->success)
            return response($resultado->message, 422);
        
        $folios = $resultado->folios;
        return $folios;     
    }
}

支持

有关 timbox Web 服务返回的信息的任何疑问,您可以在其文档中进行咨询。