currency; return self::$BASE_URL . 'api/price?currency=' . strtoupper($currency); } public function getDescription() { global $global; $obj = $this->getDataObject(); $return = "Blockonomics is a decentralized and permissionless bitcoin payment solution."; $return .= "
HTTP Callback URL:
{$global['webSiteRootURL']}plugin/BlockonomicsYPT/callback.php?secret={$obj->Secret}"; return $return; } public function getName() { return "BlockonomicsYPT"; } public function getUUID() { return "bitcoin9-c0b6-4264-85cb-47ae076d949f"; } public function getPluginVersion() { return "1.0"; } public function getEmptyDataObject() { global $global; $obj = new stdClass(); $obj->APIKey = "NUdcVWq0Juz29qnJH9hebgdvEY0qiSIpWZo5nCWXask"; $obj->Secret = md5($global['systemRootPath'] . $global['salt']); $obj->ExpireInSeconds = 600; return $obj; } public function setUpPayment($total_cost = '1.00') { global $global; $total_cost = floatval($total_cost); $obj = $this->getDataObject(); $objWallet = AVideoPlugin::getObjectData("YPTWallet"); $currency = $objWallet->currency; //return here if total is empty if (empty($total_cost)) { echo $json_response = json_encode(array("error" => "Total Is Empty")); return; } if (!User::isLogged()) { echo $json_response = json_encode(array("error" => "Must be logged in")); return; } //Generate new address for this invoice $new_address = $this->getNewAddress($obj->APIKey); if (empty($new_address)) { _error_log('Blockonomics ERROR 1: ' . $contents . ' ' . json_last_error_msg(), AVideoLog::$ERROR); return false; } //Getting price $options = array('http' => array('method' => 'GET')); $context = stream_context_create($options); $contents = url_get_contents(self::getPRICE_URL(), $context, 0, true); $price = _json_decode($contents); //Total Cart value in bits $bits = intval(1.0e8 * $total_cost / $price->price); // save on database $b = new BlockonomicsOrder(0); $b->setAddr($new_address); $b->setBits($bits); $b->setBits_payed(0); $b->setStatus("-1"); $b->setTxid(""); $b->setUsers_id(User::getId()); $b->setTotal_value($total_cost); $b->setCurrency($currency); return $b->save(); } public function getNewAddress($api_key) { $url = 'https://www.blockonomics.co/api/new_address'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); $header = "Authorization: Bearer " . $api_key; $headers = array(); $headers[] = $header; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $contents = curl_exec($ch); if (curl_errno($ch)) { _error_log("Blockonomics Error 2:" . curl_error($ch)); return false; } $responseObj = _json_decode($contents); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($status == 200) { return $responseObj->address; } else { //echo "
{$responseObj->message}
"; _error_log("Blockonomics Error 3: [{$status}] {$responseObj->message}"); } return false; } }