首頁  >  文章  >  後端開發  >  如何利用php開發以太坊的支付系統

如何利用php開發以太坊的支付系統

不言
不言原創
2018-09-10 14:14:425533瀏覽

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

如何利用php開發以太坊的支付系統

#還需要一些Etherum節點。我正在使用Parity,因為它快速可靠。

使用這些參數啟動它,但不要將節點直接暴露給Internet,將它們保留在防火牆後面而不進行連接埠轉送。

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

完成同步的奇偶校驗日誌:

如何利用php開發以太坊的支付系統

#為了更快部署,您可以使用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中的範例整合:

如何利用php開發以太坊的支付系統

#另一個方法是計算固定價格並將其保存在使用者會話中。客戶必須在網站上付款,並且您需要向AJAX查詢已收到的付款。如果收到全部金額,後端會觸發銷售。

最重要的是,您不需要外部服務來在您的網站上整合以太坊支付系統。來一起邊學邊玩以太坊吧。

相關推薦:

如何用PHP開發線上支付系統

#如何開發一個虛擬網域系統

以上是如何利用php開發以太坊的支付系統的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn