APIv1_get
一、准备工作
提升开发测试效率,建议使用ApiPost客户端工具做接口测试www.apipost.cn/downl...
我们做了一个案例:docs.apipost.cn/view...
接口简要描述:
简要使用说明
接口地址:
https://www.wmj.com.cn/api/
请求方式:GET/POST
获取appid和appsecret地址:www.wmj.com.cn/open
用微信扫码或邮箱注册登录后取得appid和appsecret
AES加密秘钥一般不需要,请留空。
二、接口详情
1.注册设备方式一(推荐使用)
请求URL:
https://www.wmj.com.cn/api/reglock
请求方式:POST
设备只需注册一次,不需要重复注册。
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appid | 是 | string | 微门禁开放平台申请的appid |
appsecret | 是 | string | 微门禁开放平台申请的appsecret |
sn | 是 | string | 设备序列号 |
返回示例:注册成功
{
"state": 1,
"state_code": 1,
"lock_type": 1,
"lock_status": null,
"state_msg": "注册成功"
}
返回示例:设备已存在
{
"state": 0,
"state_code": 1004,
"state_msg": "设备已存在,请勿重复添加"
}
返回示例:设备未激活
{
"state": 0,
"state_code": 1001,
"state_msg": "未激活设备,请联系管理员"
}
2.注册设备方式二(早期程序使用,兼容性保留)
请求URL:
https://www.wmj.com.cn/api/postlock?appid=wmj_6bd1gtYMZn&appsecret=VIGBwl2dwD0pST2dIMm8MZOeVX3KlT
请求方式:POST
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
sn | 是 | string | 设备序列号,直接放入序列号到body,appid和appsecret放到url |
返回示例
{
"state": 1,
"state_code": 1,
"lock_type": 1,
"lock_status": null,
"sim": {
"iccid": null,
"endtime": false
},
"state_msg": "添加成功"
}
3.开门方式一(推荐使用)
请求URL:
https://www.wmj.com.cn/api/oplock
请求方式:POST
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appid | 是 | string | 无 |
appsecret | 是 | string | 无 |
sn | 是 | string | 无 |
返回示例:开门成功
{
"state": 1,
"state_code": 1,
"status_code": "1",
"lock_type": "1",
"lock_status": "1",
"state_msg": "成功"
}
返回示例:开门失败
{
"state": 0,
"state_code": 0,
"status_code": "1",
"lock_type": "1",
"lock_status": "1",
"state_msg": "失败,网络故障"
}
4.开门方式二(早期程序使用,兼容性保留)
请求URL:
https://www.wmj.com.cn/api/openlock?appid=wmj_6bd1gMZBn&appsecret=VIGBwIvl2dwD0pST2dIMm8MZOe3KlT
请求方式:POST
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
sn | 是 | string | 设备序列号,参数名不用,直接将设备序列号放入body提交 |
返回示例:开门成功
{
"state": 1,
"state_code": 1,
"status_code": "1",
"lock_type": "1",
"lock_status": "1",
"state_msg": "成功"
}
返回示例:开门失败
{
"state": 0,
"state_code": 0,
"status_code": "1",
"lock_type": "1",
"lock_status": "1",
"state_msg": "失败,网络故障"
}
5.查询锁状态 方式一(推荐使用)
请求URL:
https://www.wmj.com.cn/api/lockstatus
请求方式:POST
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appid | 是 | string | 无 |
appsecret | 是 | string | 无 |
sn | 是 | string | 无 |
返回示例:设备在线
{
"state": 1,
"state_code": 1,
"state_msg": "获取成功",
"online": 1,1表示设备在线,0表示设备离线
"ista": null,1表示检测到有人,0表示检测到无人,null为设备不支持该功能
"lockstatus": null,1表示门打开状态,0表示门关闭状态,null为设备不支持该功能
"opentime": null,门开打的时间
"closetime": null,门关闭的时间
}
返回示例:设备离线
{
"state": 1,
"state_code": 1,
"state_msg": "获取成功",
"online": 0,1表示设备在线,0表示设备离线
"ista": null,1表示检测到有人,0表示检测到无人,null为设备不支持该功能
"lockstatus": null,1表示门打开状态,0表示门关闭状态,null为设备不支持该功能
"opentime": null,门开打的时间
"closetime": null,门关闭的时间
}
6.查询锁状态 方式二(早期程序使用,兼容性保留)
请求URL:
https://www.wmj.com.cn/api/lockstate?appid=wmj_6bd1YMZBn&appsecret=VIGBwIvl2dwD0pdIMm8MZOeVX3KlT
请求方式:POST
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
sn | 是 | string | 无 |
返回示例
{
"state": 1,
"state_code": 1,
"state_msg": "获取成功",
"status_msg": "1",
"online": 1,1表示设备在线,0表示设备离线
"ista": null,1表示检测到有人,0表示检测到无人,null为设备不支持该功能
"lockstatus": null,1表示门打开状态,0表示门关闭状态,null为设备不支持该功能
"opentime": null,门开打的时间
"closetime": null,门关闭的时间
"data": {
"online": 1,1表示设备在线,0表示设备离线
}
}
7.删除注册 方式一(推荐使用)
请求URL:
https://www.wmj.com.cn/api/delreglock
请求方式:POST
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appid | 是 | string | 无 |
appsecret | 是 | string | 无 |
sn | 是 | string | 无 |
返回示例:删除成功
{
"state": 1,
"state_code": 1,
"state_msg": "删除成功"
}
返回示例:无权限操作
{
"state": 0,
"state_code": 4005,
"state_msg": "无权限操作"
}
8.删除注册 方式二(早期程序使用,兼容性保留)
请求URL:
https://www.wmj.com.cn/api/dellock?appid=wmj_6d1tYMZB&appsecret=VIGBwIvl2dwD0pST28MZOeVX3KlT
请求方式:POST
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
sn | 是 | string | 无 |
返回示例:删除成功
{
"state": 1,
"state_code": 1,
"state_msg": "删除成功"
}
返回示例:无权限操作
{
"state": 0,
"state_code": 4005,
"state_msg": "无权限操作"
}
9.开关(常通常断)设备控制接口
请求URL:
https://api.wmj.com.cn/api/handle
请求方式:POST
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appid | 是 | string | 无 |
appsecret | 是 | string | 无 |
content | 是 | string | 无 |
content {"sn":"WMJ17100011","status":2}
返回示例
{
"state": 1,
"state_code": 1,
"status_code": "3",
"lock_type": "2",// 2为接通,3为断开
"lock_status": "3",
"state_msg": "成功"
}
10.支持刷IC卡设备添加卡接口
请求URL:
https://www.wmj.com.cn/api/addcard
请求方式:POST
适用于:
序列号开始为WMJ62设备
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appid | 是 | string | 无 |
appsecret | 是 | string | 无 |
sn | 是 | string | 设备序列号 |
cardsn | 是 | string | IC卡卡号 |
endtime | 是 | int | 有效期,时间戳 |
返回示例
{
"state": 1,
"state_code": 200,
"state_msg": "添加成功"
}
{
"state": 1,
"state_code": 201,
"state_msg": "更新成功"
}
11.从设备读取IC卡
请求URL:
https://www.wmj.com.cn/api/readcard
请求方式:POST
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appid | 是 | string | 微门禁appid |
appsecret | 是 | string | 微门禁appsecret |
sn | 是 | string | 序列号 |
返回示例
{
"state": 1,
"state_code": 200,
"state_msg": "读卡成功",
"data": [
{
"carduid": "C0A825CC",
"endtime": "1628759478",
"dateline": "1597223479"
},
{
"carduid": "406B0CCC",
"endtime": "1628759480",
"dateline": "1597223480"
},
{
"carduid": "109810CC",
"endtime": "1628759482",
"dateline": "1597223482"
}
]
}
12.按appid获取帐号下所有刷卡设备开门记录
请求URL:
https://www.wmj.com.cn/api/getcardlog
请求方式:POST
说明:避免数据重复和冗余,本接口数据只能获取1次
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appid | 是 | string | appid |
appsecret | 是 | string | appsecret |
{
"state": 1,
"state_code": 200,
"state_msg": "获取成功",
"data": [
{
"id": "20467793",
"locksn": "WMJ62593198",
"cardsn": "8CEB180E",
"dateline": "1605887198"
},
{
"id": "20467806",
"locksn": "WMJ62593198",
"cardsn": "4CA3150F",
"dateline": "1605887248"
}
]
}
{
"state": 1,
"state_code": 201,
"state_msg": "无数据"
}
12.按设备序列号获取刷卡开门记录
请求URL:
https://www.wmj.com.cn/api/getcardopenlog
请求方式:POST
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appid | 是 | string | appid |
appsecret | 是 | string | appsecret |
sn | 是 | string | 序列号 |
starttime | 否 | string | 开始时间戳 |
返回示例
{
"state": 1,
"state_code": 200,
"state_msg": "获取成功",
"data": [
{
"id": "15578962",
"cardsn": "109810CC",
"dateline": "1597633752"
},
{
"id": "15578951",
"cardsn": "109810CC",
"dateline": "1597633741"
},
{
"id": "15578947",
"cardsn": "109810CC",
"dateline": "1597633733"
},
{
"id": "15578945",
"cardsn": "109810CC",
"dateline": "1597633730"
},
{
"id": "15638697",
"cardsn": "109810CC",
"dateline": "1597724171"
},
{
"id": "15638692",
"cardsn": "406B0CCC",
"dateline": "1597724168"
},
{
"id": "15638688",
"cardsn": "406B0CCC",
"dateline": "1597724165"
},
{
"id": "15638686",
"cardsn": "406B0CCC",
"dateline": "1597724164"
},
{
"id": "15635482",
"cardsn": "109810CC",
"dateline": "1597719855"
},
{
"id": "15635451",
"cardsn": "109810CC",
"dateline": "1597719792"
},
{
"id": "15635438",
"cardsn": "109810CC",
"dateline": "1597719775"
},
{
"id": "15690444",
"cardsn": "109810CC",
"dateline": "1597814632"
},
{
"id": "15593365",
"cardsn": "109810CC",
"dateline": "1597652803"
},
{
"id": "15596175",
"cardsn": "406B0CCC",
"dateline": "1597655964"
},
{
"id": "15596180",
"cardsn": "109810CC",
"dateline": "1597655965"
},
{
"id": "15596182",
"cardsn": "C0A825CC",
"dateline": "1597655968"
},
{
"id": "15693549",
"cardsn": "109810CC",
"dateline": "1597818810"
}
]
}
13.支持刷IC卡设备删除卡接口
请求URL:
https://www.wmj.com.cn/api/delcard
请求方式:GET
适用于:
序列号开始为WMJ62设备
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appid | 是 | string | 无 |
appsecret | 是 | string | 无 |
sn | 是 | string | 设备序列号 |
cardsn | 是 | string | IC卡卡号 |
返回示例
{
"state": 1,
"state_code": 200,
"state_msg": "删除成功"
}
14.配置云语音接口
请求URL:
https://www.wmj.com.cn/api/audioconfig
请求方式:POST
适用于:
序列号开始为WMJ62设备
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appid | 是 | string | 微门禁appid |
appsecret | 是 | string | 微门禁appsecret |
sn | 是 | string | 设备序列号 |
openttscontent | 是 | string | 开门提示语音内容,最大60字 |
volume | 是 | int | 音量大小,1-7 |
返回示例
{
"state": 1,
"state_code": 201,
"state_msg": "更新成功"
}
15.推送二维码到显示屏(配置显示屏参数)
请求URL:
https://www.wmj.com.cn/api/lcdconfig
请求方式:POST
适用于:
序列号开始为WMJ62,带显示屏设备
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appid | 是 | string | 微门禁appid |
appsecret | 是 | string | 微门禁appsecret |
sn | 是 | string | 设备序列号 |
qrcodeurl | 是 | string | 如: wxapp.wmj.com.cn/min... |
####最后这个&st=必须加上
返回示例
{
"state": 1,
"state_code": 200,
"state_msg": "配置成功"
}
16.控制设备进出发卡模式
请求URL:
https://www.wmj.com.cn/api/devaddcard
请求方式:POST
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appid | 是 | string | 微门禁appid |
appsecret | 是 | string | 微门禁appsecret |
sn | 是 | string | 设备序列号 |
addcardmode | 是 | int | 1设备进入发卡模式,2设备退出发卡模式 |
返回示例
{
"state": 1,
"state_code": 200,
"state_msg": "设置成功"
}
17.云喇叭
请求URL:
https://www.wmj.com.cn/api/cloudspeaker
请求方式:POST
适用于:
序列号开始为WMJ62设备
参数:
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
appid | 是 | string | 微门禁appid |
appsecret | 是 | string | 微门禁appsecret |
sn | 是 | string | 设备序列号 |
ttscontent | 是 | string | 播报文字内容,最大60字 |
返回示例
{
"state": 1,
"state_code": 201,
"state_msg": "推送成功"
}
三、案例代码
PHP案例代码及说明(使用接口方式一,推荐使用)
<?php
header("Content-type: text/html; charset=utf-8");
$para['sn'] = 'WMJ19900007'; //锁的序列号,这个序列号贴在每个模块的标签上。
/*
* DEMO -- 提交模块到系统注册,注意:所有关于设备的操作,都需要先注册设备到系统才可以操作,只需注册一次
*/
$opresult = wmjHandle('reglock',$para);
print_r($opresult);//输出注册信息
/*
提交模块到系统注册 返回码说明
state:
1:成功
0:失败
state_code:
1:添加成功
0:添加失败
1001:参数错误或账户被禁用
1002:没有上传设备序列号(加密和不加密不统一也有会导致这个错误)
1003:设备序列号错误
1004:设备已存在,请勿重复注册(严格权限控制,设备只能在系统中存在一次,如通过其他方式添加了设备,请先删除注册)
*/
/*
* DEMO -- 开门接口
*/
$opresult = wmjHandle('oplock',$para);
print_r($opresult);//输出开门结果
/*
开门接口 返回码说明
state:
1:成功
0:失败
state_code:
1:开门成功
0:开门失败
2001:参数错误或账户被禁用
2002:没有上传设备序列号(加密和不加密不统一也有会导致这个错误)
2003:设备序列号错误
2004:设备不存在
2005:无权限操作(出现这个错误是因为设备不是通过此appid添加的)
2006:连接服务器出错,请重试(此服务器是模块操作服务器)
*/
/*
* DEMO -- 删除注册接口
*/
//$opresult = wmjHandle('delreglock',$para);
//print_r($opresult);//输出删除结果
/*
删除模块接口 返回码说明
state:
1:成功
0:失败
state_code:
1:删除成功
0:删除失败
4001:参数错误或账户被禁用
4002:没有上传设备序列号(加密和不加密不统一也有会导致这个错误)
4003:设备序列号错误
4004:设备不存在
4005:无权限操作(出现这个错误是因为设备不是通过此appid添加的)
*/
/*
* DEMO -- 查询模块在线状态
*/
$opresult = wmjHandle('lockstatus',$para);
print_r($opresult);//输出删除结果
/*
查询模块在线状态 返回码说明
state:
1:成功
0:失败
state_code:
1:查询成功
0:查询失败
5001:参数错误或账户被禁用
5002:没有上传设备序列号(加密和不加密不统一也有会导致这个错误)
5003:设备序列号错误
5004:设备不存在
online
1:在线
0:不在线
*/
/*
*DEMO -- wmjHandle函数
*/
function wmjHandle($type, $para)
{
$data=$para;
$data['appid']='wmj_sP3ucguIBQU';
$data['appsecret']='aOzP1QddgBC04KkLr2eOlujrD9VUDJTP';
$url = 'https://www.wmj.com.cn/api/'.$type.'.html';
$result = wmjHttpPost($url, http_build_query($data));
return $result;
}
/*
*DEMO -- wmjHttpPost函数
*/
function wmjHttpPost($url, $data) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/x-www-form-urlencoded',
'Content-Length: ' . strlen($data))
);
$res = curl_exec ($curl);
curl_close($curl);
$res = trim($res, "\xEF\xBB\xBF");
$res = json_decode($res, true);
return $res;
}
?>
PHP案例代码及说明(使用接口方式二,兼容早期程序保留)
<?php
header("Content-type: text/html; charset=utf-8");
define('APPID', 'wmj_sP3ucguIBQU');
define('APPSECRET', 'aOzP1QddgBC04KkLr2eOlujrD9VUDJTP');
define('AESKEY', ''); //AES加密密钥,需要和开放平台保持一致,否则会报错,如未启用加密,请留空
$lock_sn = 'WMJ19900007'; //锁的序列号,这个序列号贴在每个模块的标签上。
//$lock_sn = aesEncrypt($lock_sn, AESKEY); //传递数据经过AES加密,如果需要的话就用。
/*
* DEMO -- 提交模块到系统注册,注意:所有关于设备的操作,都需要先添加设备到系统才可以操作
*/
//$postlock = httpPost('https://www.wmj.com.cn/api/postlock.html?appid='.APPID.'&appsecret='.APPSECRET, $lock_sn);
//$postlock = trim($postlock, "\xEF\xBB\xBF"); //去除BOM头
//print_r(json_decode($postlock, true));
/*
提交模块到系统注册 返回码说明
state:
1:成功
0:失败
state_code:
1:添加成功
0:添加失败
1001:参数错误或账户被禁用
1002:没有上传设备序列号(加密和不加密不统一也有会导致这个错误)
1003:设备序列号错误
1004:设备已存在,请勿重复添加(设备只能在系统中存在一次,如通过其他方式添加了设备,请先删除)
*/
/*
* DEMO -- 开门接口
*/
$openlock = httpPost('https://www.wmj.com.cn/api/openlock.html?appid='.APPID.'&appsecret='.APPSECRET, $lock_sn);
$openlock = trim($openlock, "\xEF\xBB\xBF"); //去除BOM头
print_r(json_decode($openlock, true));
/*
开门接口 返回码说明
state:
1:成功
0:失败
state_code:
1:开门成功
0:开门失败
2001:参数错误或账户被禁用
2002:没有上传设备序列号(加密和不加密不统一也有会导致这个错误)
2003:设备序列号错误
2004:设备不存在
2005:无权限操作(出现这个错误是因为设备不是通过此appid添加的)
2006:连接服务器出错,请重试(此服务器是模块操作服务器)
*/
/*
* DEMO -- 删除模块接口
*/
//$dellock = httpPost('https://www.wmj.com.cn/api/dellock.html?appid='.APPID.'&appsecret='.APPSECRET, $lock_sn);
//$dellock = trim($dellock, "\xEF\xBB\xBF"); //去除BOM头
//print_r(json_decode($dellock, true));
/*
删除模块接口 返回码说明
state:
1:成功
0:失败
state_code:
1:删除成功
0:删除失败
4001:参数错误或账户被禁用
4002:没有上传设备序列号(加密和不加密不统一也有会导致这个错误)
4003:设备序列号错误
4004:设备不存在
4005:无权限操作(出现这个错误是因为设备不是通过此appid添加的)
*/
/*
* DEMO -- 查询模块在线状态
*/
//$lockstate = httpPost('https://www.wmj.com.cn/api/lockstate.html?appid='.APPID.'&appsecret='.APPSECRET, $lock_sn);
//$lockstate = trim($lockstate, "\xEF\xBB\xBF"); //去除BOM头
//print_r(json_decode($lockstate, true));
/*
查询模块在线状态 返回码说明
state:
1:成功
0:失败
state_code:
1:查询成功
0:查询失败
5001:参数错误或账户被禁用
5002:没有上传设备序列号(加密和不加密不统一也有会导致这个错误)
5003:设备序列号错误
5004:设备不存在
online
1:在线
0:不在线
*/
/*
* DEMO -- SIM卡信息查询接口
*/
//$sim_no = '#########'; //锁的SIM号码,和设备序列号一样,贴在设备上的。
//$sim_no = aesEncrypt($sim_no, AESKEY); //传递数据经过AES加密,如果需要的话就用。
//$sim = httpPost('https://www.wmj.com.cn/api/sim.html?appid='.APPID.'&appsecret='.APPSECRET, $sim_no);
//$sim = trim($sim, "\xEF\xBB\xBF"); //去除BOM头
//print_r(json_decode($sim, true));
/*
SIM卡信息查询接口 返回码说明
state:
1:成功
0:失败
state_code:
1:获取成功
0:获取失败
6001:参数错误或账户被禁用
6002:没有上传SIM号码(加密和不加密不统一也有会导致这个错误)
sim信息说明
msisdn:SIM卡业务号码
status:SIM号码状态
operator:运营商
expiration:SIM号码资费过期时间
totaldata:总流量
outdata:已使用流量
*/
/*
* DEMO -- 替换模块接口
*/
//$replace_str = json_encode(array( 'old_sn' => OLD_SN, 'new_sn' => NEW_SN,));
//$replock = httpPost('https://www.wmj.com.cn/api/replace.html?appid='.APPID.'&appsecret='.APPSECRET, $replace_str);
//$replock = trim($replock, "\xEF\xBB\xBF"); //去除BOM头
//print_r(json_decode($replock, true));
/*
替换模块接口 返回码说明
state:
1:成功
0:失败
state_code:
1:替换成功
0:替换失败
8001:参数错误或账户被禁用
8002:未上传旧设备SN
8003:旧设备SN错误
8004:未上传新设备SN
8005:新设备序列号错误
8006:旧设备不存在或无管理权限
8007:新设备已存在,无法替换
8008:新旧设备类型不一致,替换失败
*/
/*
*DEMO -- httpPost函数
*/
function httpPost($url, $str) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_POSTFIELDS, $str);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($str))
);
$res = curl_exec ($curl);
curl_close($curl);
return $res;
}
/*
* AES加密 -- 加密采用128位CBC模式加密
*/
function aesEncrypt ($value, $key) {
$padSize = 16 - (strlen($value) % 16);
$value = $value . str_repeat(chr($padSize), $padSize) ;
$output = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $value, MCRYPT_MODE_CBC, str_repeat(chr(0), 16));
return base64_encode($output);
}
?>
四、在线调试工具
runapi.showdoc.cc/
使用界面如下:
最后编辑:极客师傅 更新时间:2025-04-27 12:41