PHP美团外卖开放平台开发记录,IM在线通讯token获取和消息解密!By勤勤学长
token获取:
一开始我还以为,监听哪个店铺的消息,就用哪个店铺的appAuthToken获取长链接的token,但实际上,不管是使用哪个店铺的appAuthToken返回的内容是一样的,同时也意味着,我们可以获取所有已开启即时通讯店铺的所有消息,客户发给商家、商家发给客户。
so,只需要生成一次就可以写死了。我们需要的值connectionToken、connectionId、imSecret。
开发文档:https://developer.meituan.com/openapi#10.4.6
var mtSocket = new WebSocket('wss://wpush.meituan.com/websocket/{connectionId}_WMOPEN/{connectionToken}');mtSocket.onopen = function(){mtSocket.send('XXX连接成功');};mtSocket.onmessage = function(e){console.log(e.data)}
获取到的数据是这样的
文本内容:rQoVHeLTUf+wvmefyRvl6uqIYSOKRCDD1abu8N5Yw9V9M8GaDNwgQgQnvviEcclmaE46mFsa9dhT3JPIFxkXvtd8Hp44WqC02GD6LOluAKUQ33TJQl4n5jFrVdY2c/JCtUEVZ9ik9aIZ30+YW/7sC62Jh0q5O/3FC0gcb8LkZ0mxe5mi2HS/CWCcUA+GarGi2Z1HOt1g/xkZ+aHlftlGWEwHBZcxcddn3SVdnrg9osU=
消息内容是需要解密,所以接收到消息了就把内容提交到接口
var mtSocket = new WebSocket('wss://wpush.meituan.com/websocket/{connectionId}_WMOPEN/{connectionToken}');mtSocket.onopen = function(){mtSocket.send('XXX连接成功');};mtSocket.onmessage = function(e){console.log(e.data)$.ajax({url:'{:url("im/websocket")}',type:"post",data:{data:e.data},async:false,success:function (res) {console.log(res)},error:function (data) {}})}
public function websocket(){$data =json_decode(input('data'), true);if ($data) {$msg_content = \meituan\Im::decrypt($data['msg_content']);if (empty($msg_content)) {return '解密失败';}return $msg_content;}}
<?php
namespace meituan;class Im {protected static $iv = "imSecret";//获取长连接token得到的imSecretprotected static $encryptKey = "imSecret";//获取长连接token得到的imSecret//加密public static function encrypt($encryptStr) {$localIV = self::$iv;$encryptKey = self::encryptKey;//Open module$module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, $localIV);//print "module = $module <br/>" ;mcrypt_generic_init($module, $encryptKey, $localIV);//Padding$block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);$pad = $block - (strlen($encryptStr) % $block); //Compute how many characters need to pad$encryptStr .= str_repeat(chr($pad), $pad); // After pad, the str length must be equal to block or its integer multiples//encrypt$encrypted = mcrypt_generic($module, $encryptStr);//Closemcrypt_generic_deinit($module);mcrypt_module_close($module);return base64_encode($encrypted);}//解密public static function decrypt($encryptStr) {$localIV = self::$iv;$encryptKey = self::$encryptKey;//Open module$module = @mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, $localIV);//print "module = $module <br/>" ;@mcrypt_generic_init($module, $encryptKey, $localIV);$encryptedData = base64_decode($encryptStr);$encryptedData = @mdecrypt_generic($module, $encryptedData);return trim ($encryptedData);}
}?>
初步使用结束。
你好,我是勤勤学长。
www.11ak.cn
QQ微信同号318692996
PHP美团外卖开放平台开发记录,IM在线通讯token获取和消息解密!By勤勤学长相关推荐
- 美团外卖开放平台对接经验总结(一)
美团外卖开放平台对接经验总结(一) 2017-06-21 司想君 司想君 两个月的时间,在除官方文档之外的资源极其匮乏的条件下,项目组群策群力完成了美团和饿了么的外卖开放平台对接,在这里对团队成员 ...
- 山东大学RISC-V公共开放平台开发记录3
山东大学RISC-V公共开放平台开发记录 RISC-V编译 2 编译优化策略 2.1 RISC-V GCC工具链的(–mcmodel=)选项 目前RISC-V GCC工具链认为,在实际的情形中,一个程 ...
- 山东大学RISC-V公共开放平台开发记录5
山东大学RISC-V公共开放平台开发记录 4移植Linux操作系统 4.1移植前相应知识 4.1.1特权等级与操作系统的关系 现代操作系统(如Linux.Windows等)为了权限的区分都区分为用户态 ...
- 比亚迪智慧开放平台开发记录
比亚迪智慧开放平台开发记录 前言 注册账号 SDK和API文档下载 项目运行 安装AVD模拟器 启动AVD模拟器 BYD车机数据模拟器(ApiSimulator) 结尾 前言 最近在做一个比亚迪开发平 ...
- PHP美团开放平台开发记录,美团外卖,第一步授权演示及错误提示:获取门店出错(3)解决方法
他居然没有php的sdk!也不像饿了么提供授权地址,授权完成直接把相关信息提交到回调地址. 门店映射接入参数 https://developer.meituan.com/openapi#4.1.2 数 ...
- 美团外卖Android平台化的复用实践
美团外卖平台化复用主要是指多端代码复用,正如美团外卖iOS多端复用的推动.支撑与思考文章所述,多端包含有两层意思:其一是相同业务的多入口,指美团外卖业务需要在美团外卖App(下文简称外卖App)和美团 ...
- 美团外卖广告平台化的探索与实践
随着美团外卖业务不断发展,外卖广告引擎团队在多个领域进行了工程上的探索和实践,目前已经取得了一些成果.我们计划通过连载的形式分享给大家,本文是<美团外卖广告工程实践>专题连载的第一篇. 本 ...
- 支付宝开放平台开发助手_支付宝:如何创建和接入支付宝电脑网站支付-新手必备...
1.登录支付宝 1.打开支付宝官网,以"我是支付宝商家"用户登录 https://www.alipay.com/ 2.进入"产品中心",选择并申请支付类型 2. ...
- 微信公众开放平台开发08---纯java 实现微信开发:编写自定义菜单
微信公众开放平台开发08---纯java 实现微信开发:编写自定义菜单 微信公众开放平台开发08---纯java 实现微信开发:编写自定义菜单 技术qq交流群:JavaDream:251572072 ...
最新文章
- [图解教程]Axis2与Eclipse整合开发Web Service之二:WSDL逆向生成服务端
- mysql给数据做排名_mysql给数据统计做排名
- 基于AFNetworking的多张图片上传
- java和ffmpeg使用内存转码_FFMPEG基于内存的转码实例
- jhipster_JHipster入门,第2部分
- 基于国家标准的 EndNote 输出样式模板
- 万州哪里有维修服务器,网关可以设在服务器、微机或大型机上
- 【POJ3784】【对顶堆 — 动态维护中位数】Running Media
- CSDN VIP 常见问题解答
- MySQL中Packet for query is too large (1327736 1048576)错误
- 大兴机场停车场长期停车怎么收费,大兴机场p3停车场收费标准
- Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
- anaconda3如何卸载干净
- 华为什么时候能升android10,华为手机什么时候升级安卓Q 华为首批适配Android10机型列表...
- 电脑无法修改ip地址
- t检验 显著性检验 significance test
- 隧道变形在线监测过程中应用的光纤应变传感器
- 唐纳德和他的数学老师
- 计算机控制电梯如需改变功能 则,电梯维修项目教程 教学课件 作者 孙文涛附加答案试卷综合实训三模拟试题(13).doc...
- eclipse中进行java编程时,CTRL+左键时,看不到源码的解决方法。