Heim  >  Artikel  >  Backend-Entwicklung  >  Wie man PHP verwendet, um das Zahlungssystem von Ethereum zu entwickeln

Wie man PHP verwendet, um das Zahlungssystem von Ethereum zu entwickeln

不言
不言Original
2018-09-10 14:14:425453Durchsuche

In diesem Artikel geht es um die PHP-Entwicklung des Ethereum-Systems. Er stellt hauptsächlich die Verwendung von PHP für die Entwicklung und Interaktion intelligenter Verträge, die Kontoerstellung, Transaktionen, Übertragungen, Token-Entwicklung, Filter und Ereignisse usw. vor.

Als ich zum ersten Mal über die Implementierung von Zahlungen per Kryptowährung nachdachte, schaute ich mir die verfügbaren Lösungen wie Stripe an. Ich denke, das Problem mit Stripe besteht darin, dass es nur Bitcoin-Zahlungen mit US-Händlerkonten zulässt, daher ist das für mich keine Option. In der Ethereum-Welt sieht es noch schlimmer aus. Es gibt einige neuere Dienste, aber alle möchten den Kuchen teilen.

Was brauchen wir also, um ein Ethereum-Zahlungssystem von Grund auf aufzubauen?

  • Ein Webserver, auf dem PHP ausgeführt wird.

  • Mindestens ein Paritätsknoten in einem privaten Netzwerk mit aktiviertem RPC.

  • Ein virtueller Adressgenerator auf einem Netzwerkserver, wie z. B. vanity-eth.

Wie funktioniert es?

  • Berechnen Sie den Preis der ETH anhand des aktuellen Preises von Coinbase oder der Kraken-API.

  • Verwenden Sie einen Dummy-Generator, um Adresspaare zu generieren und den privaten Schlüssel zu verschlüsseln oder an einen anderen Server zu übertragen.

  • Zeigen Sie dem Kunden die generierte Adresse und überprüfen Sie die Adresse alle paar Sekunden, wenn die Zahlung eingegangen ist.

Theoretisch scheint es kein Problem zu sein, also lasst es uns bauen.

Schritt 1: Server einrichten

Wir werden vanity-eth in nodejs verwenden, um die Adresse zu generieren.

npm install -g vanity-eth@1.0.4"

Nach der Installation von vanity-eth unter Windows:

Wie man PHP verwendet, um das Zahlungssystem von Ethereum zu entwickeln

Erfordert außerdem einige Etherum-Knoten. Ich verwende Parity, weil es schnell und zuverlässig ist.

Beginnen Sie mit diesen Parametern, setzen Sie die Knoten jedoch nicht direkt dem Internet aus, sondern halten Sie sie hinter einer Firewall ohne Portweiterleitung.

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

Paritätsprotokoll der abgeschlossenen Synchronisierung:

Wie man PHP verwendet, um das Zahlungssystem von Ethereum zu entwickeln

Für eine schnellere Bereitstellung können Sie Parity Docker-Container verwenden. Daten können auch gespeichert werden, sodass Sie nicht jedes Mal neu synchronisieren müssen, wenn der Container neu erstellt wird.

Schritt 2: Zahlungsklasse schreiben

Erstellen Sie zunächst einen Ordner mit dem Namen libs und klonen Sie das PHP-Ethereum-Repo hinein. Das Ethereum-PHP-Projekt ist ein guter Wrapper für die JSON-RPC-Klasse.

Dann verwenden wir die folgende Klasse und speichern sie als ethpay.php. Dies ist die Hauptlogik der Zahlungsabwicklung. Sie können es verwenden, um:

  • Adresspaare zu generieren

  • Guthaben prüfen (ausstehend und abgeschlossen)

  • Von WEI in ETH konvertieren

<?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));
        }
    }
}

Letzter Schritt: Integration in Ihre Website

Je nach Dienst gibt es dafür mehrere Möglichkeiten.

Bei API Heaven stellen wir jedem Kunden eine ETH-Adresse zur Verfügung, an der Gelder eingezahlt werden können. Der Cronjob überprüft jede Minute alle Kundenadressen, um Änderungen festzustellen. Wenn sie ETH zur Adresse hinzufügen, wird das Guthaben in API-Kontingent umgewandelt, sodass sich unsere Kunden nicht einmal auf der Website anmelden müssen, um Geld hinzuzufügen.

Beispielintegration im API Heaven:

Wie man PHP verwendet, um das Zahlungssystem von Ethereum zu entwickeln

Ein anderer Ansatz besteht darin, einen Festpreis zu berechnen und diesen in der Benutzersitzung zu speichern. Der Kunde muss auf der Website bezahlen und Sie müssen AJAX verwenden, um den Zahlungseingang abzufragen. Ist der volle Betrag eingegangen, wird der Verkauf im Backend ausgelöst.

Das Beste daran ist, dass Sie keinen externen Dienst benötigen, um das Ethereum-Zahlungssystem auf Ihrer Website zu integrieren. Kommen Sie und lernen und spielen Sie gemeinsam Ethereum.

Verwandte Empfehlungen:

So entwickeln Sie ein Online-Zahlungssystem mit PHP

So entwickeln Sie ein virtuelles Domain-Name-System

Das obige ist der detaillierte Inhalt vonWie man PHP verwendet, um das Zahlungssystem von Ethereum zu entwickeln. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn