# Otro web service

### Requisitos previos

Para poder usar esta guía, primero necesitarás:

* [Integrar Afip SDK en tu proyecto](https://docs.afipsdk.com/readme#integracion)

***

En esta documentación solo encontrarás los web services de ARCA más usados, pero en la [Referencia de API](https://afipsdk.com/docs/api-reference/introduction/) podés encontrar ejemplos de código para usar cada método de todos los web services de ARCA.

{% embed url="<https://afipsdk.com/docs/api-reference/introduction/>" %}

En caso de no encontrar en la Referencia de la API el web service que necesitás, no dudes en [contactarnos](https://afipsdk.com/contact/).

***

Aquí abajo encontrarás algunos ejemplos genéricos para los lenguajes más utilizados.

{% tabs %}
{% tab title="Node" %}

```javascript
/**
 * Nombre del web service.
 * 
 * El nombre por el cual se llama al web service en AFIP.
 * Esto lo podes encontrar en el manual correspondiente. 
 * Por ej. el de factura electronica se llama 'wsfe', el de
 * comprobantes T se llama 'wsct'  
 **/
const servicio = 'wsct';

/**
 * Creamos el web service
 **/
const genericWebService = afip.WebService(servicio, options);

/**
 * Este es un ejemplo de como utilizar el wsct para
 * obtener el ultimo comprobante autorizado
 * 
 * Aqui veras como obtener un Token Authorizataion
 * para el web service que acabamos de crear y como 
 * ejecutar un request basico
 **/
(async () => {
	/**
	 * Obtenemos el Token Authorizataion
	 **/
	const ta = await genericWebService.getTokenAuthorization();
	
	/**
	 * Preparamos los datos que nos pide el web service
	 * 
	 * Este ejemplo es especifico para el wsct. En el manual
	 * del web service que quieras utilizar encontraras que 
	 * datos requiere cada metodo
	 **/
	const data = {
		'authRequest': { 
			'token': ta.token,
			'sign' : ta.sign,
			'cuitRepresentada' : afip.CUIT
		},
		'codigoTipoComprobante': 195,
		'numeroPuntoVenta': 1
	};

	/**
	 * Iniciamos la variable donde guardaremos el resultado
	 **/
	let result;
 
	 try {
		/**
		 * Ejecutamos la request al web service
		 * 
		 * consultarUltimoComprobanteAutorizado es un metodo
		 * de wsct, esto debes cambiarlo por el metodo que 
		 * quieras utilizar
		 **/
		result = await genericWebService.executeRequest('consultarUltimoComprobanteAutorizado', data);
 
		/**
		 * Seteamos el resultado en nuestra variable.
		 * 
		 * consultarUltimoComprobanteAutorizadoReturn es especifico
		 * de este metodo de este web service. Esto deberas adaptarlo
		 * al web service que estes integrando
		 **/
		result = result.consultarUltimoComprobanteAutorizadoReturn
 
		/**
		 * Checkeamos si devolvio error en el resultado.
		 * 
		 * arrayErrores es especifico de este web service. 
		 * Esto deberas adaptarlo al web service que estes integrando
		 **/
		if (typeof result.arrayErrores !== 'undefined') {
			err = Array.isArray(result.arrayErrores.codigoDescripcion) ? result.arrayErrores.codigoDescripcion[0] : result.arrayErrores.codigoDescripcion;

			throw new Error(`(${err.codigo}) ${err.descripcion}`, err.codigo);
		}
	 }
	 catch(error){
		/**
		 * Si hubo un error lo logeamos
		 **/
		console.error(error);
	 }
 
	/**
	 * Logeamos el resultado final
	 **/
	console.log(result);
})();
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

/**
 * Nombre del web service.
 * 
 * El nombre por el cual se llama al web service en AFIP.
 * Esto lo podes encontrar en el manual correspondiente. 
 * Por ej. el de factura electronica se llama 'wsfe', el de
 * comprobantes T se llama 'wsct'  
 **/
$servicio = 'wsct';

/**
 * Creamos el web service
 **/
$generic_web_service = $afip->WebService($servicio);


/**
 * Este es un ejemplo de como utilizar el wsct para
 * obtener el ultimo comprobante autorizado
 * 
 * Aqui veras como obtener un Token Authorizataion
 * para el web service que acabamos de crear y como 
 * ejecutar un request basico
 **/

/**
 * Obtenemos el Token Authorizataion
 **/
$ta = $generic_web_service->GetTokenAuthorization();

/**
 * Preparamos los datos que nos pide el web service
 * 
 * Este ejemplo es especifico para el wsct. En el manual
 * del web service que quieras utilizar encontraras que 
 * datos requiere cada metodo
 **/
$data = array(
	'authRequest' => array( 
		'token' => $ta->token,
		'sign' 	=> $ta->sign,
		'cuitRepresentada' 	=> $afip->CUIT
	),
	'codigoTipoComprobante' => 195,
	'numeroPuntoVenta' => 1
);

/**
 * Ejecutamos la request al web service
 * 
 * consultarUltimoComprobanteAutorizado es un metodo
 * de wsct, esto debes cambiarlo por el metodo que 
 * quieras utilizar
 **/
$result = $generic_web_service->ExecuteRequest('consultarUltimoComprobanteAutorizado', $data);

/**
 * Seteamos el resultado en nuestra variable.
 * 
 * consultarUltimoComprobanteAutorizadoReturn es especifico
 * de este metodo de este web service. Esto deberas adaptarlo
 * al web service que estes integrando
 **/
$result = $result->consultarUltimoComprobanteAutorizadoReturn;

/**
 * Checkeamos si devolvio error en el resultado.
 * 
 * arrayErrores es especifico de este web service. 
 * Esto deberas adaptarlo al web service que estes integrando
 **/
if (isset($result->arrayErrores)) {
	$err = is_array($result->arrayErrores->codigoDescripcion) ? $result->arrayErrores->codigoDescripcion[0] : $result->arrayErrores->codigoDescripcion;

	throw new Exception('('.$err->codigo.') '.$err->descripcion, $err->codigo);
}

/**
 * Mostramos por pantalla el resultado final
 **/
var_dump($result);
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
# Nombre del web service.
#
# El nombre por el cual se llama al web service en AFIP.
# Esto lo podes encontrar en el manual correspondiente.
# Por ej. el de factura electronica se llama "wsfe", el de
# comprobantes T se llama "wsct"
servicio = "wsct"

# Creamos el web service
genericWebService = afip.webService(servicio)

# Este es un ejemplo de como utilizar el wsct para
# obtener el ultimo comprobante autorizado
#
# Aqui veras como obtener un Token Authorizataion
# para el web service que acabamos de crear y como
# ejecutar un request basico

# Obtenemos el Token Authorizataion
ta = genericWebService.getTokenAuthorization

# Preparamos los datos que nos pide el web service
#
# Este ejemplo es especifico para el wsct. En el manual
# del web service que quieras utilizar encontraras que
# datos requiere cada metodo
data = {
  "authRequest": {
    "token": ta["token"],
    "sign": ta["sign"],
    "cuitRepresentada": afip.CUIT
  },
  "codigoTipoComprobante": 195,
  "numeroPuntoVenta": 1
}

begin
  # Ejecutamos la request al web service
  #
  # consultarUltimoComprobanteAutorizado es un metodo
  # de wsct, esto debes cambiarlo por el metodo que
  # quieras utilizar
  result = genericWebService.executeRequest("consultarUltimoComprobanteAutorizado", data)

  # Mostramos el resultado
  puts result unless result["arrayErrores"]

  # Checkeamos si devolvio error en el resultado.
  #
  # arrayErrores es especifico de este web service.
  # Esto deberas adaptarlo al web service que estes integrando
  err = result["arrayErrores"]["codigoDescripcion"].is_a?(Array) ? result["arrayErrores"]["codigoDescripcion"][0] : result["arrayErrores"]["codigoDescripcion"]

  raise "(#{err["codigo"]}) #{err["descripcion"]}"
rescue => e
  # Mostramos el error
  puts e
end
```

{% endtab %}

{% tab title="Python" %}

```python
# Nombre del web service.
#
# El nombre por el cual se llama al web service en AFIP.
# Esto lo podes encontrar en el manual correspondiente.
# Por ej. el de factura electronica se llama "wsfe", el de
# comprobantes T se llama "wsct"
servicio = "wsct"

# Creamos el web service
genericWebService = afip.webService(servicio)

# Este es un ejemplo de como utilizar el wsct para
# obtener el ultimo comprobante autorizado
#
# Aqui veras como obtener un Token Authorizataion
# para el web service que acabamos de crear y como
# ejecutar un request basico

# Obtenemos el Token Authorizataion
ta = genericWebService.getTokenAuthorization()

# Preparamos los datos que nos pide el web service
#
# Este ejemplo es especifico para el wsct. En el manual
# del web service que quieras utilizar encontraras que
# datos requiere cada metodo
data = {
  "authRequest": {
    "token": ta["token"],
    "sign": ta["sign"],
    "cuitRepresentada": afip.CUIT
  },
  "codigoTipoComprobante": 195,
  "numeroPuntoVenta": 1
}

try:
  # Ejecutamos la request al web service
  #
  # consultarUltimoComprobanteAutorizado es un metodo
  # de wsct, esto debes cambiarlo por el metodo que
  # quieras utilizar
  result = genericWebService.executeRequest("consultarUltimoComprobanteAutorizado", data)['consultarUltimoComprobanteAutorizadoReturn']

  if result.get("arrayErrores"):

    # Checkeamos si devolvio error en el resultado.
    #
    # arrayErrores es especifico de este web service.
    # Esto deberas adaptarlo al web service que estes integrando
    err = result["arrayErrores"]["codigoDescripcion"][0] if type(result["arrayErrores"]["codigoDescripcion"]) in (tuple, list) else result["arrayErrores"]["codigoDescripcion"]

    raise Exception("(%s) %s" % (err["codigo"], err["descripcion"])) 

  # Mostramos el resultado
  print(result)

except Exception as e:
  # Mostramos el error
  print(e)

```

{% endtab %}

{% tab title="API" %}
Es similar a llamar a otros web services

\
**Body**

**Endpoint**

<mark style="color:blue;">`POST`</mark> `https://app.afipsdk.com/api/v1/afip/requests`

**Ejemplo**

```json
{
    "environment": "dev",
    "method": "consultarUltimoComprobanteAutorizado",
    "wsid": "wsct",
    "params": {
        "authRequest": {
            "token": "{{token}}",
            "sign": "{{sign}}",
            "cuitRepresentada": "20409378472"
        },
        "codigoTipoComprobante": 195,
        "numeroPuntoVenta": 1
    }
}
```

{% endtab %}
{% endtabs %}
