🚀Ir a producción
Si necesitas que un cliente te delegue un web service debes seguir al tutorial Aceptar delegación de web service
Paso 1 - Obtener access_token para producción
Podes obtener tu access_token
en:
Paso 2 - Obtener certificado de producción
// CUIT al cual le queremos generar el certificado
const taxId = 201111111111;
// Usuario para ingresar a AFIP.
// Para la mayoria es el mismo CUIT, pero al administrar
// una sociedad el CUIT con el que se ingresa es el del administrador
// de la sociedad.
const username = '201111111111';
// Contraseña para ingresar a AFIP.
const password = 'contraseñadeafip';
// Alias para el certificado (Nombre para reconocerlo en AFIP)
// un alias puede tener muchos certificados, si estas renovando
// un certificado pordes utilizar le mismo alias
const alias = 'afipsdk';
// Creamos una instancia de la libreria
const afip = new Afip({
CUIT: taxId,
access_token: 'access_token obtenido en https://app.afipsdk.com/'
production: true
});
// Creamos el certificado (¡Paciencia! Esto toma unos cuantos segundos)
const res = await afip.CreateCert(username, password, alias);
// Mostramos el certificado por pantalla
console.log(res.cert);
// Mostramos la key por pantalla
console.log(res.key);
// ATENCION! Recorda guardar el cert y key ya que
// la libreria por seguridad no los guarda, esto depende de vos.
// Si no lo guardas vas tener que generar uno nuevo con este metodo
// CUIT al cual le queremos generar el certificado
$tax_id = 201111111111;
// Usuario para ingresar a AFIP.
// Para la mayoria es el mismo CUIT, pero al administrar
// una sociedad el CUIT con el que se ingresa es el del administrador
// de la sociedad.
$username = '201111111111';
// Contraseña para ingresar a AFIP.
$password = 'contraseñadeafip';
// Alias para el certificado (Nombre para reconocerlo en AFIP)
// un alias puede tener muchos certificados, si estas renovando
// un certificado pordes utilizar le mismo alias
$alias = 'afipsdk';
// Creamos una instancia de la libreria
$afip = new Afip(array(
'CUIT' => $tax_id,
'access_token' => 'access_token obtenido en https://app.afipsdk.com/'
'production' => TRUE
));
// Creamos el certificado (¡Paciencia! Esto toma unos cuantos segundos)
$res = $afip->CreateCert(username, password, alias);
// Mostramos el certificado por pantalla
var_dump($res->cert);
// Mostramos la key por pantalla
var_dump($res->key);
// ATENCION! Recorda guardar el cert y key ya que
// la libreria por seguridad no los guarda, esto depende de vos.
// Si no lo guardas vas tener que generar uno nuevo con este metodo
# CUIT al cual le queremos generar el certificado
tax_id = 201111111111
# Usuario para ingresar a AFIP.
# Para la mayoria es el mismo CUIT, pero al administrar
# una sociedad el CUIT con el que se ingresa es el del administrador
# de la sociedad.
username = "201111111111"
# Contraseña para ingresar a AFIP.
password = "contraseñadeafip"
# Alias para el certificado (Nombre para reconocerlo en AFIP)
# un alias puede tener muchos certificados, si estas renovando
# un certificado pordes utilizar le mismo alias
cert_alias = "afipsdk"
# Creamos una instancia de la libreria
afip = Afip.new({
"CUIT": tax_id,
"access_token": "access_token obtenido en https://app.afipsdk.com/"
"production": true
})
# Creamos el certificado (¡Paciencia! Esto toma unos cuantos segundos)
res = afip.createCert(username, password, cert_alias)
# Mostramos el certificado por pantalla
puts res["cert"]
# Mostramos la key por pantalla
puts res["key"]
# ATENCION! Recorda guardar el cert y key ya que
# la libreria por seguridad no los guarda, esto depende de vos.
# Si no lo guardas vas tener que generar uno nuevo con este metodo
# CUIT al cual le queremos generar el certificado
tax_id = 201111111111
# Usuario para ingresar a AFIP.
# Para la mayoria es el mismo CUIT, pero al administrar
# una sociedad el CUIT con el que se ingresa es el del administrador
# de la sociedad.
username = "201111111111"
# Contraseña para ingresar a AFIP.
password = "contraseñadeafip"
# Alias para el certificado (Nombre para reconocerlo en AFIP)
# un alias puede tener muchos certificados, si estas renovando
# un certificado pordes utilizar le mismo alias
cert_alias = "afipsdk"
# Creamos una instancia de la libreria
afip = Afip({
"CUIT": tax_id,
"access_token": "access_token obtenido en https://app.afipsdk.com/"
"production": True
})
# Creamos el certificado (¡Paciencia! Esto toma unos cuantos segundos)
res = afip.createCert(username, password, cert_alias)
# Mostramos el certificado por pantalla
print(res["cert"])
# Mostramos la key por pantalla
print(res["key"])
# ATENCION! Recorda guardar el cert y key ya que
# la libreria por seguridad no los guarda, esto depende de vos.
# Si no lo guardas vas tener que generar uno nuevo con este metodo
Endpoint
POST
https://app.afipsdk.com/api/v1/afip/certs
Body
Nombre | Tipo | Valor |
---|---|---|
| string | Usar "dev" para ambiente de desarrollo o "prod" para producción |
| string | CUIT al cual le queremos generar el certificado |
| string | Usuario para ingresar a AFIP. Para la mayoría es el mismo CUIT, pero al administrar una sociedad el CUIT con el que se ingresa es el del administrador de la sociedad. |
| string | Contraseña para ingresar a AFIP. |
| string | Alias para el certificado (Nombre para reconocerlo en AFIP), un alias puede tener muchos certificados, si estas renovando un certificado podes utilizar el mismo alias |
Ejemplo
{
"environment": "prod",
"tax_id": "11111111111",
"username": "11111111111",
"password": "aqui_la_contraseña",
"alias": "afipsdk"
}
Al crear el certificado nos devolverá un long_job_id
y su status
Response
{
"status": "in_process",
"long_job_id": "0d1e71e0-8882-4b14-b7f8-c5d716261760"
}
Ahora debemos agregarle el long_job_id
al body y llamar nuevamente al endpoint hasta que se cambie el status
{
"environment": "prod",
"tax_id": "11111111111",
"username": "11111111111",
"password": "aqui_la_contraseña",
"alias": "afipsdk",
"long_job_id": "0d1e71e0-8882-4b14-b7f8-c5d716261760"
}
La recomendación es intentar cada 5 segundos, suele tardar entre 15 y 60 segundos en estar listo, dependiendo de la congestion de AFIP.
STATUS
200
{
"status": "complete",
"data": {
"cert": "-----BEGIN CERTIFICATE-----\nMIIDRzC...",
"key": "-----BEGIN RSA PRIVATE KEY-----\r\nMIIEowIBAAKCA..."
}
}
STATUS
400
{
"status": "error",
"data": {
"message":"Número de CUIL/CUIT incorrecto"
}
}
También podes optar por la opción de generar el certificado manualmente, de ser así poder hacerlo siguiendo el siguiente tutorial
📜Obtener certificado de producciónPaso 3 - Cambiar parámetros de la librería
Al crear una instancia de la librería debes cambiar los siguientes parámetros:
const fs = require('fs');
// Certificado (Puede estar guardado en archivos, DB, etc)
const cert = fs.readFileSync('./certificado.crt', {encoding: 'utf8'});
// Key (Puede estar guardado en archivos, DB, etc)
const key = fs.readFileSync('./key.key', {encoding: 'utf8'});
const afip = new Afip({
CUIT: 20111111112,
cert: cert,
key: key,
access_token: 'access_token obtenido en https://app.afipsdk.com/',
production: true
});
// Certificado (Puede estar guardado en archivos, DB, etc)
$cert = file_get_contents('./certificado.crt');
// Key (Puede estar guardado en archivos, DB, etc)
$key = file_get_contents('./key.key');
$afip = new Afip(array(
'CUIT' => 20111111112,
'cert' => $cert,
'key' => $key,
'access_token' => 'access_token obtenido en https://app.afipsdk.com/',
'production' => TRUE
));
# Certificado (Puede estar guardado en archivos, DB, etc)
cert = File.read("./certificado.crt")
# Key (Puede estar guardado en archivos, DB, etc)
key = File.read("./key.key")
afip = Afip.new({
"CUIT": 20111111112,
"cert": cert,
"key": key,
"access_token": "access_token obtenido en https://app.afipsdk.com/",
"production": true
})
# Certificado (Puede estar guardado en archivos, DB, etc)
cert = open("./certificado.crt").read()
# Key (Puede estar guardado en archivos, DB, etc)
key = open("./key.key").read()
afip = Afip({
"CUIT": 20111111112,
"cert": cert,
"key": key,
"access_token": "access_token obtenido en https://app.afipsdk.com/",
"production": True
})
Debemos agregar el access_token al header de autorización
Authorization: Bearer AQUI_EL_ACCESS_TOKEN
En los requests cambiar el parámetro environment: prod
{
"environment": "prod"
}
En los request de Autorización agregarle el cert y key de producción
{
"environment": "prod",
"cert": "-----BEGIN CERTIFICATE-----\nMIIDRzC...",
"key": "-----BEGIN RSA PRIVATE KEY-----\r\nMIIEowIBAAKCA..."
}
Eso es todo, ya podes usar los web services de AFIP en producción.
Última actualización