您好,欢迎访问一九零五行业门户网

如何利用php开发以太坊的支付系统

本文是php开发以太坊系统,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。
当我第一次考虑通过加密货币实施支付时,我查看了像stripe这样的可用解决方案。我觉得stripe的问题在于,它只允许使用美国商家帐户进行比特币支付,所以这对我来说不是一个选择。在以太坊世界,它看起来更糟糕。有一些较新的服务,但他们都想要分享蛋糕。
那么从头开始构建以太坊支付系统,我们需要什么?
运行php的web服务器。
启用了rpc的专用网络中至少有一个parity节点。
网络服务器上的虚拟地址生成器,如vanity-eth。
那它是如何工作的?使用coinbase或kraken api中的当前价格计算eth的价格。
使用虚拟生成器生成地址对,并将私钥加密或转移到另一个服务器。
显示生成的地址给客户,如果收到付款,则每隔几秒检查一次地址。
理论上似乎是没有问题的,那让我们构建它。第1步:设置服务器我们将使用nodejs中的vanity-eth来生成地址。
npm install -g vanity-eth@1.0.4
在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 bcp($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开发以太坊的支付系统的详细内容。
其它类似信息

推荐信息