# Punto de venta Recarga.do Una aplicación completa para vender recargas. Se sube a un hosting con PHP y funciona. No hay base de datos que crear ni librerías que instalar. ## Instalación 1. Copie a su hosting esta carpeta y la carpeta `sdk`. Cualquiera de estas dos disposiciones funciona: ``` su-sitio/ su-sitio/ ├── punto-de-venta-php/ ├── index.php │ ├── index.php ├── config.php │ └── config.php └── recargado.php └── sdk/php/recargado.php ``` La de la izquierda es la del paquete descargado. La de la derecha —los tres archivos sueltos en una sola carpeta— es la más simple: copie `index.php` y `config.php` de aquí, y `recargado.php` de `sdk/php/`. 2. Abra la página en el navegador. Si aparece «Falta la librería», es que `recargado.php` no está en ninguno de los sitios donde se busca; la propia página le dirá cuáles son. Ya vende, en modo de pruebas: verá el catálogo, el saldo y el formulario, pero ninguna recarga es real. ## Pasar a producción Abra `config.php` y ponga sus credenciales: ```php define('RECARGADO_KEY', 'rk_...'); define('RECARGADO_SECRET', 'sk_...'); define('RECARGADO_NEGOCIO', 'Mi Colmado'); define('RECARGADO_TERMINAL', 'CAJA-01'); ``` El aviso amarillo de "modo de pruebas" desaparece cuando hay credenciales configuradas. Compruebe que dice **"Ambiente de producción"** al pie antes de la primera venta real. ## Requisitos - PHP 7.2 o superior, con cURL (lo trae casi cualquier hosting). - **HTTPS.** No es un capricho: PHP marca la cookie de sesión como `secure` en casi todas las configuraciones modernas, así que por `http://` la aplicación no recordará la sesión entre pantallas. Y sus credenciales viajarían en claro. ## Lo que trae resuelto **No cobra dos veces.** Cada venta lleva una referencia generada al abrir el formulario. Si el cajero pulsa "Recargar" dos veces, o refresca una pantalla congelada, se envía la misma referencia y Recarga.do devuelve la venta original en vez de recargar otra vez. La aplicación lo detecta y le avisa al cajero de que no vuelva a cobrar. **Distingue los tres desenlaces.** Verde: entregada, cobre. Amarillo: en verificación, **no cobre y no repita**. Rojo: rechazada, el saldo ya volvió. El amarillo es el que, tratado como un fallo, hace que el cliente reciba dos recargas y usted cobre una. **Cuida el límite de peticiones.** El catálogo se consulta una vez por hora, no en cada pantalla. ## Qué le falta para un negocio con varias cajas Este ejemplo está pensado para una caja. Si necesita más, tendrá que añadir: - Registro de las ventas en su propia base de datos. Guarde el `transactionId` y el `requestId` de cada operación: son la referencia para soporte. - Usuarios y control de acceso: tal cual, cualquiera que abra la página vende. - Cierre de caja y arqueo. El archivo `index.php` está comentado para que su programador lo use como punto de partida.