馃攼 Obtener la Semilla (Seed) del SII usando Bash y Curl
En Chile, uno de los pasos fundamentales para firmar documentos electr贸nicos con el SII es obtener la "semilla" (seed). Este valor es necesario para solicitar el token de autenticaci贸n, el cual luego se usa para enviar documentos tributarios (DTE).
En esta entrada te muestro c贸mo invocar el m茅todo SOAP getSeed
del SII directamente desde un script en Bash, usando herramientas simples como curl
y sed
.
馃Ь El script completo:
--
#!/bin/bash
# Endpoint del servicio
URL="https://maullin.sii.cl/DTEWS/CrSeed.jws"
# SOAP Body del m茅todo getSeed
SOAP_REQUEST='<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:ws="http://www.sii.cl/SiiDte">
<soapenv:Header/>
<soapenv:Body>
<ws:getSeed/>
</soapenv:Body>
</soapenv:Envelope>'
# Enviar la solicitud con curl
RESPONSE=$(curl -s -X POST "$URL" \
-H "Content-Type: text/xml; charset=utf-8" \
-H "SOAPAction: getSeed" \
--data "$SOAP_REQUEST")
# Decodificar la respuesta XML escapada
DECODED_XML=$(echo "$RESPONSE" | grep getSeedReturn | \
sed 's/.*<ns1:getSeedReturn[^>]*>\(.*\)<\/ns1:getSeedReturn>.*/\1/' | \
sed -e 's/</</g' -e 's/>/>/g' -e 's/"/"/g' -e 's/&/\&/g')
# Extraer la semilla desde el XML original (opcional)
SEMILLA=$(echo "$RESPONSE" | grep getSeedReturn | sed 's/.*<SEMILLA>\(.*\)<\/SEMILLA>.*/\1/')
# Mostrar por pantalla y guardar
echo "馃攽 Semilla: $SEMILLA"
echo "$DECODED_XML" > respuesta_sii.xml
--
馃 ¿Qu茅 hace este script?
Define el endpoint SOAP del SII:
https://maullin.sii.cl/DTEWS/CrSeed.jws
Construye la solicitud SOAP para el m茅todo getSeed
.
Env铆a la solicitud con curl
como un POST
, especificando cabeceras necesarias.
Captura la respuesta, que viene en formato XML escapado (usando entidades como <
y >
).
Decodifica el XML interno para obtener un resultado legible.
Extrae la semilla (<SEMILLA>
) usando expresiones regulares.
Guarda el XML decodificado en un archivo llamado respuesta_sii.xml
.
馃挕 ¿Para qu茅 sirve la semilla?
Esta semilla es el primer paso del flujo de autenticaci贸n. Debes firmarla digitalmente con tu certificado y enviarla al servicio getTokenFromSeed
. Si todo va bien, recibir谩s un token v谩lido por un tiempo limitado, que te permite enviar DTEs u otros documentos electr贸nicos al SII.
馃敡 Requisitos
Linux o cualquier sistema que tenga Bash.
curl
y sed
instalados.
Conexi贸n a Internet.
Certificado digital (para el paso siguiente, si firmas la semilla).
✍️ Pr贸ximo paso
En una pr贸xima entrada, veremos c贸mo firmar esta semilla en XML con OpenSSL o xmlsec1
, y luego usarla para obtener el token con getTokenFromSeed
.
¿Tienes dudas o quieres automatizar el env铆o completo? D茅jalo en los comentarios o comparte esta entrada con quien le pueda servir, especialmente si trabaja con sistemas legados como VB6, FoxPro o shell scripts.
Comentarios
Publicar un comentario