98 lines
1.8 KiB
PHP
98 lines
1.8 KiB
PHP
<?php
|
||
namespace Joypack\Tencent\Map;
|
||
|
||
/**
|
||
* 腾讯位置服务
|
||
* 公共参数
|
||
*/
|
||
class Option
|
||
{
|
||
const OUTPUT_JSON = 'json';
|
||
const OUTPUT_JSONP = 'jsonp';
|
||
|
||
protected $option = [];
|
||
|
||
protected $secret;
|
||
|
||
public function __construct($key=null, $secret=null)
|
||
{
|
||
$this->setKey($key);
|
||
$this->setSecret($secret);
|
||
}
|
||
|
||
public function setSecret($value)
|
||
{
|
||
$this->secret = $value;
|
||
}
|
||
|
||
/**
|
||
* 开发密钥
|
||
* @param string $value
|
||
*/
|
||
public function setKey($value)
|
||
{
|
||
$this->option['key'] = $value;
|
||
}
|
||
|
||
/**
|
||
* 返回格式:支持JSON/JSONP,默认JSON
|
||
* @param string $value
|
||
*/
|
||
public function setOutput($value=self::OUTPUT_JSON)
|
||
{
|
||
$this->option['output'] = $value;
|
||
}
|
||
|
||
/**
|
||
* JSONP方式回调函数
|
||
* @param string $value
|
||
*/
|
||
public function setCallback($value)
|
||
{
|
||
$this->option['callback'] = $value;
|
||
}
|
||
|
||
/**
|
||
* 签名
|
||
* @param string $uri
|
||
*/
|
||
public function setSig($uri)
|
||
{
|
||
$this->option['sig'] = $this->buildSig($uri, $this->getAll());
|
||
}
|
||
|
||
/**
|
||
* 获得所有参数
|
||
* @return array
|
||
*/
|
||
public function getAll()
|
||
{
|
||
return $this->option;
|
||
}
|
||
|
||
/**
|
||
* 生成签名
|
||
* @param string $uri
|
||
* @return string
|
||
*/
|
||
protected function buildSig($uri, $option)
|
||
{
|
||
ksort($option);
|
||
|
||
$pieces = [];
|
||
foreach ($option as $key => $val)
|
||
{
|
||
$pieces[] = "{$key}={$val}";
|
||
}
|
||
|
||
$str = sprintf('%s?%s', rtrim($uri, '/'), implode('&', $pieces));
|
||
|
||
/*
|
||
echo '<pre>';
|
||
print_r("{$str}{$this->secret}");
|
||
die;
|
||
//*/
|
||
|
||
return md5("{$str}{$this->secret}");
|
||
}
|
||
} |