一、准备工作

提升开发测试效率,建议使用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

  • 设备只需注册一次,不需要重复注册。

参数:

参数名必选类型说明
appidstring微门禁开放平台申请的appid
appsecretstring微门禁开放平台申请的appsecret
snstring设备序列号

 

返回示例:注册成功

{
  "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

参数:

参数名必选类型说明
snstring设备序列号,直接放入序列号到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

参数:

参数名必选类型说明
appidstring
appsecretstring
snstring

 

返回示例:开门成功

{
  "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

参数:

参数名必选类型说明
snstring设备序列号,参数名不用,直接将设备序列号放入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

参数:

参数名必选类型说明
appidstring
appsecretstring
snstring

 

返回示例:设备在线

{
  "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

参数:

参数名必选类型说明
snstring

 

返回示例

{
  "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": 11表示设备在线,0表示设备离线
  }
}

7.删除注册 方式一(推荐使用)

请求URL:

  • https://www.wmj.com.cn/api/delreglock

    请求方式:

  • POST

参数:

参数名必选类型说明
appidstring
appsecretstring
snstring

 

返回示例:删除成功

{
  "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

参数:

参数名必选类型说明
snstring

 

返回示例:删除成功

{
  "state": 1,
  "state_code": 1,
  "state_msg": "删除成功"
}

返回示例:无权限操作

{
  "state": 0,
  "state_code": 4005,
  "state_msg": "无权限操作"
}

9.开关(常通常断)设备控制接口

请求URL:

  • https://api.wmj.com.cn/api/handle

    请求方式:

  • POST

参数:

参数名必选类型说明
appidstring
appsecretstring
contentstring

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设备

参数:

参数名必选类型说明
appidstring
appsecretstring
snstring设备序列号
cardsnstringIC卡卡号
endtimeint有效期,时间戳

 

返回示例

{
  "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

参数:

参数名必选类型说明
appidstring微门禁appid
appsecretstring微门禁appsecret
snstring序列号

 

返回示例

{
  "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次
    参数:

参数名必选类型说明
appidstringappid
appsecretstringappsecret
{
	"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

参数:

参数名必选类型说明
appidstringappid
appsecretstringappsecret
snstring序列号
starttimestring开始时间戳

 

返回示例

{
  "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设备

参数:

参数名必选类型说明
appidstring
appsecretstring
snstring设备序列号
cardsnstringIC卡卡号

 

返回示例

{
  "state": 1,
  "state_code": 200,
  "state_msg": "删除成功"
}

14.配置云语音接口

请求URL:

  • https://www.wmj.com.cn/api/audioconfig

    请求方式:

  • POST

适用于:

  • 序列号开始为WMJ62设备

参数:

参数名必选类型说明
appidstring微门禁appid
appsecretstring微门禁appsecret
snstring设备序列号
openttscontentstring开门提示语音内容,最大60字
volumeint音量大小,1-7

 

返回示例

{
  "state": 1,
  "state_code": 201,
  "state_msg": "更新成功"
}

15.推送二维码到显示屏(配置显示屏参数)

请求URL:

  • https://www.wmj.com.cn/api/lcdconfig

    请求方式:

  • POST

适用于:

  • 序列号开始为WMJ62,带显示屏设备

 

参数:

参数名必选类型说明
appidstring微门禁appid
appsecretstring微门禁appsecret
snstring设备序列号
qrcodeurlstring如: wxapp.wmj.com.cn/min...
  • ####最后这个&st=必须加上
    返回示例

{
  "state": 1,
  "state_code": 200,
  "state_msg": "配置成功"
}

16.控制设备进出发卡模式

请求URL:

  • https://www.wmj.com.cn/api/devaddcard

    请求方式:

  • POST

参数:

参数名必选类型说明
appidstring微门禁appid
appsecretstring微门禁appsecret
snstring设备序列号
addcardmodeint1设备进入发卡模式,2设备退出发卡模式

 

返回示例

{
  "state": 1,
  "state_code": 200,
  "state_msg": "设置成功"
}

17.云喇叭

请求URL:

  • https://www.wmj.com.cn/api/cloudspeaker

    请求方式:

  • POST

适用于:

  • 序列号开始为WMJ62设备

参数:

参数名必选类型说明
appidstring微门禁appid
appsecretstring微门禁appsecret
snstring设备序列号
ttscontentstring播报文字内容,最大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-20 11:51
最后编辑:极客师傅  更新时间:2025-04-27 12:41
上一篇:
下一篇: