public function getBalance() { $api_url = 'https://blockchain.info/merchant/' . Config::get('bitcoin.guid') . '/balance'; $api_url .= '?password='******'bitcoin.password')); $api_url .= '&address=' . urlencode(Config::get('bitcoin.wallet_address')); $api_url .= '&confirmations=0'; $response = file_get_contents($api_url); $object = json_decode($response); return array('usd' => Bitcoin::toUSD($object->balance), 'btc' => Bitcoin::toBTC($object->balance), 'satoshi' => $object->balance); }
public function postCreate() { if (!Auth::check()) { return array('success' => false, 'errors' => 'You must be logged in to place any bets.'); } $bet_amount = Bitcoin::toSatoshi(floatval(Input::get('bet_amount'))); $cross_bet_amount = Bitcoin::toSatoshi(floatval(Input::get('cross_bet_amount'))); if ($bet_amount > Auth::user()->getBalance()) { return array('success' => false, 'errors' => array('bet_amount' => 'You don\'t have enough funds to place that bet.')); } if ($bet_amount < Config::get('bitcoin.minimum_bet')) { return array('success' => false, 'errors' => array('bet_amount' => 'Minimum bet amount is ' . Bitcoin::toBTC(Config::get('bitcoin.minimum_bet')) . ' BTC')); } if ($cross_bet_amount < Config::get('bitcoin.minimum_bet')) { return array('success' => false, 'errors' => array('cross_bet_amount' => 'Minimum bet amount is ' . Bitcoin::toBTC(Config::get('bitcoin.minimum_bet')) . ' BTC')); } $type = Input::get('type'); if (!in_array($type, $this->valid_types)) { return array('success' => false, 'errors' => array('type' => 'Invalid.')); } $expiration = intval(Input::get('expiration')); if ($expiration < Config::get('bitcoin.minimum_bet_expiration') || $expiration > Config::get('bitcoin.maximum_bet_expiration')) { return array('success' => false, 'errors' => array('expiration' => 'Invalid.')); } $bet = new Bet(); $bet->type = $type; $bet->created_by_user_id = Auth::user()->id; $bet->bet_amount = $bet_amount; $bet->cross_bet_amount = $cross_bet_amount; $bet->target_price = floatval(Input::get('target_price')); $bet->price_when_created = Bitcoin::toUSD(); $expiresAt = Carbon::now()->addSeconds($expiration); $bet->expires_at = $expiresAt; if ($bet->save()) { Auth::user()->subtractFromBalance($bet_amount); return array('success' => true); } else { return array('success' => false, 'errors' => 'Bet couldn\'t be created.'); } }
public function handleWinner() { if ($this->winner_paid) { return false; } $btc_price = Bitcoin::toUSD(); if ($this->type == 'above') { $winner = $btc_price > $this->target_price ? $this->created_by_user_id : $this->accepted_by_user_id; } else { if ($this->type == 'under') { $winner = $btc_price < $this->target_price ? $this->created_by_user_id : $this->accepted_by_user_id; } } $this->winner_user_id = $winner; $winnings = (1 - Config::get('bitcoin.winnings_fee')) * (intval($this->bet_amount) + intval($this->cross_bet_amount)); $winner_model = User::where('id', $winner)->first(); $winner_model->addToBalance($winnings); Notify::alert("User {$winner} paid " . Bitcoin::toBTC($winnings) . " BTC"); $this->winner_paid = 1; $this->save(); return true; }
public static function toUSD($amount = 100000000, $satoshi = true) { $USDPerBTC = Cache::get('bitcoin_price'); return $satoshi ? $USDPerBTC * Bitcoin::toBTC($amount) : $USDPerBTC * $amount; }
public function getBalance($satoshi = true) { $balance = $this->balances()->orderBy('id', 'desc')->pluck('balance'); return is_null($balance) ? 0 : $satoshi ? $balance : Bitcoin::toBTC($balance); }