getMpWeixinConfig(); $app = Factory::miniProgram($mp_weixin_config); $app->server->push(function ($message) { platformLog('', $message, 'mp_weixin_get_user_message_' . UID); $result = Notice::messageResponse($message); return $result; }); $response = $app->server->serve(); // 将响应输出 $response->send(); exit; } /** * 接收普通消息并处理 * @param array $message 普通微信用户向公众账号发消息时,微信服务器请求的服务器携带参数 xml已转array * @date 2020-07-23 */ protected function messageResponse($message = []) { switch ($message['MsgType']) { case 'event': if ($message['Event'] == 'user_authorization_revoke') { //用户撤回 user_info_modified:用户资料变更,user_authorization_revoke:用户撤回; $this->replyUserAuthorizationRevoke($message); return 'success'; } else if ($message['Event'] == 'user_info_modified') { return ''; } else if ($message['Event'] == 'subscribe_msg_sent_event') { //发送订阅消息之后 return ''; } return '收到事件消息'; break; default: return '收到其它消息'; break; } } /** * 回复用户消息 - 用户撤回授权信息 * @param array $message 普通微信用户向公众账号发消息时,微信服务器请求的服务器携带参数 xml已转array * @param string $message ['ToUserName'] 小程序的UserName * @param string $message ['FromUserName'] 平台推送服务UserName * @param string $message ['MsgType'] 消息类型,Event * @param string $message ['Event'] user_info_modified:用户资料变更,user_authorization_revoke:用户撤回; * @param int $message ['CreateTime'] 消息创建时间 (整型) * @param string $message ['OpenID'] 撤回或变更资料的用户OpenID * @param string $message ['AppID'] 小程序的AppID * @param string $message ['RevokeInfo'] 用户撤回的授权信息,1:车牌号,2:地址,3:发票信息,4:蓝牙,5:麦克风,6:昵称和头像,7:摄像头,8:手机号,12:微信运动步数,13:位置信息,14:选中的图片或视频,15:选中的文件,16:邮箱地址 * @param string $message ['PluginID'] 插件场景用户撤回,插件的AppID * @param string $message ['OpenPID'] 插件场景用户撤回,撤回用户的OpenPID * @date 2020-07-27 */ protected function replyUserAuthorizationRevoke($message) { if ($message['RevokeInfo'] == 6) { $openid = $message['OpenID']; $mpweixin_user_model = new MpweixinUser(); //删除用户头像和昵称 $data = [ 'openid' => $openid, 'nickname' => '', 'headimgurl' => '', ]; $res = $mpweixin_user_model->updateUser($data); // TODO 是否需要删除userinfo表 以及是否给微信服务器正常返回需测试 } } }