微信公众号开发 微信被动回复,图文回复,图片回复

本篇转自猪年大吉博客:地址 https://blog.csdn.net/qq_43638176

关于微信接入第三方域名进行业务开发的相关说明已在另外一篇做了说明,这里不做赘述,接入步骤请移步

https://blog.csdn.net/qq_43638176/article/details/88915436

本篇示范微信交互过程中的几个基础事件,主要判断标准参数为$postObj->MsgType,分别介绍当用户对公众号上传一个图片,回复一个文本以及关注事件的几个推送,其他诸如音乐回复将在下一篇做总结。

可以查看官方文档:

接受普通消息:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453

被动回复:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140543
具体代码实现:


<?php

 

namespace app\index\controller;

use think\Controller;

use think\Request;

 

header("Content-type: text/html; charset=utf-8"); 

define("TOKEN","token");//定义识别码 需要跟微信公众平台上保持一致

class Blog extends Controller

{

 

     public function index(){

        $this->valid(); 

    }

 

    //微信验证

    public function valid(){ 

        $echoStr = $_GET["echostr"]; 

        if($this->checkSignature()){ 

         echo $echoStr; 

         exit; 

        } 

    } 

 

    //检查微信签名

    private function checkSignature(){

        $signature = $_GET["signature"];

        $timestamp = $_GET["timestamp"];

        $nonce = $_GET["nonce"];    

                

        $token = TOKEN;

        $tmpArr = array($token, $timestamp, $nonce);

        sort($tmpArr);

        $tmpStr = implode( $tmpArr );

        $tmpStr = sha1( $tmpStr );

        

        if( $tmpStr == $signature ){

            return true;

        }else{

            return false;

        }

    }

    public function responseMsg(){

         $poststr = file_get_contents('php://input'); 

        

         //如果推送消息 或者推送事件存在,进行处理

        if(!empty($poststr)){

            libxml_disable_entity_loader(true);

            $postObj = simplexml_load_string($poststr, 'SimpleXMLElement', LIBXML_NOCDATA);

            $msgType = $postObj->MsgType;

            //判断事件类型,进行对应事件类型处理

            switch ($msgType) {

                //当回复公众号时

                case 'text':

                     $resultStr =  $this->handleText($postObj);

                    break;

                case 'image':

                    $resultStr =  $this->handleImage($postObj);

                    break;

                case 'voice':

                    $resultStr =  $this->handleVoice($postObj);

                    break;

                case 'video':

                    $resultStr =  $this->handleVideo($postObj);

                    break;

                case 'shortvideo':

                    $resultStr =  $this->handleShortVideo($postObj);

                    break;

                case 'location':

                    $resultStr =  $this->handleLocation($postObj);

                    break;

                case 'link':

                    $resultStr =  $this->handleLink($postObj);

                    break;

                case 'event':

                    $resultStr =  $this->handleEvent($postObj);

                    break;

                default:

                    $resultStr =  "Unknow msg type: ".$msgType;

                    break;

            }

 

            return $resultStr;

        }

    }

    //

    //回复消息

        public function handleText($postObj)

    {

        $fromUsername = $postObj->FromUserName;

        $toUsername = $postObj->ToUserName;

        $keyword = trim($postObj->Content);

        $time = time();

        $textTpl = "<xml>

                    <ToUserName><![CDATA[%s]]></ToUserName>

                    <FromUserName><![CDATA[%s]]></FromUserName>

                    <CreateTime>%s</CreateTime>

                    <MsgType><![CDATA[%s]]></MsgType>

                    <Content><![CDATA[%s]]></Content>

                    <FuncFlag>0</FuncFlag>

                    </xml>";             

        if(!empty( $keyword ))

        {

            $msgType = "text";

            $contentStr = "Welcome to wechat world!";

            $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);

            echo $resultStr;

        }else{

            echo "Input something...";

        }

    }

}

su先生给你加油噢!!!

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值