目录
那它是如何工作的?
理论上似乎是没有问题的,那让我们构建它。
第1步:设置服务器
第2步:编写付款类
最后一步:与您的网站集成
首页 后端开发 php教程 如何利用php开发以太坊的支付系统

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

Sep 10, 2018 pm 02:14 PM
以太坊

本文是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后:

1418372061-5b9082ef3d224_articlex.jpg

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

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

parity --jsonrpc-interface 0.0.0.0 --jsonrpc-hosts="all" --auto-update=all --jsonrpc-cors null
登录后复制

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

2567405850-5b9082ef3df24_articlex.jpg

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

第2步:编写付款类

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

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

  • 生成地址对

  • 检查余额(待定的和已完成的)

  • 从WEI转换为ETH

<?php 
define(&#39;RPC_IP&#39;,&#39;127.0.0.1&#39;);
define(&#39;RPC_PORT&#39;,8545);
require &#39;libs/ethereum-php/ethereum.php&#39;;
$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中的示例集成:

1088678934-5b9082ef48315_articlex.jpg

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

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

相关推荐:

如何用PHP开发在线支付系统

如何开发一个虚拟域名系统

以上是如何利用php开发以太坊的支付系统的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

数字货币充值多久到帐?主流数字货币充值平台推荐 数字货币充值多久到帐?主流数字货币充值平台推荐 Apr 21, 2025 pm 08:00 PM

数字货币充值到账时间因方式不同而异:1. 银行转账通常需1-3个工作日;2. 信用卡或第三方支付平台充值在几分钟到几小时内;3. 数字货币转账根据区块链确认时间,通常10分钟到1小时,但可能因网络拥堵等因素延迟。

量子链如何交易 量子链如何交易 Apr 21, 2025 pm 11:42 PM

量子链(Qtum)交易流程包括前期准备、购买和出售三个阶段。1. 前期准备:选择合规交易所、注册账户、进行身份验证、设置钱包。2. 购买量子链:充值资金、寻找交易对、下单交易(市价单或限价单)、确认交易。3. 出售量子链:进入交易页面、选择交易对和下单类型(市价单或限价单)、确认交易和提现。

跨链交易什么意思?跨链交易所有哪些? 跨链交易什么意思?跨链交易所有哪些? Apr 21, 2025 pm 11:39 PM

支持跨链交易的交易所有:1. Binance,2. Uniswap,3. SushiSwap,4. Curve Finance,5. Thorchain,6. 1inch Exchange,7. DLN Trade,这些平台通过各种技术支持多链资产交易。

十大加密货币交易所平台 世界最大的数字货币交易所榜单 十大加密货币交易所平台 世界最大的数字货币交易所榜单 Apr 21, 2025 pm 07:15 PM

在当今的加密货币市场中,交易所扮演着至关重要的角色,它们不仅是投资者进行买卖交易的平台,更是市场流动性和价格发现的重要来源。全球最大的虚拟货币交易所排行前十,这些交易所不仅在交易量上遥遥领先,而且在用户体验、安全性和创新服务方面也各有千秋。排行榜首的交易所通常拥有庞大的用户基础和广泛的市场影响力,它们的交易量和资产种类往往是其他交易所难以企及的。

币圈合约党必备软件推荐 币圈合约党必备软件推荐 Apr 21, 2025 pm 11:21 PM

2025年币圈合约交易所平台排名前十的分别是:1. Binance Futures,2. OKX Futures,3. Gate.io,4. Huobi Futures,5. BitMEX,6. Bybit,7. Deribit,8. Bitfinex,9. CoinFLEX,10. Phemex,这些平台因其高流动性、多样化交易功能和严格的安全措施而受到广泛认可。

WorldCoin(WLD)价格预测2025-2031:到2031年WLD会达到4美元吗? WorldCoin(WLD)价格预测2025-2031:到2031年WLD会达到4美元吗? Apr 21, 2025 pm 02:42 PM

WorldCoin(WLD)凭借其独特的生物识别验证和隐私保护机制,在加密货币市场中脱颖而出,吸引了众多投资者的目光。 WLD凭借其创新技术,特别是结合OpenAI人工智能技术,在众多山寨币中表现突出。但未来几年,数字资产的走势如何呢?让我们一起预测WLD的未来价格。 2025年WLD价格预测预计2025年WLD将实现显着增长。市场分析显示,WLD平均价格可能达到1.31美元,最高可能触及1.36美元。然而,在熊市情况下,价格可能跌至0.55美元左右。这一增长预期主要源于WorldCoin2.

量子链是什么?量子链交易所有哪些? 量子链是什么?量子链交易所有哪些? Apr 21, 2025 pm 11:51 PM

量子链(Qtum)是一个开源的去中心化智能合约平台和价值传输协议。1. 技术特点:兼容BIP的POS智能合约平台,结合比特币和以太坊优势,引入链下因素,增强共识机制灵活性。2. 设计原则:通过主控合约实现链上链下数据交互,兼容不同区块链技术,灵活共识机制,考虑行业合规性。3. 团队与发展:由帅初领导的国际化团队,80%的量子币用于社区,20%奖励团队和投资者。量子链可在币安、Gate.io、OKX、Bithumb和抹茶交易所交易。

虚拟币最老的币排行榜最新更新 虚拟币最老的币排行榜最新更新 Apr 22, 2025 am 07:18 AM

虚拟货币“最老”排行榜如下:1. 比特币(BTC),发行于2009年1月3日,是首个去中心化数字货币。2. 莱特币(LTC),发行于2011年10月7日,被称为“比特币的轻量版”。3. 瑞波币(XRP),发行于2011年,专为跨境支付设计。4. 狗狗币(DOGE),发行于2013年12月6日,基于莱特币代码的“迷因币”。5. 以太坊(ETH),发行于2015年7月30日,首个支持智能合约的平台。6. 泰达币(USDT),发行于2014年,是首个与美元1:1锚定的稳定币。7. 艾达币(ADA),发

See all articles