Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Friday, 30 November 2018

N26 says it now has more than 2M customers

N26 announced today that it now has more than 2 million customers — up from 1.5 million in October.

The German fintech startup’s CEO Valentin Stalf was interviewed onstage at Disrupt Berlin with Tandem CEO Ricky Knox, where they discussed the growth of what are sometimes called challenger banks or neobanks — new banks that are taking on the incumbents by focusing on digital tools.

Stalf said N26 is seeing more than €1.5 billion in transactions each month, with €1 billion in deposits. He also discussed the company’s recent launch in the United Kingdom — he didn’t know the exact number of U.K. users, but estimated that the company has tens of thousands of U.K. accounts, with between 1,500 and 2,000 new signups on a single day three days ago.

Meanwhile, Knox said Tandem now has nearly half a million users in the U.K. (“This year, we’re seeing everybody’s growing really quickly.”) He also noted that because Tandem allows users to aggregate different accounts, he’s noticed some of those users are starting to become more focused on individual services.

“What tends to happen, particularly with the early adopter audience, is they will open [an] account with everybody because they want to check it out, they want to get the best product,” he said. “And then what you’ll see is over time, them kind of picking a horse — depending on the functionality they like, depending on, you know, the service they’re getting there — and settling in.”

Tandem is also expanding geographically, specifically to Hong Kong through a deal with Convoy Global Holdings. Asked why he’s making the leap to Asia before launching in other European markets, Knox said, “There are a load of massive Asian markets … The exciting thing here is the opportunity, as I said, for a global bank, and some of these Asian markets are really ripe for disruption.”

In discussing the different models for challenger banks, Knox warned against the dangers of the “marketplace bank” model, where banks make money by connecting customers to third-party services.

“What we found is, the more we try and push revenue in that area there, the less customers love it,” he said. “That’s the challenge with marketplaces: If you build your business model around it, you’ve got an inherent contradiction between customers loving you less when you make more money.”

Instead, Knox argued that customers have a better experience if the bank is willing to recommend free or low-priced services: “And actually at the backend, we’re still making money the same way the bank makes money. So we’re able to fund, if you like, all this great customer stuff at the front end.”

Moderator Romain Dillet quickly pointed out that Stalf was shaking his head while Knox was making his arguments.

“What we see with our customers is, I think if we have a great product, they’re normally also willing to pay a little bit for it,” Stalf said. “It needs to be transparent, and it needs to be a good value to consumers. But I think it’s untrue that customers are always not choosing a product if you price it.”

As for whether we’ll be seeing consolidation in the industry over the next few years, Knox argued, “I’d say there’s plenty of room for the existing cadre of neobanks to be incredibly successful on a global basis without any mergers or acquisitions.” He suggested it’s more likely that the established banks start trying to acquire the challengers, although he said, “That’s not a route we want to take.”

“I think there’s a couple players that are set for being a global bank, and I think we are trying to take the shot to be a global bank,” Stalf added. “I think it’s about building up 50 to 100 million users in the next couple years.”



from TechCrunch https://ift.tt/2SmItBL
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support