# Wordpress: WooCommerce

{% hint style="info" %}
Esta guía es una **referencia** de flujo para enviar datos a la API de Classlife. Recomendamos capturar las trazas de envío y realizar pruebas API-REST para confirmar que la conexión es correcta.\
Classlife es responsable de procesar la petición API-REST recibida.
{% endhint %}

Classlife recibe la comunicación por parte de terceros a través de las solicitudes a la URL del portal del centro educativo, incluyendo la API Key que permite la autorización de la llamada para ejecutar el servicio solicitado.&#x20;

### 1) SKU en los productos WooCommerce

Los productos en WooCommerce se identifican por un código SKU y es necesario que lo tengan pues ese dato es el que se envía hacia Classlife para identificarlo como producto de compra (product\_id)

<figure><img src="/files/SoQ3kdXfwfEzEfovN6pC" alt=""><figcaption></figcaption></figure>

### 2) *Trigger* de *action* en WooCommerce

Para realizar la conexión entre la plataforma, se deberá incorporar el siguiente código al fichero **“functions.php**” de la plantilla activa, con lo cual Classlife recibirá una copia de todas las peticiones de formulario que se tramiten por **WooCommerce** una vez se haya confirmado y procesada la orden.\
**Menú: Apariencia --> Editor de temas --> functions.php**\
\
Info: Las reglas internas de control de compras, respuesta y flujo de operaciones propios de Woocommerce NO se verán afectados por la incorporación de esta acción, ya que es una acción pasiva, que recibe copia de la actividad sin alterar la dinámica de WooCommerce  que el administrador tenga configurada.\
\
Hay que sustituir las XXXXXXX por los valores del centro.

(\*) NOTA: \
\* Si usas WooCommerce con pago final, la función a utilizar es: '***woocommerce\_payment\_complete***'\
\* Si usas WooCommerce sin pago final, la función es: '***woocommerce\_checkout\_order\_processed***'

```php
/* CLASSLIFE */

// Revisar la NOTA(*)
add_action(
    'woocommerce_payment_complete',
    'postClasslifeWoocommerce'
);
function postClasslifeWoocommerce($order_id) {
  $url = 'https://xxxxx.classlife.education/app/apilead.php';
  $fields['service'] = 'api';
  $fields['apiKey'] = 'xxxxxxx';
  $fields['perform'] = 'newEnroll';
  $fields['source'] = 'woocommerce';
  $fields['lead_source'] = '1';

  $fields['email'] = $_POST['billing_email'];
  $fields['nombre'] = $_POST['billing_first_name'];

  // Get an instance of the WC_Order object
  $order = wc_get_order($order_id);
  $order_data = $order->get_data(); // The Order data

  $items = $order->get_items();
  $sku = "XX";
  foreach ($items as $item) {
    $product = $item->get_product();
    $sku = $product->get_sku();
  }

  // Estos ids deben coincidir con el producto eCommerce en Classlife
  $fields['product_id'] = $sku; ////ID or SKU del producto WooCommerce
  $fields['variation_id'] = "" ; ///(optional) ID de la variación del producto

  // Resto de campos
  $fields['order_id'] = $order_id;
  $fields['order_data'] = $order_data;
  $fields['post_data'] = $_POST;


  $fields_string = http_build_query($fields);

  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_POST, count($fields));
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
  $result = curl_exec($ch);
  curl_close($ch);
}


/* CLASSLIFE */	
```

### 3) Alta de producto en Classlife

Ahora debemos indicar en Classlife que el Producto de WooCommerce\_ID=33 en Classlife debe matricular al alumno en un curso determinado.  Esto se realiza en la sección "eCommerce" de Classlife.\
\
Agregamos producto y debemos poner el código del producto WooCommerce.\
Este código corresponde al ID del post en WooCommerce o SKU\
\
<https://mi_wordpress.com/wp-admin/post.php?post=33&action=edit>

![](/files/tIWpSKfRBwbemmWWouUG)

### 4) Compra y verificación

Una vez completados los pasos anteriores, podemos realizar una compra de ese artículo en WooCommerce y veremos que nos crea el **alumno** (solo si no existe anteriormente), nos **matricula** en el **curso comprado** y nos ha generado los **recibos** correspondientes.

### Parámetros principales

La información de alta de contactos se deberá enviar uno a uno con llamadas al servicio de integración ejecutando la acción "perform=**newEnroll**" incorporando todos los meta\_datos del contacto que se incluirán en la importación al sistema.

La estructura base de la información que Classlife necesita se presenta a continuación.

| **Parámetro**     | **Descripción**                                                                                                          |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------ |
| **source**        | woocommerce                                                                                                              |
| **service**       | api                                                                                                                      |
| **perform**       | **newEnroll**                                                                                                            |
| **apiKey**        | {apiKey}                                                                                                                 |
| **product\_id**   | <p>ID de producto <br>(artículo a matricular en Classlife)</p>                                                           |
| **variation\_id** | (opcional) Un segundo código opcional si se desea especificar un subnivel, ejemplo: camiseta XL o camiseta M             |
| **nombre**        | Nombre del Alumno                                                                                                        |
| **Apellidos**     | Apellidos del Alumno                                                                                                     |
| **email**         | Email del Alumno                                                                                                         |
| **order**         | Información del carro de compra                                                                                          |
| **cart-products** | Información de los productos                                                                                             |
| **receipts**      | En el caso de programar cobros futuros se deberán informar las cuotas futuras con la fecha de cobro, concepto e importe. |
| **enroll\_end**   | (opcional) Fecha final de matricula  Ejemplo formato: 2021-12-05 17:32:21                                                |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://classlife.gitbook.io/api/integraciones/ecommerce/woocommerce.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
