微信公众号接口调用说明之二:事件推送管理(v5.0)
    2021-12-15
  
前期工作

  调用微信公众号接口前,请先熟悉微信公众平台开发的前期准备工作与接口调用模式,具体详情请参考:
  https://mp.weixin.qq.com/wiki

  当用户发送消息给公众号时(或某些特定的用户操作引发的事件推送时),会产生一个POST请求,开发者可以在响应包(Get)中返回特定XML结构。当服务器收到来自公众号的事件推送时,对该消息进行响应。严格来说,发送被动响应消息其实并不是一种接口,而是对微信服务器发过来消息的一次回复。

1、微信接口检查签名

  服务器每次收到微信服务器的事件推送时,都需要对本次请求做签名检查,以确保本次请求是由微信服务器发起的。

调用方法
  
weixin::check_signature()

相关参数

  无

调用实例
  
weixin::check_signature();

2、获取推送消息

调用方法
  
weixin::get_msg()

相关参数

  无

调用实例
  
$msg = weixin::get_msg();

返回结果

  开发者微信号:$msg['ToUserName']
  发送方 OpenID:$msg['FromUserName']
  消息创建时间:$msg['CreateTime']
  消息类型:$msg['MsgType']
  文本消息内容:$msg['Content']
  消息ID:$msg['MsgId']

3、被动回复文本消息

调用方法
  
weixin::send_text()

相关参数

  共1个必要参数,具体如下:
   1、要发送的文本内容

调用实例
  
$msg = weixin::get_msg();
if($msg['MsgType'] == 'text'){
    weixin::send_text($msg['Content']);
}

4、被动回复图文消息

调用方法
  
weixin::send_image()

相关参数

  共1个必要参数,具体如下:
   1、一个二维数组,要发送的图片数据:array( array('标题','内容简介','图片地址','链接地址'), ... )

调用实例
  
$msg = weixin::get_msg();
if($msg['MsgType'] == 'text'){
    weixin::send_text($msg['Content']);
}

调用实例

  1、回复单图文消息   
$msg = weixin::get_msg();

$title = '《王国之心3》有望登录Switch,欧洲eShop新折扣,暗黑三33%off';
$desc = '业界新闻1,欧洲将开启“一起玩”促销大活动,保函《暗黑破坏神Ⅲ》哦!';
weixin::send_image(array(
    array($title,$desc,'http://www.mlecms.com/inc/image/demo.jpg','http://www.mlecms.com')
));

  2、回复多图文消息   
$msg = weixin::get_msg();

$title1 = '本周36宽游戏发售,总有一款适合你!';
$title2 = '即将发售优作预告一览!';
weixin::send_image(array(
    array($title1,'','http://www.mlecms.com/inc/image/demo.jpg','http://www.mlecms.com'),
    array($title2,'','http://www.mlecms.com/inc/image/demo.jpg','http://www.mlecms.com'),
));

5、被动回复语音消息

调用方法
  
weixin::send_voice()

相关参数

  共1个必要参数,具体如下:
   1、通过上传多媒体文件,得到的id

调用实例

  此处通过weixin::get_wx_material_list()方法获得语音素材,并将第一条语音的素材id传给weixin::send_voice()方法
  
$msg = weixin::get_msg();
$weixin_material = weixin::get_wx_material_list('voice');
weixin::send_voice($weixin_material[0]['thumb_media_id']);

6、被动回复音乐消息

调用方法
  
weixin::send_music()

相关参数

  共3个必要参数,具体如下:
   1、音乐标题
   2、音乐简介
   3、要发送的音乐地址,高质量和普通音乐均采用该地址,暂不区分

调用实例
  
$msg = weixin::get_msg();

$title = '有心人';
$desc = '《有心人》是由林夕作词,张国荣作曲并演唱的一首歌曲。收录于张国荣1996年9月30日发行的专辑《Love With All My Heart》中';
weixin::send_music($title,$desc,'http://www.mlecms.com/demo.mp3');

7、被动回复本地素材库中的素材

调用方法
  
weixin::send_material()

相关参数

  共1个必要参数,具体如下:
   1、本地素材id

调用实例
  
$msg = weixin::get_msg();
weixin::send_material(2);