1. 程式人生 > >PHP開發區塊鏈以太坊支付系統

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後:

11831773-4ce50eed2eb59e8a.jpg

image

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

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

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

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

11831773-0046ba5c68c10e9e.jpg

image

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

11831773-10c25e889977c2da.jpg

image

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

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

======================================================================

如果你想直接動手學習PHP與以太坊的實戰內容,推薦我們的教程:

php以太坊教程,主要是介紹使用php進行智慧合約開發互動,進行賬號建立、交易、轉賬、代幣開發以及過濾器和事件等內容。

其他區塊鏈教程:

  • 以太坊入門教程,主要介紹智慧合約與dapp應用開發,適合入門。
  • 以太坊開發進階教程,主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。
  • java以太坊開發教程,主要是針對java和android程式設計師進行區塊鏈以太坊開發的web3j詳解。
  • python以太坊,主要是針對python工程師使用web3.py進行區塊鏈以太坊開發的詳解。
  • C#以太坊,主要講解如何使用C#開發基於.Net的以太坊應用,包括賬戶管理、狀態與交易、智慧合約開發與互動、過濾器和交易等。
  • php比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Php程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Php工程師不可多得的比特幣開發學習課程。
  • java比特幣開發教程,本課程面向初學者,內容即涵蓋比特幣的核心概念,例如區塊鏈儲存、去中心化共識機制、金鑰與指令碼、交易與UTXO等,同時也詳細講解如何在Java程式碼中整合比特幣支援功能,例如建立地址、管理錢包、構造裸交易等,是Java工程師不可多得的比特幣開發學習課程。
  • EOS入門教程,本課程幫助你快速入門EOS區塊鏈去中心化應用的開發,內容涵蓋EOS工具鏈、賬戶與錢包、發行代幣、智慧合約開發與部署、使用程式碼與智慧合約互動等核心知識點,最後綜合運用各知識點完成一個便籤DApp的開發。

匯智網原創翻譯,轉載請標明出處。這裡是原文

相關推薦

PHP開發區塊支付系統

當我第一次考慮通過加密貨幣實施支付時,我查看了像Stripe這樣的可用解決方案。我覺得Stripe的問題在於,它只允許使用美國商家帳戶進行比特幣支付,所以這對我來說不是一個選擇。在以太坊世界,它看起來更糟糕。有一些較新的服務,但他們都想要分享蛋糕。 那麼從頭開始構建以太坊支

如何招聘面試區塊開發人才

對優質區塊鏈開發人員的需求很大,這是有充分理由的。區塊鏈和ICO領域在過去幾年中爆炸式增長。越來越多的人試圖進入並在該領域中揚名立萬。但是,為了獲得成功,他們擁有一支強大而健全的團隊至關重要。區塊鏈開發人員,更準確地說,以太坊開發人員是該團隊中最關鍵的組成部分。 因此,在本指南中,

區塊開發

想知道更多區塊鏈技術問答,請百度【鏈客區塊鏈技術問答社群】,有專業的區塊鏈技術問答。 關於kafka,上面說是order先接收client的交易資訊然後發給kafka的leader節點,leader節點發給其他kafka節點進行排序,然後存在topic,order從相應的topic獲取資

[區塊]手動添加靜態節點

密碼 分享圖片 技術 pda 設置密碼 提高 unpack top class 如果每次都向某個節點同步區塊,可以手動的添加為靜態節點,這樣可以大大的提高同步效率 這裏套用一下https://blog.csdn.net/weixin_40903789/article/det

回望Vinay2015年的文章:內容可程式設計的區塊——的未來

區塊鏈的火熱就不用說了,回看一下Vinay Gupta 2015年發表的文章《內容可程式設計的區塊鏈:以太坊的未來》,感受一下先行者的思想。 到本文結束時,你將瞭解一般的區塊鏈(特別是下一代區塊鏈平臺——以太坊),這足以確定它們對你未來生活的意義。 天網 以太坊帶有強烈的情感

區塊-環境-unbtun 16.04 安裝谷歌瀏覽器

1. 安裝Chrome瀏覽器 # wget http://www.linuxidc.com/files/repo/google-chrome.list -P /etc/apt/sources.list.d/ # wget -q -O - https://dl.google

深入區塊原始碼之挖礦

// Miner creates blocks and searches for proof-of-work values. type Miner struct { mux *event.TypeMux worker *worker coinbase co

區塊(智慧合約)與傳統軟體的區別

區塊鏈與傳統軟體設計有很多區別: 1. 區塊鏈是分散式的,而傳統軟體大多是中心化的 2. 區塊鏈通常有無數個備份(每個礦工處都會有一個完整的區塊鏈備份),而傳統軟體只會在單個或者若干個節點做備份 3. 區塊鏈是一個鏈式結構,在區塊鏈上的所有記錄都是可追溯且無法修改的,而

上下文可程式設計區塊——的未來

區塊鏈的火熱就不用說了,回看一下Vinay Gupta 2015年發表的文章《內容可程式設計的區塊鏈:以太坊的未來》,感受一下先行者的思想。 到本文結束時,你將瞭解一般的區塊鏈(特別是下一代區塊鏈平臺——以太坊),這足以確定它們對你未來生活的意義。 image 天網

可程式設計區塊的未來

區塊鏈的火熱就不用說了,回看一下Vinay Gupta 2015年發表的文章《內容可程式設計的區塊鏈:以太坊的未來》,感受一下先行者的思想。 到本文結束時,你將瞭解一般的區塊鏈(特別是下一代區塊鏈平臺——以太坊),這足以確定它們對你未來生活的意義。 天網 以

php編寫一個支付系統

當我第一次考慮通過加密貨幣實施支付時,我查看了像Stripe這樣的可用解決方案。我覺得Stripe的問題在於,它只允許使用美國商家帳戶進行比特幣支付,所以這對我來說不是一個選擇。在以太坊世界,它看起來更糟糕。有一些較新的服務,但他們都想要分享蛋糕。 那麼從頭開

深入區塊原始碼之p2p通訊

一、p2p網路中分為有結構和無結構的網路 無結構化的: 這種p2p網路即最普通的,不對結構作特別設計的實現方案。 優點是結構簡單易於組建,網路區域性區域內個體可任意分佈, 反正此時網路結構對此也沒有限制;特別是在應對大量新個體加 入網路和舊個體離開網路(“c

區塊 Ethereum RLP協議領略每一個位元組的意義

合約交易 ////////////////////// /// 合約交易二進位制資料解析 RLP 協議 /// https://github.com/ethereum/wiki/wiki/RLP

區塊DApp高薪實戰有感

  區塊鏈給我的感覺就是記賬簿。在區塊鏈系統中,每個人都可以來進行記賬,系統會選擇記賬最快最好的人,把這個人所記錄的內容寫到賬本,並將這賬本內容發給系統內所有人備份。   區塊鏈領域的高技術性含量和極度稀缺性在從業者薪資上得到反映,區塊鏈從業者平均年薪達34.

區塊--構建私有

構建私有鏈 構建私有鏈,其實最大目的還是為了挖礦,所以需要注意,網路埠一定不要選擇和主網一樣的 –networked 1,而是取與1 不同的,這樣就避免了同步環節。 創世區塊位置: 建立多個賬號備用:personal.newAccount(“123456”) 初始化上帝

區塊開發(3.客戶端命令列選項彙總)

轉自 https://blog.csdn.net/wo541075754/article/details/53096808本篇部落格的內容可通過以下命令在客戶端中進行檢視:geth --help1也可以訪問github上的wiki文件檢視,地址為:https://github

區塊項目開發區塊沖擊著支付手段

貨幣 同時 信用 發出 試圖 的人 有一個 全球 安全性 傳統的支付手段是信用卡、銀行卡或 PayPal 等,銀行或第三方金融機構要為資金的流動負責,同時也要防止交易過程中發生任何盜竊行為,充分保證人們的資金安全。 為了保證資金的正常流動和安全性,銀行或第三方金融機構的成本

生態系統中工具、類庫和開發技術

如果你是以太坊區塊鏈的新手,那麼你可能會不知所措(至少我是),並試圖瞭解以太坊生態系統中的所有工具和技術。因此,我決定在開始學習以太坊時簡要描述下你經常遇到的各種元件。希望這將有助於你全面瞭解以太坊生態系統以及所有部分如何組合在一起。 1.以太坊 以太坊是一個智慧合約區塊鏈,你可以在

開發】如何開發一個編譯智能合約並且發布的平臺(二)

vid new 有一個 tran slim ole https parse 交易 接上一章的內容,這篇介紹 deploy相關和結果演示。 deploy一個合約的過程中,需要計算發布的消耗和nonce值。 當進行每筆交易時,發送人設定Gas Limit 和Gas Pric

給 Web 開發人員的入坑指南

以太坊現在各種學習資料數不勝數,但由於以太坊正處於飛速發展階段,有些學習資料很快就過時了。所以想找到有價值的資料無異於大海撈針。我費了很大功夫,才建立起對以太坊的整體認識,搞清楚它的工作機制。我相信很多躍躍欲試的開發人員正面臨著跟我一樣的問題,所以我把自己的認識整理出來,希望能對大家有