この記事はイーサリアム システムの PHP 開発に関するもので、主にスマート コントラクトの開発と対話、アカウントの作成、トランザクション、送金、トークンの開発、フィルターとイベントなどのための PHP の使用法を紹介します。
最初に暗号通貨による支払いの実装を検討したとき、Stripe などの利用可能なソリューションを検討しました。 Stripe の問題は、米国の販売アカウントでのみビットコイン支払いを許可していることだと思うので、それは私にとって選択肢ではありません。イーサリアムの世界では、状況はさらに悪化しているようです。新しいサービスもいくつかありますが、それらはすべてケーキを共有したいと考えています。
それでは、イーサリアム決済システムをゼロから構築するには何が必要なのでしょうか?
npm install -g vanity-eth@1.0.4"Windows に vanity-eth をインストールした後:
また、いくつかの Etherum ノードが必要です。高速で信頼性の高いパリティを使用しています。 これらのパラメータを使用して起動しますが、ノードをインターネットに直接公開せず、ポート転送を行わずにファイアウォールの内側に保持します。
parity --jsonrpc-interface 0.0.0.0 --jsonrpc-hosts="all" --auto-update=all --jsonrpc-cors null完了した同期のパリティ ログ:
デプロイを高速化するために、パリティ Docker コンテナを使用できます。データを保存することもできるため、コンテナーが再作成されるたびに再同期する必要がなくなります。 ステップ 2: 支払いクラスを作成するまず、
libs というフォルダーを作成し、その中に php-ethereum リポジトリのクローンを作成します。 ethereum-php プロジェクトは、json-rpc クラスの優れたラッパーです。
ethpay.php として保存します。これが支払い処理のメインロジックです。これを使用して、次のことができます。
<?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 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 アドレスを各顧客に提供しています。 cron ジョブは、すべての顧客アドレスを毎分チェックして変更を検出します。アドレスに ETH を追加すると、残高が API クォータに変換されるため、顧客は資金を追加するためにサイトにログインする必要さえありません。
API Heaven への統合サンプル:
もう 1 つのアプローチは、固定価格を計算してユーザー セッションに保存することです。顧客は Web サイトで支払う必要があり、AJAX を使用して受け取った支払いを照会する必要があります。全額を受け取った場合、バックエンドが販売をトリガーします。
何よりも、Web サイトにイーサリアム支払いシステムを統合するために外部サービスは必要ありません。一緒にイーサリアムを学び、遊びましょう。
関連する推奨事項:
PHP を使用してオンライン決済システムを開発する方法仮想ドメイン名システムを開発する方法以上がphpを使ってイーサリアムの決済システムを開発する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。