企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### 准备工作 提升开发测试效率,建议使用ApiPost客户端工具做接口测试[https://www.apipost.cn/download.html](https://www.apipost.cn/download.html) ![](https://doc.wmj.com.cn/server/index.php?s=/api/attachment/visitFile/sign/4e5004d0bcd0b99167f86edb72022297&showdoc=.jpg) 我们做了一个案例:[https://docs.apipost.cn/view/fcc3661972b26267](https://docs.apipost.cn/view/fcc3661972b26267) **接口简要描述:** * 简要使用说明 ![](https://doc.wmj.com.cn/Public/Uploads/2020-08-09/5f2ecc04232ba.png) **接口地址:** * `https://www.wmj.com.cn/api/` **请求方式:** * GET/POST 获取appid和appsecret地址:[https://www.wmj.com.cn/open](https://www.wmj.com.cn/open) ![](https://doc.wmj.com.cn/Public/Uploads/2020-08-08/5f2eaefc37999.png) ![](https://doc.wmj.com.cn/Public/Uploads/2020-08-08/5f2eaf20a962c.png) 用微信扫码或邮箱注册登录后取得appid和appsecret ![](https://doc.wmj.com.cn/Public/Uploads/2020-08-08/5f2eb07c3c860.png) * `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 | 序列号 | **返回示例** ~~~ { "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 | 如:[https://wxapp.wmj.com.cn/minilock?user\_id=1&lock\_id=166&wstate=](https://wxapp.wmj.com.cn/minilock?user_id=1&lock_id=166&wstate=) | * #### 最后这个&wstate=必须加上 **返回示例** ~~~ { "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": "设置成功"} ~~~ ### 三、案例代码 **PHP案例代码及说明(使用接口方式一,推荐使用)** ~~~ <?phpheader("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:设备不存在online1:在线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案例代码及说明(使用接口方式二,兼容早期程序保留)** ~~~ <?phpheader("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:设备不存在online1:在线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:未上传旧设备SN8003:旧设备SN错误8004:未上传新设备SN8005:新设备序列号错误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);}?> ~~~ ### 四、在线调试工具 [https://runapi.showdoc.cc/](https://runapi.showdoc.cc/) 使用界面如下: ![](https://doc.wmj.com.cn/Public/Uploads/2020-08-08/5f2ecb2820e20.png)