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

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

内容导读

收集整理的这篇技术教程文章主要介绍了如何利用php开发以太坊的支付系统,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3651字,纯文字阅读大概需要6分钟

内容图文

本文是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开发以太坊的支付系统的详细内容,更多请关注Gxl网其它相关文章!

内容总结

以上是为您收集整理的如何利用php开发以太坊的支付系统全部内容,希望文章能够帮你解决如何利用php开发以太坊的支付系统所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。

内容备注

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。


本文关键词:

联系我们

在线咨询:点击这里给我发消息

邮件:w420220301@qq.com