区块链应用:php如何开发一个以太坊支付系统

当我第一次考虑通过加密货币实施支付时,我查看了像Stripe这样的可用解决方案。我觉得Stripe的问题在于,它只允许使用美国商家帐户进行比特币支付,所以这对我来说不是一个选择。在以太坊世界,它看起来更糟糕。有一些较新的服务,但他们都想要分享蛋糕。

那么从头开始构建以太坊支付系统,我们需要什么?

  • 运行PHP的Web服务器。
  • 启用了RPC的专用网络中至少有一个Parity节点。
  • 网络服务器上的虚拟地址生成器,如vanity-eth

那它是如何工作的?

  • 使用coinbase或kraken API中的当前价格计算ETH的价格。
  • 使用虚拟生成器生成地址对,并将私钥加密或转移到另一个服务器。
  • 显示生成的地址给客户,如果收到付款,则每隔几秒检查一次地址。

理论上似乎是没有问题的,那让我们构建它。

第1步:设置服务器

我们将使用nodejs中的vanity-eth来生成地址。

npm install -g [email protected]"

在Windows上安装vanity-eth后:

还需要一些Etherum节点。我正在使用Parity,因为它快速可靠。

使用这些参数启动它,但不要将节点直接暴露给Internet,将它们保留在防火墙后面而不进行端口转发。

parity --jsonrpc-interface 0.0.0.0 --jsonrpc-hosts="all" --auto-update=all --jsonrpc-cors null

完成同步的奇偶校验日志:

为了更快地部署,您可以使用Parity Docker容器。还可以保存数据,这样每次重新制作容器时都不必重新同步。

第2步:编写付款类

首先创建一个名为libs的文件夹,然后将php-ethereum repo克隆到其中。ethereum-php项目是json-rpc类的一个很好的封装。

然后我们使用以下类并将其另存为ethpay.php。这是支付处理的主要逻辑。你可以用它来:

  • 生成地址对
  • 检查余额(待定的和已完成的)
  • 从WEI转换为ETH
<?php
define(‘RPC_IP‘,‘127.0.0.1‘);
define(‘RPC_PORT‘,8545);
require ‘libs/ethereum-php/ethereum.php‘;
$e = new EthPay();
class EthPay
{
    private $eth;
        //让我们建立与parity节点的连接
    function __construct()
    {
        $this->eth = new Ethereum(RPC_IP, RPC_PORT);
        if(!$this->eth->net_version()) die(‘RPC ERROR‘);
    }

    / *
    *得到一个地址的余额,
    *来自parity的余额以十六进制形式出现在wei中
    *使用bc数学函数转换它
    * /
    function getBalanceOfAddress($addr)
    {
        $eth_hex = $this->eth->eth_getBalance($addr, ‘latest‘);
        $eth = $this->wei2eth($this->bchexdec($eth_hex));
        $pending_hex = $this->eth->eth_getBalance($addr, ‘pending‘);
        $pending = $this->wei2eth($this->bchexdec($pending_hex));
        return array(‘balance‘=>$eth,‘pending‘=>$pending);
    }
    function getCurrentPrice($currency=‘USD‘)
    {
        $data = json_decode(file_get_contents(‘https://api.coinbase.com/v2/prices/ETH-‘.$currency.‘/spot‘),true);
        return $data[‘data‘][‘amount‘];
    }
    /*
    *我们将使用vanityeth生成私钥对
    * npm install -g vanity-eth
    *我们必须重新格式化输出字符串以用作JSON
    * /
    function genPair()
    {
        exec(‘vanityeth‘, $outputAndErrors, $return_value);
        $answer = implode(NULL,$outputAndErrors);
        $answer = str_replace(‘address:‘,‘"address":‘,$answer);
        $answer = str_replace(‘privKey:‘,‘"privKey":‘,$answer);
        $answer = str_replace(‘\‘‘,‘"‘,$answer);
        return json_decode($answer,true);
    }
    //以下功能用于转换和处理大数字
    function wei2eth($wei)
    {
        return bcdiv($wei,1000000000000000000,18);
    }
    function bchexdec($hex) {
        if(strlen($hex) == 1) {
            return hexdec($hex);
        } else {
            $remain = substr($hex, 0, -1);
            $last = substr($hex, -1);
            return bcadd(bcmul(16, $this->bchexdec($remain)), hexdec($last));
        }
    }
}

最后一步:与您的网站集成

根据您的服务,有多种方法可以执行此操作。

API Heaven,我们为每位客户提供一个可以存入资金的ETH地址。cronjob每分钟检查所有客户地址以检测更改。如果他们将ETH添加到地址,则余额将转换为API配额,因此我们的客户甚至不需要登录该站点来添加资金。

API Heaven中的示例集成:

另一个方法是计算固定价格并将其保存在用户会话中。客户必须在网站上付款,并且您需要向AJAX查询已收到的付款。如果收到全部金额,后端会触发销售。

最重要的是,您不需要外部服务来在您的网站上集成以太坊支付系统。来一起边学边玩以太坊吧。

如果想直接动手学习PHP与以太坊的实战内容,推荐我的教程:

php以太坊教程,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。

原文地址:http://blog.51cto.com/13697184/2171021

时间: 2024-08-04 09:13:43

区块链应用:php如何开发一个以太坊支付系统的相关文章

区块链快速入门(八)——以太坊

区块链快速入门(八)--以太坊 一.以太坊简介 以太坊(Ethereum)项目的最初目标是打造一个运行智能合约的平台(Platform for Smart Contract),支持图灵完备的应用,按照智能合约的约定逻辑自动执行,理想情况下将不存在故障停机.审查.欺诈以及第三方干预等问题.以太坊平台目前支持Golang.C++.Python等多种语言实现的客户端.由于核心实现上基于比特币网络的核心思想进行了拓展,因此在很多设计特性上都与比特币网络十分类似.基于以太坊项目,以太坊团队目前运营了一条公

虚拟货币,区块链,交易所,活动送以太坊两个,AAT币400,空投2000万新年糖果,进电报88AAT

送两个以太坊. 第一步注册https://www.aacoin.com/m/#/activeLogin?invitedCode=OoUARUcGEb邀请15人有2个以太坊和约400aat第二步拿糖果88个全球第一个基于区块链的收藏品在线拍卖社区,由真格基金等众多一线风投投资,同时与国内最大的收藏品公司达成战略合作,服务百万高端用户.目前通过MyCandyBag限时空投2000万新年糖果AAT,免费领取,先到先得.入群即送88个空投糖果:http://www.mycandybag.net/aat/

创建自己的区块链合约java版web3接口——以太坊代币(四)

texas-web3j-solidity项目是一个java版本的,使用web3j包和eth网络交互的小程序. 主要实现了以下功能: 1.发布合约 2.发起转账 3.查询交易 4.调用智能合约方法 texas-web3j-solidity项目在官方例子基础上做了以下几点功能性修改: 1.增加texas合约,用于游戏充值提现等功能 2.以太坊测试网络切换为ropsten,该测试网络更容易获取测试eth,地址为:https://www.ropsten.io/#faucet 3.增加spring-boo

区块链开发:以太坊网络

区块链开发:以太坊网络 一.geth Geth 又名Go Ethereum. 是以太坊协议的三种实现之一,由Go语言开发,完全开源的项目.Geth 可以被安装在很多操作系统上,包括Windows.Linux.Mac的OSX.Android或者IOS系统 Geth官网:https://geth.ethereum.org/ Geth的Github地址:https://github.com/ethereum/go-ethereum Ubuntu安装geth客户端: 官方教程:https://githu

蚂蚁区块链BaaS平台应用开发指南(三):从一个简单合约开始

Could IDE的入口 新版的Cloud IDE已经去除证书配置的要求,开发者开通区块链之后可直接开始智能合约的开发.在本节中,我们将会使用Could IDE来进行合约的编写.编译和调试的工作.如果是体验链,请在新手引导引导界面,找到合约体验链卡片,点击调试合约. 如果是正式的托管链或区块链创新大赛的链,通过合约管理>新建工程或编辑已有工程进入Cloud IDE. 从一个最简单的合约开始 选择目标链 编译部署合约前,要指定好所要部署的链以及部署用的账户:在右边栏中,点击环境配置: 在本例中,选

区块链开发_以太坊多重签名

假想这么一个场景: 有一天,你的朋友A来找你开公司,但是钱不够,希望你能在找一个人入伙. 然后,你就找了你另一个朋友C. 你们三个人分别出了500W开公司.但是由于公司资金流动性大,每次拿钱都要三个人分别拿钱,很不方便. 经过你们协商,就让你的朋友A管理公司财政. 结果,不久你的朋友A就带着公司的钱跑路了. 估计,你的朋友C会把你点天灯. 所以,以太坊上有一个很重要的功能,就是多重签名. 就是,建立一个合约钱包,这个钱包可以有多个账户(假定为三位).每次通过这个钱包转出超过额定限度(这里假定为2

蚂蚁区块链BaaS平台应用开发指南(一):前言

前言 2018年疯狂的币市把区块链技术推到了风口浪尖,随着潮水的退去,越来越多的技术人和市场开始沉淀到实际的问题上.如何利用区块链技术带来的新特性(去中心,可追溯,不可篡改等)去解决现实世界的实际需求成为了探讨的热点.蚂蚁金服作为区块链技术的先锋,已经陆陆续续的推出了十大解决方案和对应的落地案例如下: 司法区块链 合同存证 供应链金融 电子票据 商保快赔 处方流转 智慧租房 通用溯源 安全多方计算解决方案(联合营销,联合风控) 跨境支付 未来,会有越来越多的传统行业和新兴业务拥抱区块链技术.可以

区块链金融股权管理系统_区块链金融股权管理系统开发

区块链金融股权管理系统_区块链金融股权管理系统开发区块链金融股权管理系统,就是区块链+金融+股权的一个管理系统区块链并不难在技术,而难在场景.保险.数据交易.广告投放.房产.知识产权.物联网等不少领域都在尝试将区块链移植到传统业务中,将应用落地的却不多.区块链金融股权管理一是企业,通过平台降低股权期权管理成本,拓宽融资渠道:区块链金融股权管理二是孵化器,通过管理工具和专业知识获得实际操作指引:三是律师,在向企业提供方案后,直接在平台上完成签章授予等操作.股权众筹系统采用当前主流股权众筹???的领

区块链挖矿的还多吗?变态矿工挖矿系统开发怎么做?

区块链挖矿的还多吗?变态矿工挖矿系统开发怎么做?好的软件开发技术就在这里,好的案例也在这里,还不赶紧了解一下. 一.变态矿工平台简介 <变态矿工>游戏是BTMC基金会生态中重要项目之一,是由BTMC基金会从新加坡引进的游戏. 变态矿工游戏是由多位计算机工程师经过核算和根据真实矿机挖矿数据监测,推出的一款挖矿投资理财游戏.挖矿利润在每月15%-45%左右,根据时间周期,会有一定的波动. 每一个游戏玩家就是一个矿工节点,相当于一台真实矿机,通过游戏产生算力,生成虚拟数字资产,可以通过交易所进行交易