GET
GET = 'get'
Class Device.
$http : \EasyWeChat\Core\Http
Http instance.
$accessToken : \EasyWeChat\Core\AccessToken
The request token.
__construct(\EasyWeChat\Core\AccessToken $accessToken, $config)
Constructor.
\EasyWeChat\Core\AccessToken | $accessToken | |
$config |
getHttp() : \EasyWeChat\Core\Http
Return the http instance.
setHttp(\EasyWeChat\Core\Http $http) : $this
Set the http instance.
\EasyWeChat\Core\Http | $http |
getAccessToken() : \EasyWeChat\Core\AccessToken
Return the current accessToken.
setAccessToken(\EasyWeChat\Core\AccessToken $accessToken) : $this
Set the request token.
\EasyWeChat\Core\AccessToken | $accessToken |
parseJSON(string $method, array $args) : \EasyWeChat\Support\Collection
Parse JSON from response and check error.
string | $method | |
array | $args |
| null
sendToDevice( $deviceId, $openId, $content) : \EasyWeChat\Support\Collection
Send message to device.
$deviceId | ||
$openId | ||
$content |
<?php
/*
* This file is part of the overtrue/wechat.
*
* (c) overtrue <i@overtrue.me>
*
* This source file is subject to the MIT license that is bundled
* with this source code in the file LICENSE.
*/
/**
* Device.php.
*
* @author soone <66812590@qq.com>
* @copyright 2016 soone <66812590@qq.com>
*/
namespace EasyWeChat\Device;
use EasyWeChat\Core\AbstractAPI;
use EasyWeChat\Core\AccessToken;
/**
* Class Device.
*/
class Device extends AbstractAPI
{
protected $deviceType;
protected $productId;
protected $config;
const API_TRANS_MSG = 'https://api.weixin.qq.com/device/transmsg';
const API_CREATE = 'https://api.weixin.qq.com/device/create_qrcode';
const API_DEV_STAT = 'https://api.weixin.qq.com/device/get_stat';
const API_DEV_AUTH = 'https://api.weixin.qq.com/device/authorize_device';
const API_DEV_GET_QRCODE = 'https://api.weixin.qq.com/device/getqrcode';
const API_DEV_VERIFY_QRCODE = 'https://api.weixin.qq.com/device/verify_qrcode';
const API_DEV_BIND = 'https://api.weixin.qq.com/device/bind';
const API_DEV_UNBIND = 'https://api.weixin.qq.com/device/unbind';
const API_DEV_COMPEL_BIND = 'https://api.weixin.qq.com/device/compel_bind';
const API_DEV_COMPEL_UNBIND = 'https://api.weixin.qq.com/device/compel_unbind';
const API_DEV_GET_OPENID = 'https://api.weixin.qq.com/device/get_openid';
const API_USER_DEV_BIND = 'https://api.weixin.qq.com/device/get_bind_device';
public function __construct(AccessToken $accessToken, $config)
{
parent::setAccessToken($accessToken);
$this->config = $config;
$this->deviceType = $this->config['device_type'];
$this->productId = $this->config['product_id'];
}
public function setProductId($productId)
{
$this->productId = $productId;
return $this;
}
/**
* Send message to device.
*
* @param int $sceneValue
*
* @return \EasyWeChat\Support\Collection
*/
public function sendToDevice($deviceId, $openId, $content)
{
$params = [
'device_type' => $this->deviceType,
'device_id' => $deviceId,
'open_id' => $openId,
'content' => base64_decode($content, true),
];
return $this->parseJSON('json', [self::API_TRANS_MSG, $params]);
}
public function getDeviceQrcode(array $deviceIds)
{
$params = [
'device_num' => count($deviceIds),
'device_id_list' => $deviceIds,
];
return $this->parseJSON('json', [self::API_CREATE, $params]);
}
public function authorizeDevice(array $deviceInfos, $opType = 0)
{
$params = [
'device_num' => count($deviceInfos),
'device_list' => $this->getDeviceList($deviceInfos),
'op_type' => $opType,
'product_id' => $this->productId,
];
return $this->parseJSON('json', [self::API_DEV_AUTH, $params]);
}
protected function getDeviceList($deviceInfos)
{
$res = [];
foreach ($deviceInfos as $dInfo) {
$data = [
'id' => $dInfo['deviceId'],
'mac' => $dInfo['mac'],
'connect_protocol' => $this->config['connect_protocol'],
'auth_key' => $this->config['auth_key'],
'close_strategy' => $this->config['close_strategy'],
'conn_strategy' => $this->config['conn_strategy'],
'crypt_method' => $this->config['crypt_method'],
'auth_ver' => $this->config['auth_ver'],
'manu_mac_pos' => $this->config['manu_mac_pos'],
'ser_mac_pos' => $this->config['ser_mac_pos'],
];
!empty($this->config['ble_simple_protocol']) ? $data['ble_simple_protocol'] = $this->config['ble_simple_protocol'] : '';
$res[] = $data;
}
return $res;
}
public function createDeviceId()
{
$params = [
'product_id' => $this->productId,
];
return $this->parseJSON('get', [self::API_DEV_GET_QRCODE, $params]);
}
public function bind($openId, $deviceId, $ticket)
{
$params = [
'ticket' => $ticket,
'device_id' => $deviceId,
'openid' => $openId,
];
return $this->parseJSON('json', [self::API_DEV_BIND, $params]);
}
public function unbind($openId, $deviceId, $ticket)
{
$params = [
'ticket' => $ticket,
'device_id' => $deviceId,
'openid' => $openId,
];
return $this->parseJSON('json', [self::API_DEV_UNBIND, $params]);
}
public function compelBind($openId, $deviceId)
{
$params = [
'device_id' => $deviceId,
'openid' => $openId,
];
return $this->parseJSON('json', [self::API_DEV_COMPEL_BIND, $params]);
}
public function compelUnbind($openId, $deviceId)
{
$params = [
'device_id' => $deviceId,
'openid' => $openId,
];
return $this->parseJSON('json', [self::API_DEV_COMPEL_UNBIND, $params]);
}
public function getDeviceStatus($deviceId)
{
$params = [
'device_id' => $deviceId,
];
return $this->parseJSON('get', [self::API_DEV_STAT, $params]);
}
public function verifyQrcode($ticket)
{
$params = [
'ticket' => $ticket,
];
return $this->parseJSON('post', [self::API_DEV_VERIFY_QRCODE, $params]);
}
public function getOpenid($deviceId)
{
$params = [
'device_type' => $this->deviceType,
'device_id' => $deviceId,
];
return $this->parseJSON('get', [self::API_DEV_GET_OPENID, $params]);
}
public function getDeviceidByOpenid($openid)
{
$params = [
'openid' => $openid,
];
return $this->parseJSON('get', [self::API_USER_DEV_BIND, $params]);
}
}