Un compañero del grupo de Delphi me ha estado preguntando cómo puede conectarse con la API de Woocomerce con Delphi y me he puesto a intentar hacerlo.
Al principio lo he intentado con Docker pero el sistema no hacía más que darme errores del siguiente tipo:
{ "code": "woocommerce_rest_cannot_view", "message": "Lo siento, no puedes listar recursos.", "data": { "status": 401 } }
Así pues, me he puesto a probarlo en un servidor que tengo, porque en todos lados me decía que podía ser por problemas de SSL con Woocommerce, lo cual hace que no funcione bien la cosa.
Así pues, me he puesto con ello, he instalado WordPress en un servidor en la nube que tengo, el cual tiene SSL instalado por defecto en mi hosting.
Hasta aquí sería algo normal en cualquier WordPress con Woocommerce y me ha sorprendido lo sencillo que es conectarse con la herramienta de Delphi.
Pero antes de nada, una vez que tenemos todo instalado, simplemente debemos de acceder a la opción de Menú de Woocommerce –> Ajustes –> Avanzado –> API REST
Allí nos pedirá que Añadamos una clave de API. Pulsamos en el botón.
Nos pedirá una Descripción, un usuario y unos permisos. Los permisos pueden ser de Lectura, Escritura o de Lectura y Escritura.
En nuestro caso nos ha creado 2 token:
- Clave de Cliente, que comienza por ck_
- Clave Secreta de cliente, que comienza por cs
También ha generado un código QR.
Nos copiamos ambas claves y las guardamos en lugar seguro.
Vamos a probar si tenemos activado la API Rest en nuestro sistema y para ello podemos abrir la siguiente URL en nuestro navegador: http://localhost/wp-json/wc/v1?_jsonp=callback
Con esta parte ya tenemos nuestro sistema preparado para que juguemos con él, ahora nos queda estudiar un poco la API de Woocommerce y abrir nuestro Delphi.
Mirando la API, vemos que podemos hacer una prueba con Cupones, así pues, nos hemos puesto a crear un cupón y ahora vamos a intentar listarlo.
Para poder listar todos los cupones, desde la ayuda vemos cómo nos indican que debemos hacer un GET /wp-json/wc/v3/coupons
Así pues, abrimos Delphi y dentro de Tools tenemos la herramienta RestDebugger y ponemos el Método con GET y dentro de la URL ponemos https://[URL]/wp-json/wc/v3/coupons
Después, en la pestaña Authentication del RestDebugger, seleccionamos la opción BASIC, y en username ponemos la clave de cliente copiada anteriormente y en password ponemos la clave secreta del cliente.
Sólo tenemos que pulsar en Send Request y todo nos funcionará perfectamente.
Para finalizar, para integrarlo con Delphi simplemente tenemos que pulsar en Copy Components y pegar lo que nos ha puesto en el portapapeles en nuestro formulario Delphi y llamar al método Execute del RestRequest.
Pero esto ya es algo donde hay mucha información y ya es programación de Delphi el cómo queráis hacer esta parte, pero de la manera indicada podréis descargar un listado de cupones, los pedidos, etc, de la misma manera que podréis hacer modificaciones sobre ellos.
Aquí te dejo los pasos que hice para instalar Docker, aunque no me sirvieran para este caso, seguro que podría servir para otros.
Para ello he instalado WordPress en local y como tengo Docker Desktop en mi ordenador donde programo con Delphi, es decir, en un Windows, pues he ejecutado los siguientes dos comandos:
docker run -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_DATABASE=wordpress –name wordpressdb -d mariadb:latest
Con este comando se instala la imagen de la base de datos con un usuario llamado wordpress y una contraseña muy básica que es 1234
En segundo lugar hemos instalado WordPress con el siguiente comando de docker
docker run -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=1234 –name wordpress –link wordpressdb:mysql -p 80:80 -d wordpress
De esta manera lo tenemos listo para que nos salga un instalador de WordPress, después, una vez terminado de instalarlo y poner el nombre de WordPress, hemos instalado del plugin de Woocommerce.