# Configuración Local del plugin Refácil Pay con Docker para WooCommerce

A continuación se detalla el paso a paso para configurar y ejecutar el plugin Refácil Pay localmente utilizando Docker Desktop. Crearemos contenedores para WordPress y MySQL.

## Prerrequisitos

- Docker Desktop instalado en la máquina local. Se puede descargar desde [aquí](https://www.docker.com/products/docker-desktop).

## Paso a Paso

### 1. Clonar el Repositorio

Clonar el repositorio del plugin Refácil Pay en la máquina local.

```sh
git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/refacil-pay-woocommerce
```

### 2. Crear el Archivo `docker-compose.yml`

Se debe de tener el archivo `docker-compose.yml` en el directorio raíz del proyecto. Aquí está el contenido del archivo:

```yml
version: '3.8'

services:
  database:
    image: mysql:latest
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: somewordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress

  wordpress:
    depends_on:
      - database
    image: wordpress:latest
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: database
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wordpress_data:/var/www/html
    
volumes:
  db_data: {}
  wordpress_data: {}
```

### 3. Construir y Levantar los Contenedores

Ejecutar el siguiente comando en el directorio raíz del proyecto para construir y levantar los contenedores:

```sh
docker-compose up -d
```

Este comando descargará las imágenes de Docker necesarias y levantará los contenedores para WordPress y MySQL.

### 4. Configurar WordPress

1. Abre tu navegador web y navega a [http://localhost:8000](http://localhost:8000).
2. Sigue las instrucciones en pantalla para configurar WordPress.
3. Utiliza las siguientes credenciales de base de datos:
   - **Nombre de la base de datos:** wordpress
   - **Nombre de usuario:** wordpress
   - **Contraseña:** wordpress
   - **Servidor de la base de datos:** database
   - **Prefijo de tabla:** wp_

### 5. Instalar y Activar el Plugin Refácil Pay

1. Una vez que WordPress esté configurado, inicia sesión en el panel de administración de WordPress ([http://localhost:8000/wp-admin](http://localhost:8000/wp-admin)).
2. Ve a la sección de "Plugins" y haz clic en "Añadir nuevo".
3. Haz clic en "Subir plugin" y selecciona el archivo ZIP del plugin Refácil Pay.
4. Instala y activa el plugin.

### 6. Configurar el Plugin Refácil Pay

1. Ve a la sección de "WooCommerce" en el panel de administración de WordPress.
2. Haz clic en "Ajustes" y luego en "Pagos".
3. Activa y configura el método de pago Refácil Pay según tus necesidades.

---

## Apagar los Contenedores

Para apagar los contenedores, ejecuta el siguiente comando:

```sh
docker-compose down
```

Esto detendrá y eliminará los contenedores creados.

---

# Configuración de Ambientes del Plugin

El plugin Refácil Pay soporta diferentes ambientes que se pueden configurar en el archivo `environment.php`. Los ambientes disponibles son:

- **Desarrollo (develop)**: Para desarrollo local
- **Testing**: Para pruebas internas
- **QA**: Para pruebas de calidad
- **Producción (prod)**: Para el ambiente de producción

## Configuración del Ambiente

1. Abre el archivo `environment.php` en el directorio raíz del plugin
2. Encuentra la función `from_env()` y descomenta la línea correspondiente al ambiente deseado:

```php
public static function from_env(): self
{
    // $environment = self::ENV_DEVELOP;    // Para desarrollo local
    // $environment = self::ENV_TESTING;    // Para pruebas internas
    // $environment = self::ENV_QA;         // Para pruebas de calidad
    $environment = self::ENV_PROD;          // Para producción
    return new self($environment);
}
```

3. Guarda los cambios en el archivo

## Despliegue Manual del Plugin

Para desplegar el plugin manualmente:

1. Configura el ambiente deseado en `environment.php` como se explicó anteriormente
2. Crea un archivo ZIP con todo el contenido del plugin
3. Sube el archivo ZIP a través del panel de administración de WordPress:
   - Ve a "Plugins" > "Añadir nuevo"
   - Haz clic en "Subir plugin"
   - Selecciona el archivo ZIP
   - Haz clic en "Instalar ahora"
   - Activa el plugin

**Nota:** Asegúrate de que el ambiente configurado en `environment.php` coincida con el ambiente al que deseas que se conecte el plugin.

---

# Actualización de Plugin WordPress usando TortoiseSVN

Este apartado explica el proceso paso a paso para actualizar un plugin de WordPress utilizando **TortoiseSVN**.
Se detalla desde la configuración del entorno hasta la publicación de los cambios.

## Requisitos Previos

1. Tener instalado **TortoiseSVN** en tu sistema operativo Windows. Puedes descargarlo desde [https://tortoisesvn.net/](https://tortoisesvn.net/).
2. Acceso al repositorio SVN de WordPress.org del plugin.
3. Credenciales de usuario con permisos de `committer` en WordPress.org.
4. Archivos actualizados del plugin en un directorio local.

## Paso a Paso

### 1. Clonar el repositorio del plugin

1. Crea una carpeta local en tu sistema donde trabajarás con el código del plugin.
2. Haz clic derecho en la carpeta y selecciona **SVN Checkout**.
3. En el campo **URL of Repository**, introduce la URL del repositorio del plugin:
   ```
   https://plugins.svn.wordpress.org/refacil-pay/
   ```
4. Haz clic en **OK**.

TortoiseSVN descargará todas las ramas del plugin.

### 2. Estructura del repositorio SVN

El repositorio tendrá la siguiente estructura:

```
/trunk     (código principal del plugin)
/tags      (versiones publicadas)
/assets    (imágenes para el perfil del plugin en WordPress.org)
```

- **trunk:** contiene la versión de desarrollo del plugin.
- **tags:** almacena versiones liberadas, etiquetadas por número de versión.
- **assets:** contiene recursos visuales del plugin.

### 3. Actualizar el código del plugin

1. Copia los archivos actualizados del plugin en la carpeta **trunk**.
2. Asegúrate de que todos los archivos necesarios estén presentes.


### 4. Revisar y preparar cambios

1. Haz clic derecho en la carpeta del plugin y selecciona **TortoiseSVN > Check for Modifications**.
2. Verifica los archivos modificados.
3. Haz clic en **Add** para incluir archivos nuevos si es necesario.

### 5. Confirmar cambios (Commit)

1. Haz clic derecho en la carpeta del plugin y selecciona **SVN Commit**.
2. Escribe un mensaje descriptivo sobre los cambios realizados.
3. Haz clic en **OK** para subir los cambios al repositorio.


### 6. Confirmar la actualización en WordPress.org

1. Ve al directorio de plugins de WordPress.org y verifica que la nueva versión esté disponible.
2. Actualiza la documentación y las imágenes en el directorio **/assets** si es necesario.

### Recursos Adicionales

- Video tutorial: [YouTube](https://www.youtube.com/watch?v=IhtiFwJwDIA)
- [Documentación oficial de WordPress para SVN](https://developer.wordpress.org/plugins/wordpress-org/how-to-use-subversion/)

---

© Refácil Pay 2025

---

## Hardening rollout de autenticacion y webhook

Para despliegues progresivos del endurecimiento de seguridad:

- Activar modo estricto con `REFACIL_STRICT_SECURITY_ENABLED=true` (o `refacil_strict_security_enabled` en opciones/filtros).
- Ajustar ventana temporal con `REFACIL_SECURITY_WINDOW_SECONDS` y replay window con `REFACIL_REPLAY_WINDOW_SECONDS`.
- Configurar secretos via `wp-config.php`:
  - `REFACIL_WEBHOOK_HASH_KEY`
  - `REFACIL_AUTH_SIGNATURE_KEY`

### Rollback operativo

Si se detectan rechazos legitimos en callbacks durante rollout:

1. Desactivar temporalmente validacion estricta (`REFACIL_STRICT_SECURITY_ENABLED=false`).
2. Verificar desfase de reloj del servidor y ajustar ventana temporal.
3. Revisar logs de WooCommerce (`source: refacil_pay`) para firmas/timestamps/replay.
4. Corregir integracion externa y reactivar modo estricto.

### Monitoreo recomendado

- Tasa de respuestas `401/409` en endpoints:
  - `POST /wp-json/api/auth/refacil`
  - `POST /wp-json/api/payments/refacil`
- Errores de renovacion de token de comercio.
- Ordenes pendientes por fallos de callback.