En este artículo comento mis experimentos con BTCPAY Server integrado en Mynode, con el objeto de poder crear de forma sencilla un botón de pago para integrar en nuestra página web, de forma autónoma, sin necesidad de tener que contar con servicios de terceros, contra nuestro propio nodo de bitcoin.
INTEGRACIÓN CON WOOCOMMERCE. ALGO NO APTO PARA PRINCIPIANTES
BTCPAY se anuncia como algo fácil y accesible para cualquiera que quiera abrir un comercio aceptando bitcoins sin necesidad de recurrir a terceros. Al día de hoy este objetivo es ciertamente complejo, incluso para aquellos que tienen conocimientos con nivel de experto (https://www.sosthene.net/btcpay-bilan/). Por lo que he visto, el usuario medio está necesariamente abocado a, o bien gastarse el dinero en una solución de hosting tipo Lunanode, o en el mejor de los casos, tener que recurrir a un servicio de DDNS como no-ip.com (gratuito) y recurrir a amigos o profesionales con conocimiento elevados en la materia. Otra opción muy recomendable sería usar los servicios de bitcoinheiros. Para los interesados en esta iniciativa recomiendo la reciente charla liderada por Lunaticoin, accesible en youtube.
Tras muchos intentos y horas de estudio, personalmente creo que me quedé atascado en el paso 3 de este tutorial (https://docs.btcpayserver.org/DynamicDNS/, Configure your BTCPay docker install to provide HTTPS certificates) por el que hay que ir a la línea de comandos y las instrucciones son simplemente que te conectes a tu “instancia” y ejecutes unos comandos, sin más explicaciones sobre, por ejemplo, cómo acceder a la “instancia”. Si los dos pasos anteriores se pueden hacer desde la interfaz gráfica, no entiendo por qué no han hecho lo mismo con este tercer paso. Igual estoy diciendo una tontería y realmente hay que hacerlo así, pero creo que esto debería mejorarse.
Para acceder por ssh a mynode, creo que lo más operativo es hacerlo en la página de “settings”
Imagen 1
Pero ahí se accede como admin, no como root y según se indica en el panel de control de BTCPAY parece que habría que acceder como root
Imagen 2
Si la cosa se deja así, al intentar el emparejamiento desde Woocommerce (por cierto hay que poner el dominio virtual que tengamos seguido de “:49392”, el puerto de BTCPAY) nos sale un mensaje diciendo que hay que acceder a través de https o de TOR, sin que haya instrucciones sobre cómo acceder por TOR.
Imagen 3
En fin… Después de darme por vencido en mi intento de integrar BTCPAY con Woocomerce, empecé a pensar en alguna otra opción para, por lo menos, usar el “Pay button” que se puede configurar una vez que generamos una tienda en BTCPAY:
Imagen 4
PLANTEAMIENTO SOLUCIÓN ALTERNATIVA
Como decimos, la idea era crear un botón de pago con bitcoins sin necesidad de desarrollar y emparejar con nuestro servidor de BTCPAY una tienda con Woocommerce o similar, y todo ello, como supuestamente pretende conseguir BTCPAY, usando medios propios sin tener que recurrir a nodos o soluciones de botones de pago de terceros que, entre otras cosas, llevan aparejada comisión en muchos casos.
Partimos de la base que utilizamos como herramienta Mynode y BTCPAY SERVER incluido en el paquete Mynode.
Una solución artesanal es simplemente dar a cada nuevo cliente una dirección nueva y remitirla por medios tradicionales, como correo electrónico, pero la idea es una solución automática para que cada pago vaya a una dirección nueva y así no tener que reutilizar direcciones.
El objetivo, por tanto, es poder crear botones de pago de manera fácil, con la generación de un código html que incluir en la web de forma que BTCPAY SERVER pueda interactuar con nuestro nodo local, independientemente del servidor donde esté alojada la página web donde insertemos el código.
Después de darle muchas vueltas al asunto, la clave para la solución que expongo me la dio el vídeo https://www.youtube.com/watch?v=hQxCOSgYqTo de Satoshi Radio, que me mostró el camino a seguir.
A continuación explico los pasos con los que se llega a la solución comentada. No soy informático y seguramente puede que haya otros métodos para alcanzar el objetivo marcado; con este trabajo simplemente explico el camino seguido por si pudiera ser de interés y utilidad para otras personas en situación parecida o análoga.
La idea es poder crear un botón de pago o, como más adelante se indica, un enlace para generar recibos, sobre la base del BTCPAY Server de Mynode, de forma que podamos incrustarlo fácilmente en nuestra página web (alojada en un sitio diferente al nodo de Mynode), que opere contra nuestro propio nodo de Bitcoin, y sin necesidad de instalar e integrar BTCPAY con plataformas tipo Woocommerce o similar.
PASOS A SEGUIR
Creación de la tienda en BTCPAY Server
En primer lugar, desde Mynode accedemos a BTCPAY Server y creamos una tienda. Tendremos que configurar el wallet al que asociamos la tienda para lo cual hay diferentes opciones. Una de ellas es la de introducir la llave maestra pública de un monedero cuyas claves privadas no están en el nodo o equipos a él conectados. Ello permitirá luego que para cada usuario, colaborador o cliente que pinche en el botón o enlace de pago se genere una nueva dirección no usada anteriormente, lo cual beneficia a la privacidad tanto del sitio que aloja el botón de pago como del pagador.
En el apartado “Payment” de “General Settings” de la tienda creada, tenemos que habilitar la casilla de “Allow anyone to create invoice”.
Imagen 5
Habilitación VPN en Mynode
En un primer momento, pensé que era necesario habilitar el acceso por VPN a nuestro nodo de Mynode (https://mynodebtc.com/guide/vpn) con la redirección de puertos (Port Forwarding) que se menciona en la guía. Así lo hice en un principio, pero, curiosamente, me he dado cuenta de que para esta solución no es necesario habilitar la VPN en Mynode, ni tampoco la redirección de puertos en el router. Todo esto de la redirección de puertos nos lo evitamos si usamos TOR, como comento al final del artículo.
Redirección de puertos de BTCPAY Server
Esta sí es una de las claves del proceso, pues es necesario hacerlo si no queremos usar TOR. Tenemos que ir a nuestro router y hacer un reenvío del puerto (Port Forwarding) 49392 ó 49393 usados por BTCPAY Server. Dependiendo de tu router eso se hará de una forma u otra. En esa redirección habrá que poner la IP local de tu nodo de Mynode de modo análogo a como se menciona en el apartado anterior. He comprobado a quitar este reenvío y entonces, como era de esperar, la cosa no funciona, salvo que usemos la opción TOR que comento más adelante.
Creación del botón de pago
Una vez hecho lo anterior, dentro del menú de la tienda de BTCPAY vamos al apartado “Pay Button” y configuramos los parámetros que queramos, como el importe de pago del botón, el tamaño de la imagen, etc.
Dándole al botón de Preview que hay al margen de la derecha, podremos comprobar si todo el proceso va por buen camino.
Uso del código HTML generado
Una vez que está todo correcto, al final de la página podemos ver el “Generate Code” que será algo como lo siguiente:
Si nos fijamos, hay 2 llamadas a …mynode.local:49392… Lo que tenemos que hacer es copiar todo el código, pegarlo en un editor de texto plano y sustituir las dos instancias de “mynode.local” por la IP pública que tenga el nodo de Mynode. Si pegamos ese código en la entrada de wordpress como esta, no sé exactamente por qué razones, la cosa no funciona bien.
Hola amigo.
Esto te funcionó con pagos de LN también?
No lo he probado. Con LN sería más complicado, sobre todo si quieres hacerlo sin depender de terceros.