Cómo aceptar pagos con Blockchain en PHP

Estoy tratando de configurar una especie de sistema BitPay donde

1) Un usuario selecciona cuánto dinero quiere enviar (precio en BTC).
2) El sistema le da al usuario una cantidad de dinero que debe pagar y la dirección a la que debe enviar.
3) El sistema verifica si el dinero se envía desde la dirección de Bitcoin del usuario a la dirección de recepción con la cantidad de bitcoins especificada
4) Si todo está bien, muestra un mensaje o lo que sea, si no muestra un error

¿Cómo puedo hacer esto?

Siento que esta pregunta es demasiado amplia. Con tantos aspectos a considerar, es muy difícil responder de manera concisa, mientras que la pregunta ya resume una respuesta aproximada. Esta pregunta funcionaría mejor si se dividiera en varias preguntas más específicas, cuando el autor de la pregunta haya resuelto más detalles de lo que realmente busca. Alternativamente, esto puede funcionar mejor en una plataforma estilo foro que facilita la discusión de un tema en evolución. Sugiriendo cerrar como "demasiado amplio".
Releyendo esto, esta pregunta tiene poco sentido. BitPay es un proveedor de pago. ¿Por qué el usuario seleccionaría cuánto dinero quiere enviar? Si el precio está en Bitcoin, ¿por qué el sistema necesitaría calcular algo? ¿Por qué le importaría al sistema en qué dirección se originó el pago? Los pagos deben identificarse más bien a través de la dirección del destinatario que del "remitente".

Respuestas (4)

Como dices "una especie de sistema BitPay", asumo que no quieres usar BitPay.

Puede comenzar analizando algunos de los trabajos que la gente ha realizado en el espacio en repositorios como bitwasp o bitcoin-php . Esto es probablemente más de lo que necesita, sin embargo, los componentes básicos están ahí para lo que quiere hacer si desea que toda la lógica viva en php.

Si realmente desea generar direcciones, este es un buen lugar para comenzar .

Aquí hay una puñalada rápida en un flujo de trabajo que creo que sería bastante sencillo de desarrollar.

El usuario ingresa el valor en su moneda. Al consultar una tabla de tipos de cambio como la de Blockchain.info , muestre la cantidad en Bitcoin. Puede generar un código QR usando PHP QR , así como mostrar un enlace para hacer clic/dirección para copiar/pegar, luego verificar que la transacción se completó usando Blockchain.info o algo más.

O... podría usar la herramienta gratuita de Blockchain.info , pero supongo que tiene una razón por la que desea crear su propia solución.

En el caso de que me equivoque y realmente quiera usar BitPay, probablemente usaría el método Bill o Invoice de la API de BitPay .

No quería usar BitPay porque quería hacer algo yo mismo, y para mi herramienta necesito PHP para hacer algo después de recibir el pago, ¿cuál me recomienda que use?
Entonces, ¿cuánto quieres hacer tú mismo? Para recibir un pago a través de un sitio web, todo lo que necesita es pegar una dirección de recepción en texto sin formato en la página. ¿Eso funcionaría verdad? Tomando medidas hacia la automatización, necesita un campo de entrada para la moneda, convertir a BTC, mostrar una dirección y finalmente actualizar esa página con una bandera de éxito. Puede llamar a la API de chain.com una vez que alguien presione enviar y luego, cada pocos segundos, verifique si la transacción se ha publicado. Si no desea utilizar ninguna API para monitorear la dirección de recepción, probablemente deba comenzar a investigar bitwasp.
Lo quiero así pero completamente automatizado 1) El usuario abre la página e inserta su nombre de usuario y la dirección de bitcoin desde la que está pagando 2) El usuario ingresa la cantidad de BTC para agregar (en decimales de BTC, no en USD) 3) El usuario envía el BitCoin, la página verifica si se ha enviado un pago por (cantidad de btc) desde (dirección de bitcoin de los usuarios) 4) si es así, repite "Pago recibido $ nombre de usuario"; de lo contrario, siga verificando el pago. ¿Cuál sería la mejor opción para esto? soy muy nuevo en esto
Sugeriría que en lugar de que el usuario ingrese su dirección de bitcoin de envío (que realmente no debería importarle), proporcione nuevas direcciones de recepción para cada transacción, o incluya un número de factura o algo en la descripción de la transacción. Definitivamente recomiendo usar la API de Chain.com para verificar que se haya producido la transacción. Aparte de eso, no creo que necesite nada más si no hay una conversión USD>BTC.
Estoy probando el proyecto github de la API de BlockChain que me enviaste y lo estoy probando, está muy roto pero estoy funcionando, ¡muchas gracias!
Si está mirando las API de Blockchain.info, comience aquí blockchain.info/api/api_receive . Es cierto que muchos de los proyectos de github están desactualizados y necesitan algo de amor.

Puede usar GoUrl.io PHP Bitcoin Clase de pago de código abierto.

Github - https://github.com/cryptoapi/Payment-Gateway

Ejemplos de PHP: https://gourl.io/bitcoin-payment-gateway-api.html

Prefiero www.payb.tc , esto solo obtiene un pequeño porcentaje. Sin cargos adicionales.

En primer lugar, no necesita terceros para aceptar Bitcoin. De alguna manera anula el propósito de la criptomoneda. En segundo lugar, usar una API y almacenar cualquier clave secreta en su servidor creará riesgos potenciales. Todas las claves privadas deben almacenarse sin conexión, no las necesita para aceptar el pago.

Todas las transacciones de BTC son públicas. Todo lo que necesita es almacenar algunas claves públicas generadas previamente para la rotación, una vez que se haya realizado el pago, tiene 2 opciones:

  1. controle su dirección pública por la cantidad esperada, una vez que esté allí verifique la cantidad de confirmaciones:

https://blockchain.info/rawaddr/{$TU_CLAVE_PÚBLICA}

  1. si el pagador puede proporcionar un hash opcional de la transacción, use esto para confirmar el pago después de, digamos, 3 confirmaciones:

https://blockchain.info/rawtx/{$PAYER_PROVIDED_TRANSACTION_HASH}

Este devuelve JSON con todos los detalles que necesita. También puede utilizar otro proveedor de datos.

¡Espero eso ayude!