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勤勤学长相关推荐

  1. 美团外卖开放平台对接经验总结(一)

    美团外卖开放平台对接经验总结(一) 2017-06-21  司想君  司想君 两个月的时间,在除官方文档之外的资源极其匮乏的条件下,项目组群策群力完成了美团和饿了么的外卖开放平台对接,在这里对团队成员 ...

  2. 山东大学RISC-V公共开放平台开发记录3

    山东大学RISC-V公共开放平台开发记录 RISC-V编译 2 编译优化策略 2.1 RISC-V GCC工具链的(–mcmodel=)选项 目前RISC-V GCC工具链认为,在实际的情形中,一个程 ...

  3. 山东大学RISC-V公共开放平台开发记录5

    山东大学RISC-V公共开放平台开发记录 4移植Linux操作系统 4.1移植前相应知识 4.1.1特权等级与操作系统的关系 现代操作系统(如Linux.Windows等)为了权限的区分都区分为用户态 ...

  4. 比亚迪智慧开放平台开发记录

    比亚迪智慧开放平台开发记录 前言 注册账号 SDK和API文档下载 项目运行 安装AVD模拟器 启动AVD模拟器 BYD车机数据模拟器(ApiSimulator) 结尾 前言 最近在做一个比亚迪开发平 ...

  5. PHP美团开放平台开发记录,美团外卖,第一步授权演示及错误提示:获取门店出错(3)解决方法

    他居然没有php的sdk!也不像饿了么提供授权地址,授权完成直接把相关信息提交到回调地址. 门店映射接入参数 https://developer.meituan.com/openapi#4.1.2 数 ...

  6. 美团外卖Android平台化的复用实践

    美团外卖平台化复用主要是指多端代码复用,正如美团外卖iOS多端复用的推动.支撑与思考文章所述,多端包含有两层意思:其一是相同业务的多入口,指美团外卖业务需要在美团外卖App(下文简称外卖App)和美团 ...

  7. 美团外卖广告平台化的探索与实践

    随着美团外卖业务不断发展,外卖广告引擎团队在多个领域进行了工程上的探索和实践,目前已经取得了一些成果.我们计划通过连载的形式分享给大家,本文是<美团外卖广告工程实践>专题连载的第一篇. 本 ...

  8. 支付宝开放平台开发助手_支付宝:如何创建和接入支付宝电脑网站支付-新手必备...

    1.登录支付宝 1.打开支付宝官网,以"我是支付宝商家"用户登录 https://www.alipay.com/ 2.进入"产品中心",选择并申请支付类型 2. ...

  9. 微信公众开放平台开发08---纯java 实现微信开发:编写自定义菜单

    微信公众开放平台开发08---纯java 实现微信开发:编写自定义菜单 微信公众开放平台开发08---纯java 实现微信开发:编写自定义菜单  技术qq交流群:JavaDream:251572072 ...

最新文章

  1. [图解教程]Axis2与Eclipse整合开发Web Service之二:WSDL逆向生成服务端
  2. mysql给数据做排名_mysql给数据统计做排名
  3. 基于AFNetworking的多张图片上传
  4. java和ffmpeg使用内存转码_FFMPEG基于内存的转码实例
  5. jhipster_JHipster入门,第2部分
  6. 基于国家标准的 EndNote 输出样式模板
  7. 万州哪里有维修服务器,网关可以设在服务器、微机或大型机上
  8. 【POJ3784】【对顶堆 — 动态维护中位数】Running Media
  9. CSDN VIP 常见问题解答
  10. MySQL中Packet for query is too large (1327736 1048576)错误
  11. 大兴机场停车场长期停车怎么收费,大兴机场p3停车场收费标准
  12. Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
  13. anaconda3如何卸载干净
  14. 华为什么时候能升android10,华为手机什么时候升级安卓Q 华为首批适配Android10机型列表...
  15. 电脑无法修改ip地址
  16. t检验 显著性检验 significance test
  17. 隧道变形在线监测过程中应用的光纤应变传感器
  18. 唐纳德和他的数学老师
  19. 计算机控制电梯如需改变功能 则,电梯维修项目教程 教学课件 作者 孙文涛附加答案试卷综合实训三模拟试题(13).doc...
  20. eclipse中进行java编程时,CTRL+左键时,看不到源码的解决方法。

热门文章

  1. flexcell绑定MySQL数据_dataGridView连接数据库实现数据绑定(第一天)
  2. 用python求素数的方法,以及一种算法优化
  3. 不得不看的21个启示(转)
  4. python2字典遍历方法性能对比
  5. JavaScript 数组交集
  6. 打造高质效的技术团队 —— 混乱篇
  7. java 英雄联盟回合战斗_如何赢得一场英雄联盟的战斗新手入门篇
  8. 记录一个androidstudio的闪退
  9. 《原力计划【第二季】》—— 第二周周榜
  10. JavaWeb中HttpServletResponse类(Response对象)