importaremx / facturapuntocom
factura.com API 客户端
Requires
- guzzlehttp/guzzle: >=6
- illuminate/support: >=5
- laravel/framework: >=5
Requires (Dev)
- orchestra/testbench: ~5|~6
- phpunit/phpunit: ~9.0
This package is auto-updated.
Last update: 2024-09-17 20:05:28 UTC
README
[![Packagist 上的最新版本][ico-version]][link-packagist] [![总下载量][ico-downloads]][link-downloads] [![构建状态][ico-travis]][link-travis] [![StyleCI][ico-styleci]][link-styleci]
factura.com API 客户端
安装
通过 Composer
$ composer require importaremx/facturapuntocom
配置
在 config/app.php 中添加服务提供者
Importaremx\Facturapuntocom\FacturapuntocomServiceProvider::class,
要修改默认包的配置,请在 PHP 控制台中运行以下命令
php artisan vendor:publish --provider='Importaremx\Facturapuntocom\FacturapuntocomServiceProvider'
将发布以下文件:XXXXXXXX_create_cfdi_tables.php 在迁移文件夹 facturapuntocom.php 中,位于 'config' 文件夹
###配置变量
facturapuntocom.php 文件包含以下变量
'api_key',默认值为空字符串,此变量应包含 factura.com 账户的 API 密钥,应在 .env 文件中添加变量 FACTURACOM_API_KEY
'secret_key',默认值为空字符串,此变量应包含 factura.com 账户的秘密密钥,应在 .env 文件中添加变量 FACTURACOM_SECRET_KEY
'fplugin',默认值为 '9d4095c8f7ed5785cb14c0e3b033eeb8252416ed',此变量是由 factura.com 确定的一个常量,如果将来该值发生变化,则可以使用 .env 文件中的变量 FACTURACOM_FPLUGIN 进行修改
'is_sandbox',默认值为 true,此变量指示包是否在 factura.com 的测试沙箱中运行,应在 .env 文件中添加变量 FACTURACOM_SANDBOX
'serie_default',默认值为 1,此变量指示将创建哪些 CFDI 的序列,此值应从 factura.com 账户获取,应在 .env 文件中添加变量 FACTURACOM_SERIE_DEFAULT
'path_pdf',默认值为 "cfdi_files/pdf",此变量指示存储在 storage 文件夹中 PDF CFDI 文件的存储路径,应在 .env 文件中添加变量 FACTURACOM_PATH_PDF
'path_xml',默认值为 "cfdi_files/xml",此变量指示存储在 storage 文件夹中 XML CFDI 文件的存储路径,应在 .env 文件中添加变量 FACTURACOM_PATH_XML
'queue_connection' 变量定义了批量开具发票的控制器的连接,如果不会使用与 Laravel 默认配置不同的驱动程序,则此变量应留空
'queue_name' 变量定义了批量开具发票的工作将发布到的队列名称,如果不会使用与 Laravel 默认配置不同的驱动程序,则此变量应留空 ### 数据库中的表
安装后要运行包的迁移,必须执行以下命令。
php artisan migrate
(如果需要,可以指定由包发布的文件路径以仅迁移此包的表)
使用方法
Este paquete provee dos traits y el helper completo de factura.com
特质
IsTaxPayer
此特质为作为系统内纳税人工作的模型提供了方法。
必须在所需模型中添加以下行
use \Importaremx\Facturapuntocom\Traits\isTaxPayer;
要修改特质的默认值,可以在模型中添加以下函数
public function __construct(array $attributes = array())
{
parent::__construct($attributes);
//AQUI AGREGAR LOS VALORES MODIFICADOS DEL TRAIT
//POR EJEMPLO:
/*La variable $rfc_field indica qué atributo del modelo será tomado como RFC del contribuyente, por default tiene el valor 'rfc', pero lo puede modificar como se muestra en la siguiente linea*/
$this->rfc_field = "rfc";
/*Para hacer uso de la relacion "cfdis", que obtiene todos los CFDIS generados para este usuario, se debe configurar la relacion polimorfica,
ejemplo*/
/*Un User tiene una relacion 1 a muchos con el modelo Abonos, y cada abono a su vez tiene un cfdi. para indicar esta relacion se haría como se muestra en las siguientes lineas:*/
/*(Esta variable indica el modelo de donde se obtendran los CFDI, es necesario que este modelo use el trait HasCfdi que se explicará mas adelante)*/
$this->relatable_type = "App\Models\Abono";
/*(Esta variable se refiere a la columna pivote de la tabla abono)*/
$this->relatable_column = "user_id";
}
为了将模型数据映射到 factura.com,在模型中使用以下函数
protected function dataMapping(){
/*Mapeo de datos del modelo
El siguiente array contendrá un array clave valor con los atributos necesarios para crear un contribuyente en factura.com seguido del valor, funcion anonima, o atributo de donde el modelo proveerá dicha información*/
$this->taxpayer_mapping = [
"nombre" => $this->name,
"apellidos" => "apellidos",
"email" => "otrocorreo@servidor.com",
"email2" => function(){
return "funcion@anonima.com";
},
"email3" => "otroemail3@email.com",
"telefono" => "9612547499",
"razons" => "Desarrollador ImportareMX TESTER",
"rfc" => "siag880723hi9",
"calle" => "Diagonal peje de oro",
"numero_exterior" => 5,
"numero_interior" => "",
"codpos" => 29230,
"colonia" => "Cuxtitali",
"estado" => "Chiapas",
"ciudad" => "San Cristóbal de las Casas"
];
}
此特质为模型提供了以下方法
createOrUpdateTaxPayer : 在 factura.com 中创建纳税人并将其分配给此模型,一旦配置了特质,就可以通过以下方式调用它
$model = \App\Model\SomeModel::first(); $model->createOrUpdateTaxPayer();
关联cfdis():包含与该模型相关联的所有cfdis,需要配置上述提到的多态关系。
关联taxpayer():包含与模型相关联的SAT纳税人的数据。
HasCfdi
此trait允许向模型添加创建与模型相关联的cfdis所需的必要方法。
必须在所需模型中添加以下行
use \Importaremx\Facturapuntocom\Traits\HasCfdi;
要修改特质的默认值,可以在模型中添加以下函数
public function dataMapping(array $attributes = array())
{
/*Mapeo de datos del modelo
El siguiente array contendrá un array clave valor con los atributos necesarios para crear un cfdi en factura.com seguido del valor, funcion anonima, o atributo de donde el modelo proveerá dicha información*/
$this->cfdi_mapping = [
//El uid del receptor debe ser un valor agregado en la tabla de taxpayer creado por el paquete
"Receptor" => "60c127b3ec916",
"ClaveProdServ" => "01010101",
"ValorUnitario" => 100,
"Descripcion" => "Fctura de prueba, descirpción de prueba",
"UsoCFDI" => "G03",
"FormaPago" => "01",
"MetodoPago" => "PUE",
"CondicionesDePago" => "Condiciones de pago de pruebas",
];
}
此特质为模型提供了以下方法
createCfdi()
如上所述配置了trait后,只需在模型中执行createCfdi()方法即可创建并保存cfdis到数据库中。
模型Importaremx\Facturapuntocom\Models\Cfdi包含管理cfdis所需的方法。
downloadPdf = 下载pdf,将其存储在storage文件夹中,并保存位置到数据库
downloadXml = 下载xml,将其存储在storage文件夹中,并保存位置到数据库
sendMail = 向注册的纳税人邮箱发送邮件
sendCancelRequest = 请求取消CFDI,有时响应是自动的,但建议使用以下方法检查CFDI在SAT的状态
checkCancelRequestStatus = 检查CFDI取消状态
批量创建CFDI
此包提供了一种批量开票的模型。
\Importaremx\Facturapuntocom\Models\CfdiBatch
期望以下参数
elements:是一个整数数组,包含要生成cfdis的元素ID's;element_class:是生成cfdis的模型类(该类必须使用包中的HasCfdi trait,以确保cfdis可以正确生成)
该模型包含一个名为stats的属性,其中包含数据处理信息。
total_elements:批量中的CFDI总数;total_pending:待生成CFDI总数;total_processed:已处理CFDI总数;percentage_pending:待处理CFDI百分比;percentage_processed:已处理CFDI百分比
该模型包含一个名为finished的属性,指示批量处理是否完成。
注意:批量处理使用作业(Jobs)进行,并继承项目的队列配置。此外,可以在config/facturapuntocom.php文件中配置queue_connection和queue_name变量,以指定cfdibatch使用的队列配置或驱动程序。