Este es un tutorial basado en la última publicado por Jeff Delaney en fireship

Pueden ver el video explicativo aquí

Aceptar pagos con criptomonedas, como Bitcoin y Ethereum, en tu aplicación abre la puerta a más clientes en un nicho de rápido crecimiento. Coinbase Commerce es como la API de Stripe Payments para criptomonedas. Proporciona una API simple donde puedes crear cargos a una cuenta, facturas, etc. Pero a diferencia de las tarjetas de crédito, que son procesadas por una autoridad central, los pagos con criptomonedas se distribuyen a una red global de mineros donde se confirman en la cadena de bloques. El proceso de confirmación lleva tiempo y presenta una variedad de desafíos únicos para los desarrolladores.

El siguiente tutorial demuestra cómo aceptar pagos con Coinbase Commerce, utilizando Firebase Cloud Functions como su servidor backend.

Flujo de pago con Criptomonedas

Los pagos criptográficos se basan en push, lo que significa que Coinbase necesita escuchar constantemente los cambios en la red de pagos. La API envía webhooks cada vez que ocurre un evento importante con un cargo.

  1. Su servidor crea un cargo con una cantidad a pagar por el usuario. Caduca después de 1 hora.
  2. El usuario paga, lo que pone el cargo en estado pendiente (manejo a través de webhook).
  3. Algún tiempo después, hasta 10 minutos, el cargo se confirma o falla (manejo a través de webhook).

Configuración inicial

Cuenta de comercio de Coinbase

💡 Aunque no es obligatorio, es una buena idea tener una cuenta personal de Coinbase con ETH o BTC disponible para pequeños pagos de prueba. Actualmente, Coinbase no tiene sandbox 🙄, por lo que debe realizar pagos reales para probar su integración.

Regístrese para obtener una cuenta de Coinbase Commerce .

Crea una clave de API y anota el secreto de firma de Webhook; se necesitarán en la siguiente sección.

Cloud Functions

Las funciones en la nube (Cloud functions) son necesarias para:

1.- Crear un cargo por intención de pago

2. Escuchar los webhooks que se activan cuando el pago se envía y confirma en la cadena de bloques.

Coinbase tiene un SDK para nodeJS, para simplificar la integración.

En su linea de comandos escriba lo siguiente:

>>

Importar los paquetes requeridos

Backend

Crear un cargo

Cree un cargo con la cantidad y los detalles del producto. Esta demostración utiliza un producto estático en una función que se aloja en la nube HTTP, pero es probable que deseas pasar datos personalizados a través del cuerpo de la solicitud. El objeto de cargo resultante proporciona un **hosted_url**campo que se puede mostrar al usuario final donde puede elegir su moneda preferida para el pago.

Manejar Webhooks

Cuando el estado de la transacción cambia en la cadena de bloques, Coinbase enviará un webhook (evento) a su servidor.

  • **pending** significa que el usuario ha enviado un pago, pero aún no está confirmado en la cadena de bloques.
  • **confirmed**se completa el pago. OK para enviar.
  • **failed**pago fallido. NO envíe.

Por seguridad, es esencial llamar **Webhook.verifyEventBody**con su secreto de webhook desde el panel de Coinbase. Sin este paso, un hacker podría hacerse pasar por Coinbase y enviar webhooks a su servidor.

Cree otra función de nube HTTP para manejar webhooks.

implementación de la función y deploy en cloud functions

Inicia una nueva ventana de línea de comando y ejecuta lo siguiente:

firebase serve
# Deployment required to handle webhooksfirebase deploy

Interfaz

Index.js

El código de la interfaz debe realizar una solicitud a la función de la nube para crear un cargo. Cuando el objeto de cargo está disponible, puede redirigir o mostrar un enlace a la página de pago alojada.

Donate to devjaime
_Help support devjaime by donating or sharing with your friends._www.paypal.com