123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- <?php
- namespace refill\dixin_normal;
- class demo
- {
- //默认配置
- protected $config = [
- "access_token" => "您的访问token",
- "sign_key" => "您的签名key",
- 'url' =>'http://openapi.baishouopen.com/method',
- 'test_url' =>'http://t.openapi.baishouopen.com/method',
- ];
- //使用
- // $demo = new demo();
- // $rs = $demo->method('maintain.region',[]);
- // method
- // create.order 创建订单
- // query.order 查询订单
- // 更多见文档 http://api.35kds.com/web/#/64?page_id=720
- /**
- * @var string 请求地址
- */
- protected $service;
- /**
- * demo constructor.
- * @param bool $is_debug
- */
- public function __construct($is_debug=true)
- {
- $this->service = $is_debug?$this->config['test_url']:$this->config['url'];
- }
- /**
- * @introduce 请求接口
- * @param string $method 接口名称
- * @param json $data 参数
- * @param string $attach 透传参数
- * @return bool|string
- * @author yanglei
- * @Date 2022/1/27
- */
- public function method($method,$data = [],$attach = ''){
- $param = [
- 'access_token' => $this->config['access_token'],
- 'once' => uniqid() ,
- 'timestamp' => time()*1000,
- 'attach' => $attach,
- 'format' => 'JSON',
- 'sign_type' => 'MD5',
- 'version' => '1.0.0',
- 'method' => $method,
- 'data' => json_encode($data,256),
- ];
- $param = array_merge($param,['sign'=>$this->sign($param,$this->config['sign_key'])]);
- return $this->http($this->service,$param);
- }
- /**
- * @introduce 获取13时间戳
- * @return float
- * @Date 2022/1/27
- * @author yanglei
- */
- function getUnixTimestamp ()
- {
- list($s1, $s2) = explode(' ', microtime());
- return (float)sprintf('%.0f',(floatval($s1) + floatval($s2)) * 1000);
- }
- /**
- * 创建签名
- * @param $params array|object 参与签名的数据
- * @param $signKey string 签名key
- * @return string
- */
- protected function sign($params, $signKey = '')
- {
- if (is_object($params)) { //对象转数组
- $params = json_decode(json_encode($params), true);
- }
- if (!empty($signKey)) {
- $params['sign_key'] = $signKey;
- }
- ksort($params);
- $formatData = [];
- foreach ($params as $k => $v) {
- if (is_array($v) || is_object($v)) {
- $v = json_encode($v,JSON_UNESCAPED_UNICODE);
- }
- if ((!empty($v) || (string)$v === '0') && $k != 'sign') {
- $formatData[] = "$k=$v";
- }
- }
- $signStr = implode('&', $formatData);
- return strtoupper(md5($signStr));
- }
- /**
- * @introduce http post请求
- * @param $url string 请求地址
- * @param $data array 参数
- * @return bool|string
- * @Date 2022/1/4
- * @author yanglei
- */
- protected function http($url, $data){
- $curl = curl_init(); // 启动一个CURL会话
- curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
- curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查
- curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在
- curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)'); // 模拟用户使用的浏览器
- //curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
- //curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
- curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
- curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包x
- curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制 防止死循环
- curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
- $tmpInfo = curl_exec($curl); // 执行操作
- if(curl_errno($curl))
- {
- return false;//捕抓异常
- }
- curl_close($curl); // 关闭CURL会话
- return $tmpInfo; // 返回数据
- }
- }
|