Closed dleo closed 2 years ago
'Content-Type: multipart/form-data'
¿En qué caso esto se requiere? Nosotros en la versión oficial no hemos visto el error mencionado o que sea necesario el cambio indicado.
for ($i=0; $i<=$retry; $i++) {
En este caso, es incorrecto un for <=
si parte en 0. Ya que el objetivo de retry
es hacer tanto envíos como retry
indica. En realidad el nombre retry
son los envíos, y no los reintentos, está mal el nombre de la variable. Si retry = 0
, se deben efectivamente hacer 0 envíos (ese es el comportamiento esperado).
Revisando la documentación oficial del SII, encontramos que es requerido, hemos visto algunas respuestas de parte del SII, donde hace falta el archivo.
Este es un ejemplo según el SII:
POST /cgi_dte/UPL/DTEUpload HTTP/1.0^M
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/vnd.ms-powerpoint, application/ms-excel,
application/msword, */*^M
Referer: {URL que referencia a upload Ej.
http://empresaabc.cl/test.html}^M
Accept-Language: es-cl^M
Content-Type: multipart/form-data: boundary={boundary data: Ej. ------
---------------------7d23e2a11301c4}^M
Accept-Encoding: gzip, deflate^M
User-Agent: Mozilla/4.0 (compatible; PROG 1.0; Windows NT 5.0; YComp
5.0.2.4)^M
Host: {Host Id. Ej: https://maullin.sii.cl}^M
Content-Length: {largo total de mensaje sin Req. Header. Ej.: 10240}^M
Connection: Keep-Alive^M
Cache-Control: no-cache^M
Cookie: TOKEN={Entregado por Autenticación. Ej.: YZD0II2ApZjlM}^M
El cambio no corresponde
Al existir adjuntos en la llamada a curl, automáticamente se añade el Content-Type
a la cabecera de la solicitud. De hecho, ese campo, es obligatorio por el boundary
que se debe incluir al enviar archivos adjuntos y lo añade curl automáticamente.
Este es un ejemplo de las cabeceras enviadas con la versión actual del código. Se puede ver que se añade automáticamente el Content-Type
antes de hacer la consulta vía curl:
POST /cgi_dte/UPL/DTEUpload HTTP/1.1
Host: maullin.sii.cl
Accept: */*
User-Agent: Mozilla/4.0 (compatible; PROG 1.0; LibreDTE)
Referer: https://libredte.cl
Cookie: TOKEN=TOKEN-SII
Content-Length: 11267
Content-Type: multipart/form-data; boundary=------------------------5f27ce8700aebb79
Expect: 100-continue
Acá detalles para ver las cabeceras enviadas https://stackoverflow.com/questions/3164405/show-curl-post-request-headers-is-there-a-way-to-do-this
Este cambio corrige el problema de respuesta de SII al envio de DTE con error por falta del archivo. Además se corrige el envio duplicado.