最新公告
  • 欢迎您光临立业阁,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 【php开发】实现微信公众号图文消息回复与access_token(代码示例)_php教程


    本篇文章主要讲述的是PHP实现微信公众号图文消息回复与access_token,具有一定的参考价值,感兴趣的朋友可以了解一下。

     //代码如下
    <?php
    class IndexAction extends Action {
    public function __construct(){
    
    }
    public function index(){
    //获得参数 signature nonce token timestamp echostr
    $nonce     = $_GET['nonce'];
    $token     = 'imooc';
    $timestamp = $_GET['timestamp'];
    $echostr   = $_GET['echostr'];
    $signature = $_GET['signature'];
    //形成数组,然后按字典序排序
    $array = array();
    $array = array($nonce, $timestamp, $token);
    sort($array);
    //拼接成字符串,sha1加密 ,然后与signature进行校验
    $str = sha1( implode( $array ) );
    if( $str  == $signature && $echostr ){
    //第一次接入weixin api接口的时候
    echo  $echostr;
    exit;
    }else{
    $this->reponseMsg();
    }
    }
    // 接收事件推送并回复
    public function reponseMsg(){
    //1.获取到微信推送过来post数据(xml格式)
    $postArr = $GLOBALS['HTTP_RAW_POST_DATA'];
    //2.处理消息类型,并设置回复类型和内容
    /*<xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <FromUserName><![CDATA[FromUser]]></FromUserName>
    <CreateTime>123456789</CreateTime>
    <MsgType><![CDATA[event]]></MsgType>
    <Event><![CDATA[subscribe]]></Event>
    </xml>*/
    $postObj = simplexml_load_string( $postArr );
    //$postObj->ToUserName = '';
    //$postObj->FromUserName = '';
    //$postObj->CreateTime = '';
    //$postObj->MsgType = '';
    //$postObj->Event = '';
    // gh_e79a177814ed
    //判断该数据包是否是订阅的事件推送
    if( strtolower( $postObj->MsgType) == 'event'){
    //如果是关注 subscribe 事件
    if( strtolower($postObj->Event == 'subscribe') ){
    //回复用户消息(纯文本格式)	
    $toUser   = $postObj->FromUserName;
    $fromUser = $postObj->ToUserName;
    $time     = time();
    $msgType  =  'text';
    $content  = '欢迎关注我们的微信公众账号'.$postObj->FromUserName.'-'.$postObj->ToUserName;
    $template = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[%s]]></MsgType>
    <Content><![CDATA[%s]]></Content>
    </xml>";
    $info     = sprintf($template, $toUser, $fromUser, $time, $msgType, $content);
    echo $info;
    /*<xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <FromUserName><![CDATA[fromUser]]></FromUserName>
    <CreateTime>12345678</CreateTime>
    <MsgType><![CDATA[text]]></MsgType>
    <Content><![CDATA[你好]]></Content>
    </xml>*/
    }
    }
    //当微信用户发送imooc,公众账号回复‘imooc is very good'
    /*<xml>
    <ToUserName><![CDATA[toUser]]></ToUserName>
    <FromUserName><![CDATA[fromUser]]></FromUserName>
    <CreateTime>12345678</CreateTime>
    <MsgType><![CDATA[text]]></MsgType>
    <Content><![CDATA[你好]]></Content>
    </xml>*/
    /*if(strtolower($postObj->MsgType) == 'text'){
    switch( trim($postObj->Content) ){
    case 1:
    $content = '您输入的数字是1';
    break;
    case 2:
    $content = '您输入的数字是2';
    break;
    case 3:
    $content = '您输入的数字是3';
    break;
    case 4:
    $content = "<a href='http://www.imooc.com'>慕课</a>";
    break;
    case '英文':
    $content = 'imooc is ok';
    break;
    }	
    $template = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[%s]]></MsgType>
    <Content><![CDATA[%s]]></Content>
    </xml>";
    //注意模板中的中括号 不能少 也不能多
    $fromUser = $postObj->ToUserName;
    $toUser   = $postObj->FromUserName; 
    $time     = time();
    // $content  = '18723180099';
    $msgType  = 'text';
    echo sprintf($template, $toUser, $fromUser, $time, $msgType, $content);
    
    }
    }
    */
    //用户发送tuwen1关键字的时候,回复一个单图文
    if( strtolower($postObj->MsgType) == 'text' && trim($postObj->Content)=='tuwen2' ){
    $toUser = $postObj->FromUserName;
    $fromUser = $postObj->ToUserName;
    $arr = array(
    array(
    'title'=>'imooc',
    'description'=>"imooc is very cool",
    'picUrl'=>'http://www.imooc.com/static/img/common/logo.png',
    'url'=>'http://www.imooc.com',
    ),
    array(
    'title'=>'hao123',
    'description'=>"hao123 is very cool",
    'picUrl'=>'https://www.baidu.com/img/bdlogo.png',
    'url'=>'http://www.hao123.com',
    ),
    array(
    'title'=>'qq',
    'description'=>"qq is very cool",
    'picUrl'=>'http://www.imooc.com/static/img/common/logo.png',
    'url'=>'http://www.qq.com',
    ),
    );
    $template = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[%s]]></MsgType>
    <ArticleCount>".count($arr)."</ArticleCount>
    <Articles>";
    foreach($arr as $k=>$v){
    $template .="<item>
    <Title><![CDATA[".$v['title']."]]></Title> 
    <Description><![CDATA[".$v['description']."]]></Description>
    <PicUrl><![CDATA[".$v['picUrl']."]]></PicUrl>
    <Url><![CDATA[".$v['url']."]]></Url>
    </item>";
    }
    
    $template .="</Articles>
    </xml> ";
    echo sprintf($template, $toUser, $fromUser, time(), 'news');
    //注意:进行多图文发送时,子图文个数不能超过10个
    }else{
    switch( trim($postObj->Content) ){
    case 1:
    $content = '您输入的数字是1';
    break;
    case 2:
    $content = '您输入的数字是2';
    break;
    case 3:
    $content = '您输入的数字是3';
    break;
    case 4:
    $content = "<a href='http://www.imooc.com'>慕课</a>";
    break;
    case '英文':
    $content = 'imooc is ok';
    break;
    }	
    $template = "<xml>
    <ToUserName><![CDATA[%s]]></ToUserName>
    <FromUserName><![CDATA[%s]]></FromUserName>
    <CreateTime>%s</CreateTime>
    <MsgType><![CDATA[%s]]></MsgType>
    <Content><![CDATA[%s]]></Content>
    </xml>";
    //注意模板中的中括号 不能少 也不能多
    $fromUser = $postObj->ToUserName;
    $toUser   = $postObj->FromUserName; 
    $time     = time();
    // $content  = '18723180099';
    $msgType  = 'text';
    echo sprintf($template, $toUser, $fromUser, $time, $msgType, $content);
    
    }//if end
    }//reponseMsg end
    function http_curl(){
    //获取imooc
    //1.初始化curl
    $ch = curl_init();
    $url = 'http://www.baidu.com';
    //2.设置curl的参数
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    //3.采集
    $output = curl_exec($ch);
    //4.关闭
    curl_close($ch);
    var_dump($output);
    }
    function getWxAccessToken(){
    //1.请求url地址
    $appid = 'wx08d5c2cb632bb5e4';
    $appsecret =  '06d3444fb9abd8d00314eb4a38ad61a8';
    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret;
    //2初始化
    $ch = curl_init();
    //3.设置参数
    curl_setopt($ch , CURLOPT_URL, $url);
    curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
    //4.调用接口 
    $res = curl_exec($ch);
    //5.关闭curl
    curl_close( $ch );
    if( curl_errno($ch) ){
    var_dump( curl_error($ch) );
    }
    $arr = json_decode($res, true);
    var_dump( $arr );
    }
    function getWxServerIp(){
    $accessToken = "6vOlKOh7r5uWk_ZPCl3DS36NEK93VIH9Q9tacreuxJ5WzcVc235w_9zONy75NoO11gC9P0o4FBVxwvDiEtsdX6ZRFR0Lfs_ymkb8Bf6kRfo";
    $url = "https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=".$accessToken;
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    $res = curl_exec($ch);
    curl_close($ch);
    if(curl_errno($ch)){
    var_dump(curl_error($ch));
    }
    $arr = json_decode($res,true);
    echo "<pre>";
    var_dump( $arr );
    echo "</pre>";
    
    }
    }//class end

    相关教程:

    PHP视频教程

    微信小程序视频教程

    以上就是【php开发】实现微信公众号图文消息回复与access_token(代码示例)的详细内容,更多请关注liyege.cn其它相关文章!

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    • 1175会员总数(位)
    • 111858资源总数(个)
    • 2本周发布(个)
    • 0 今日发布(个)
    • 246稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情
    冀ICP备19022365号-1 百度地图

    侵权联系邮箱[email protected]

    立业阁(www.liyege.cn)免费提供wordpress主题模板、dedecms模板、帝国cms模板、小说网站源码、电影网站源码以及网络技术分享,建站源码,小说模板,电影模板,网赚教程,VPS推荐