- Instalar docker
En este caso, para protegernos un poco y tener multi-usuarios lo ideal es crear keystores por usuario. Agregue una librería ayuda a crear el PFX.
Solo necesitas correr $ ./create-p12 -k FIEL.key -c FIEL.cer -p passwordFiel -r RFC
. Esto creara un archivo <RFC>.p12
en ./kestore/<RFC>.p12
.
Por ahora creamos en el file system (proteger) el keystore (.p12)
Por ahora solo contiene una tabla sat_client
con id, rfc, password_plain, kestore
donde:
- id: Se auto-genera
- rfc: El RFC del cliente que pide sus CFDI
- password_plain: El password del keystore (creado en el paso de creación de PFX)
- keystore: El archivo creado por la utilidad
create-p12
(Por default se guarda como./kestore/<RFC>.p12
)
Usa docker, te hara la vida sencilla.
- Docker necesita estar instalado en tu máquina.
- Corre
mvn -U clean install
- Si el setup está completo, corre
docker-compose up --build
. Esto creara una base de datos en docker y creara las tablas necesarias
Una vez, ya se levantaron los servicios. Ya estás listo para empezar.
curl -X "POST" "http://localhost:8080/v1/persona-fisica/upload-key" \
-H 'Content-Type: multipart/form-data; charset=utf-8;' \
-F "file-key='MultiPart KEY'" \
-F "file-cert='MultiPart CERT'" \
-F "password=FIEL_PASS" \
-F "rfc=RFC_CLIENT"
{"message":"Keystore created for RFC_CLIENT"}
En este método (endpoint). Hacemos en el back todas las necesarias interacciones con el SAT. Si responde inmediatamente obtendrás las facturas, si no un menaje: READY, ACCEPTED o REJECTED.
EL header con el token no es necesario el backend administra el manejo de ellos y la peticion de nuevos.
curl -X "POST" "http://localhost:8080/v1/persona-fisica/download-received" \
-H 'Content-Type: application/json' \
-d $'{
"rfc": "RFC_CLIENT",
"dateEnd": "2021-10-09T04:09:12Z",
"dateStart": "2021-08-09T04:09:15Z"
}'
{"message":null,"satState":"ACCEPTED","invoices":[]}
Si el valor de satState
es ACCEPTED
intentante de nuevo con los mismos parametros del request. Esto se guardo en la DB y de forma automatica buscara el limite del SAT (cerca de 10 veces) para intentar descargar.
Por default este servicio wvit mas peticiones al SAT si se ha llamado mas de 5 veces en un rango de 4 horas. Cuando eso pasa tendras una respuesta similar a:
{"message":"Backing off validation request. Wait time: 217 minutes","satState":"ACCEPTED","invoices":[]}
La idea de esto es que la comunidad lo haga robusto. No temas en crear Issues y colaborar!
Pasa a revisar nuesta licencia Open Source (GNU General Public License): GNU GPL