Skip to content

Commit

Permalink
Add cert creation tutorial via api
Browse files Browse the repository at this point in the history
  • Loading branch information
ivanalemunioz committed Aug 24, 2024
1 parent 8661d34 commit 8a0a5ef
Show file tree
Hide file tree
Showing 2 changed files with 191 additions and 0 deletions.
96 changes: 96 additions & 0 deletions src/content/blog/autorizar-uso-de-web-services-de-afip-via-api.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
---
title: "Autorizar uso de web services de AFIP via API"
description: "Con pocas líneas de código"
pubDate: "Aug 24 2024"
cover: "/images/blog/api.png"
category: "API"
---

Podemos usar Afip SDK para autorizarle, a los certificados que creamos, el acceso a los diferentes web services y evitar hacerlo de manera manual, ya que no solo es difícil, sino que puede tener errores humanos.


## Creamos la autorización

Para realizar autorizacion al web service lo primero que debemos hacer es ejecutar una solicitud **POST** al endpoint

```bash
https://app.afipsdk.com/api/v1/afip/ws-auths
```

Con los parametros

| Nombre | Tipo | Valor |
| ------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environment` | string | Usar "dev" para ambiente de desarrollo o "prod" para producción |
| `tax_id` | string | CUIT al cual le queremos generar la autorización |
| `username` | 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. |
| `password` | string | Contraseña para ingresar a AFIP. |
| `alias` | string | Alias del certificado a autorizar (previamente creado). |
| `wsid` | string | Id del web service a autorizar. |

**Ejemplo**

```json
{
"environment": "dev",
"tax_id": "11111111111",
"username": "11111111111",
"password": "aqui_la_contraseña",
"alias": "afipsdk",
"wsid": "wsfe"
}
```

Al crear la autorizacion nos devolverá un `long_job_id` y su `status`

**Response**

```json
{
"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`

```json
{
"environment": "dev",
"tax_id": "11111111111",
"username": "11111111111",
"password": "aqui_la_contraseña",
"alias": "afipsdk",
"wsid": "wsfe",
"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.

<mark style="color:green;">`STATUS`</mark> `200`

```json
{
"status": "complete",
"data": {
"status": "created"
}
}
```

<mark style="color:red;">`STATUS`</mark> `400`

```json
{
"status": "error",
"data": {
"statusCode": 400,
"message": "No existe certificado con el alias afipsdk."
}
}
```

Ya tenemos la autorización lista para acceder al web service de AFIP.

Lo único que nos queda es pasar a modo producción, para más información de cómo hacerlo pueden dirigirse a la documentación de la librería https://docs.afipsdk.com/
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
---
title: "Crear certificado para usar web services de AFIP via API"
description: "Con pocas líneas de código"
pubDate: "Aug 24 2024"
cover: "/images/blog/api.png"
category: "API"
---

Podemos usar Afip SDK para crear certificados y evitar hacerlo de manera manual, ya que no solo es difícil, sino que puede tener errores humanos.


## Creamos el certificado

Para realizar la creacion del certificado lo primero que debemos hacer es ejecutar una solicitud **POST** al endpoint

```bash
https://app.afipsdk.com/api/v1/afip/certs
```

Con los parametros

| Nombre | Tipo | Valor |
| ------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `environment` | string | Usar "dev" para ambiente de desarrollo o "prod" para producción |
| `tax_id` | string | CUIT al cual le queremos generar el certificado |
| `username` | 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. |
| `password` | string | Contraseña para ingresar a AFIP. |
| `alias` | 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**

```json
{
"environment": "dev",
"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**

```json
{
"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`

```json
{
"environment": "dev",
"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.

<mark style="color:green;">`STATUS`</mark> `200`

```json
{
"status": "complete",
"data": {
"cert": "-----BEGIN CERTIFICATE-----\nMIIDRzC...",
"key": "-----BEGIN RSA PRIVATE KEY-----\r\nMIIEowIBAAKCA..."
}
}
```

<mark style="color:red;">`STATUS`</mark> `400`

```json
{
"status": "error",
"data": {
"message":"Número de CUIL/CUIT incorrecto"
}
}
```

Ya tenemos nuestro certificado y key para acceder a los web services de AFIP.

Ahora para poder acceder a un web service primero debemos [Autorizar uso de web services de AFIP via API](/blog/autorizar-uso-de-web-services-de-afip-via-api/).

Lo único que nos queda es pasar a modo producción, para más información de cómo hacerlo pueden dirigirse a la documentación de la librería https://docs.afipsdk.com/

0 comments on commit 8a0a5ef

Please sign in to comment.