PHPは以太坊支払いシステムを開発する

7184 ワード

暗号化された通貨で支払いを実施することを初めて考えたとき、Stripeのような利用可能なソリューションを見ました.Stripeの問題は、アメリカの業者口座でビットコインの支払いしか許可されていないので、私にとって選択肢ではないと思います.エーテル坊の世界では、もっと悪いように見えます.新しいサービスがありますが、ケーキを共有したいと思っています.
では、最初からイーサー坊決済システムを構築するには、何が必要ですか?
  • PHPのWebサーバを実行します.
  • RPCが有効になっているプライベートネットワークには、少なくとも1つのParityノードがあります.
  • ネットワークサーバ上のvanity-ethなどの仮想アドレスジェネレータ.

  • どうやって働いてるの?
  • coinbaseまたはkraken APIの現在の価格を使用してETHの価格を計算します.
  • 仮想ジェネレータを使用してアドレスペアを生成し、秘密鍵を暗号化または別のサーバに転送します.
  • は、生成されたアドレスを顧客に表示し、支払いを受信した場合、数秒おきにアドレスをチェックします.

  • 理論的には問題ないようですが、それを構築しましょう.
    ステップ1:サーバの設定
    nodejsのvanity-ethを使用してアドレスを生成します.
    npm install -g [email protected]"
    

    Windowsにvanity-ethをインストールした後:
    Etherumノードもいくつか必要です.私はParityを使っています.それは迅速で信頼できるからです.
    これらのパラメータを使用して起動しますが、ノードをインターネットに直接露出しないで、ポート転送せずにファイアウォールの後ろに保持します.
    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
  • に変換
    '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));
            }
        }
    }
    

    最後のステップ:Webサイトとの統合
    サービスに応じて、この操作を実行する方法はいくつかあります.
    API Heavenでは、お客様一人一人に資金を預けることができるETHアドレスを提供しています.cronjobは、変更を検出するためにすべての顧客アドレスを毎分チェックします.ETHをアドレスに追加すると、残高はAPI割当に変換されるため、お客様はサイトにログインして資金を追加する必要はありません.
    API Heavenの統合例:
    もう1つの方法は、固定価格を計算し、ユーザー・セッションに保存することです.お客様は、Webサイトで支払う必要があります.また、AJAXに受け取った支払いを問い合わせる必要があります.すべての金額を受け取ると、バックエンドが販売をトリガーします.
    最も重要なのは、外部サービスを必要とせずに、WebサイトにEthernet決済システムを統合することです.一緒に勉強しながらエーテル坊を遊びましょう.
    ======================================================================
    PHPとイーサー坊の実戦内容を直接学びたいなら、私たちのチュートリアルをお勧めします.
    php以太坊チュートリアルでは、主にphpを使用してスマート契約開発のインタラクションを行い、アカウントの作成、取引、振替、コイン開発、フィルタとイベントなどの内容を紹介しています.
    汇智网オリジナル翻訳、転載は出典を明記してください.ここは原文です