Requerimientos
- Servicio de la nube, esto es necesario incluso para pruebas debido a que coinbase enviara el estado de nuestra transaccon a una direccion de internet. por lo tanto debes tener nuestro backend deslegado en una direccion para configurarlo en Coinbase Commerce. Otra forma tambien de eviatr desplegar es usando una herramienta llamada ngrok
- Billetera crypto con algo de crypto para probar
- cuenta de coinbase commerce
para poder empezar necesitas algo de cripto debido a que en coibase no tiene un entorno Sandbox para testear pagos.
asi que los requerimientos es tener una billetera con algo de cripto en ella.
Hay varias formas de tener una billetera, pero ya que estamos usando coinbase, lo ideal seria que puedas usar coinbase.
Ademas si usas mi enlace de referido que te dejo en la descripción, ambos recibiremos 10$ extras cuando compres tu primer crypto.
Crea una cuenta en COinbase Commerce
crea una cuenta en coinbase Commerce:
https://commerce.coinbase.com/
Una vez creada tu cuenta, esta plataforma te crea una billetera en multiples blockchains como Bitcoin, Ethereum, Litecoin, etc.
en el pancel de control: https://commerce.coinbase.com/dashboard
tenemos estas tres opciones para aceptar pagos:
- enviar un enlace
- generar una factura o cobrar a traves de correo
- integrarlo con nuestra aplicacion para que se cobre de manera programada
el checkout lo que te permite es que si tienes un producto estatico, es decr que su precio no cambia constantemente, puedes crear un boton checkout y coinbase lo procesara por ti el pago.
Modulos de Coinbase
la API de coinbase Commerce tiene algunos paquetes de lenguajes como Nodejs, Ruby, PHP y Python. Pero no esan activamente desarrollados y al API no esta debidamente documentada, asi que tendras que hacer un poco de esfuerzo en tratar de entender como funciona.
https://commerce.coinbase.com/docs/#libraries
el que usaremos es el modulo de Nodejs: https://www.npmjs.com/package/coinbase-commerce-node
Balances
en la seccion balances puedes ver las distintas criptomonedas que pueden ser aceptadas
API
en nuestro caso aceptaremos pagos a trvas de la pai la cual nos permite aceptar pagos de forma dinamica.
ve a Settings -> API, con esta api vas a poder comunicar tu aplicaicon con la api de coinbase.
No olvides que no debes comaprtir esta clave con nadie, ni tampoco debe ser expuesta en tu codigo de frontend.
https://commerce.coinbase.com/docs/api/
https://www.npmjs.com/package/coinbase-commerce-node
Charge
https://www.npmjs.com/package/coinbase-commerce-node#charges
https://commerce.coinbase.com/docs/api/#create-a-charge
cuando el cargo halla sido creado, el usuario tiene 1 hora para poder relizar el pago.
si el usuario paga se mostrara una pagina de succes, pero si no lo hace en una hora obtendra un error.
WebHooks API
cuando el pago fue enviado, como este esta en una blockchan puede llegar a tomar tiempo para poder validar las transacciones:
por esto coinbase va enviando notificaciones del estado de la transaccion a nuestro servidor:
webhook secret:
ve a webhook suscrition y da un click en show secret
ve a webhook suscrition y coloca la url de tu backend
Errores
- Express Raw Body Error: https://flaviocopes.com/express-get-raw-body/
- https://github.com/coinbase/coinbase-commerce-node/issues/53
- https://stackoverflow.com/questions/40637975/writing-express-middleware-to-get-raw-request-body-before-body-parser