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();

Wednesday, 27 May 2020

DHL acquires stake in Link Commerce developed by MallforAfrica.com

DHL has acquired a minority stake in Link Commerce, a turn-key e-commerce company that grew out of MallforAfrica.com — a Nigerian digital-retail startup.

Link Commerce offers a white-label solution for doing digital-sales in emerging markets.

Retailers can plug into the company’s e-commerce platform to create a web-based storefront that manages payments and logistics.

With the investment one of the world’s largest delivery services looks to build a broader client-base globally using a business built in Africa.

DHL is trying to get their hands more into global e-commerce…across the world and they figured our platform was a good way to do it,” Link Commerce CEO Chris Folayan told TechCrunch.

Folayan originally founded MallforAfrica, which paved the way for Link Commerce. DHL’s investment in the company —  the amount of which is undisclosed — has roots in collaboration with Folayan’s original startup.

MallforAfrica began a partnership with DHL in 2015 and launched DHL Africa eShop in 2019. The sales platform is powered by Link Commerce and has brought more than 200 U.S. and U.K. sellers — from Neiman Marcus to Carters — online to African consumers in 34 countries.

DHL AFRICA ESHOP MAP

Image Credits: DHL

Similar to MallforAfrica’s model, Africa eShop allows users to purchase goods directly from the websites of any of the app’s global partners.

For the global retailers selling on Africa eShop, the hurdles that held back distribution on the continent — payments, currency risk, logistics — are handled by the underlying Link Commerce operating platform.

“That’s what our service does. It takes care of that whole ecosystem to enable global e-commerce to exist, no matter what country you’re in,” Folayan told TechCrunch in 2019.

Link Commerce was built out of Folayan’s startup MallforAfrica.com, which he founded the in 2011 after studying and working in the U.S.

A common practice among Africans — that of giving lists of goods to family members abroad to buy and bring home — highlighted a gap between supply and demand for the continent’s consumer markets.

With MallforAfrica Folayan aimed to close that gap by allowing people on the continent to purchase goods from global retailers directly online.

MallforAfrica and Link Commerce founder Chris Folayan, Image Credits: MallforAfrica

The e-commerce site went on to onboard over 250 global retailers and now employs 30 people at order processing facilities in Oregon and the UK.

MallforAfrica’s Africa eShop expansion put it on a footing to compete with Pan African e-commerce leader Jumia — which went public on the NYSE in 2019 — and China’s Alibaba, anticipated to enter online retail on the continent at some point.

The Link Commerce, DHL deal won’t change that, but Folayan has shifted the hirearchy of his businesses to make Link Commerce the lead operation and Africa one market of many.

Image Credits: Link Commerce

“We changed the structure. So now Link Commerce is above MallforAfrica and MallforAfrica is now powered by Link Commerce,” Folayan explained on a recent call.

“Right now the focus is on Africa…but we’re taking this global,” he added.

Folayan and DHL plan to extend the platform to emerging markets around the world, where other companies may look to grow by wrapping an online store, payments, and logistics solution around their core business.

That could include any large entity that wants to launch an international e-commerce site, according to Folayan.

“Link Commerce is focused on banks, mobile companies, shipping companies and partnering with them to expand globally,” he said.

That’s a big leap from Folayan’s original venture, MallforAfrica.com

What began as a startup to sell brand name jeans and sneakers online in Africa, has pivoted to a global e-commerce fulfillment business partially owned by logistics giant DHL.



from TechCrunch https://ift.tt/3dcvEVp
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support