absabbath/factura-digital

用于消耗facturadigital.com.mx api的包

v1.2 2020-04-17 21:56 UTC

This package is not auto-updated.

Last update: 2024-09-29 05:29:44 UTC


README

absabbath/factura-digital 是一个用于在 Laravel 项目中消耗 https://www.facturadigital.com.mx/ api 的库

安装

  • 在终端中运行以下命令
$ composer require absabbath/factura-digital
  • 在 config/app.php 文件中将以下行添加到 provider 数组中

Absabbath\FacturaDigital\FacturaDigitalProvider::class,

  • 在 config/app.php 文件中将以下行添加到 aliases 数组中

'FacturaDigital' => Absabbath\FacturaDigital\Facades\Factura::class,

如何使用此库

  • 配置发件人凭证和制度
$emisor = \FacturaDigital::emisor()
	->setRegimenFiscal('612')
	->setUser('demo33')
    ->setPassword('demo')
	->getData();
  • 查询信贷
$creditos =  \FacturaDigital::creditos()
  • 返回
{
    "mensaje":  "11565 creditos disponibles.",
    "creditos":  11565,
    "codigo":  200
}
  • 配置收件人信息
$receptor = FacturaDigital::receptor()
	->setRfc('NDI120326HF5')
	->setNombre('Novatech Digital SA de CV')
	//->setNumRegIdTrib('')
	->setUsoCFDI('G03')
	->setCalle('Palmas')
	->setNoExt('129')
	->setColonia('Centro')
	->setMunicipio('Guadalupe')
	->setEstado('Nuevo León')
	->setPais('Mexico')
	->setCodigoPostal('98000')
	->getData();
  • 登记发票的概念
$concepto = \FacturaDigital::concepto()
            ->setClaveProdServ('01010101') // Agregar clave sat en catalogo productos
            ->setNoIdentificacion('1')  // Id interno
            ->setCantidad(5) // Cantidad a facturar
            ->setClaveUnidad('LTR') // Clave del SAT
            ->setUnidad('Litro') // Descripcion unidad
            ->setDescripcion('Descripcion/nombre del producto')
            ->setValorUnitario(30); // Costo por unidad
  • 为每个概念创建和添加税费
$impuestos = []; // Recolecta la informacion de todos los impuestos
$impuesto_iva = \FacturaDigital::conceptoImpuesto()
            ->setBase(30) // Base gravable
            ->setImpuesto('002')
            ->setTipoFactor('Tasa')
            ->setTasaOCuota(0.16000)
            ->setImporte(30 * 0.16000) // Base gravable X tasaocuota
            ->getData();
  • 将税费添加到前一个概念和税费列表中
array_push($impuestos, $impuesto_iva);
$concepto->addTraslado($impuesto_iva);
  • 将概念列表添加到待开发列表中并获取总计
$lista = \FacturaDigital::listaConceptos();
$lista->addConcepto($concepto->getData());
  • 获取总计(税费和免税概念)
$totales = $lista->getTotalConceptos();
// retorna ['totalConceptos', 'totalImpuestos']
  • 登记发票的通用数据
$factura = FacturaDigital::setSerie('F')
	->setFolio('71278') // Folio Interno
	->setFecha('AUTO')
	->setFormaPago('01')// Catalogo SAT
	->setCondicionesDePago('Pago de contado')
	->setMoneda('MXN')
	->setTipoCambio('1')
	->setTipoDeComprobante('I')
	->setMetodoPago('PUE')
	->setLugarExpedicion('67150') //C.P.
	->setLeyendaFolio('Factura')
	->setSubTotal($totales['totalConceptos'])
	//->setDescuento('30.00') // Descuento opcional
	->setTotal($totales['totalConceptos'] + $totales['totalImpuestos'] );
  • 添加税费列表
$impuestoFinal = \FacturaDigital::impuesto()
            ->setTraslados($impuestos);;

将所有数据添加到发票中

$factura->setEmisor($emisor);
$factura->setReceptor($receptor);
$factura->setConceptos($lista->getData());
$factura->setImpuestos($impuestoFinal->getData());

生成发票

$factura_final = $factura->enviar();
  • 返回以下数组
{
  "mensaje":  "Timbrado exitoso",   
  "codigo":  200,  
  "cfdi":
      {
       "NoCertificado":  "",
       "UUID":  "",
       "FechaTimbrado":  "2018-06-28T16:33:27",
       "RfcProvCertif":  "FEL100622S88",
       "SelloCFD":"",
       "NoCertificadoSAT":  "20001000000300022323",
       "SelloSAT":  "",
       "CadenaOrigTFD":  "",
       "CadenaQR":  "",
       "XmlBase64":  "",
       "PDF":  "",
       "XML":  ""
      }
}

通过电子邮件发送发票

$enviar = $factura->enviarCorreo($uuid, 'tucorreo@dominio.com', 'tu mensaje adicional');
  • 这返回一个布尔值
if ($enviar) {
	return "Factura enviada por correo";
} else {
	return "Errorsillo";
}
  • 为了取消 CFDI
$cancela = $factura->cancelarCFDI('UUID');

在 Laravel >= 5.1 版本中进行了测试