设为首页 加入收藏

TOP

微信公众号图文回复验证码并写入数据库的基本思路(一)
2019-08-23 00:33:58 】 浏览:99
Tags:公众 图文 回复 验证 写入 数据库 基本 思路

接了个小活:要求公众号中用户回复1,公众号被动回复7位数验证码,同时把用户openId和验证码写入数据库

简单写了各测试demo:工具 thinkphp   订阅号子钦有话说内申请的测试账号 

接口配置信息修改

 

Controller控制器   输入1得到被动回复验证码(里面大多数代码与标题无关,想必大家能用到,所以没有删除)

<?php
namespace Home\Controller;
use Home\Common\CommonController;
/**
 *@parame  微信公众号开发 
 */
class WeChatController extends CommonController {
    //配置接口信息接入api
    public function index() {
        //1.获得参数 signature nonce token timestamp echostr
        $nonce     = $_GET['nonce'];
        $token     = 'zhangmangde';
        $timestamp = $_GET['timestamp'];
        $echostr   = $_GET['echostr'];
        $signature = $_GET['signature'];
        //2.拼成数组,然后按字典序排序
        $array     = array();
        $array     = array($nonce,$timestamp,$token);
        sort($array);
        //3.拼成字符串,sha1加密,然后和$signature进行比较
        $str = sha1(implode($array));
        if($str == $signature && $echostr){
            //第一次接入微信api的时候
            echo $echostr;
            exit;
        }else{
            $this->responseMsg();
        }
        
    }
    
    /*public function show(){
        echo 'zhangmangde';
    }*/
    //接受事件,推送并回复
    public function responseMsg(){
        //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);//将xml字符串载入对象中
        //$postObj->ToUserName = '';
        //$postObj->FromUserName = '';
        //$postObj->CreateTime = '';
        //$postObj->MsgType = '';
        //$postObj->Event = '';
        //判断该数据包是否是订阅的事件推送
        if(strtolower($postObj->MsgType) == 'event'){
            //如果是关注subcribe事件
            if(strtolower($postObj->Event) == 'subscribe'){
                //回复用户消息
                $arr  = array(
                    array(
                        'title'       => '欢迎关注子钦的公众号开发版哟^^~~^^',
                        'description' => '张子钦很酷哦 or ziqin is very cool 哈哈!关注有惊喜哦',
                        'picUrl'      => 'http://waphd.simufengyun.com/Public/Home/images/zmd123.png',
                        'url'         => 'http://wap.simufengyun.com/',
                    ),
                );
                //实例化模型
                $weChatModel = new \Home\Model\WeChatModel;//实例化时,一定要注意Model的路径问题 下面a()方法是测试路径问题
                $weChatModel->responseSubscribe($postObj,$arr);//调用模型中的方法
            }    
            //点击事件
            if(strtolower($postObj->Event) == 'click'){
                //如果是自定义菜单中的event->click
                if(strtolower($postObj->EventKey) == 'item1'){
                    $content = "这是菜单一事件的推送";
                }
                if(strtolower($postObj->EventKey) == 'songs'){
                    $content = "这是歌曲事件的推送";
                }
                //实例化模型
                //实例化模型
                $weChatModel = new \Home\Model\WeChatModel;
                $weChatModel->responseText($postObj,$content);//调用方法
            }
            //跳转事件
            if(strtolower($postObj->Event) == 'view'){
                //如果是自定义菜单中的event->view
                $content = "要跳转的链接是".$postObj->EventKey;
                //实例化模型
                $weChatModel = new \Home\Model\WeChatModel;
                $weChatModel->responseText($postObj,$content);//调用方法
            }
            //
            if(strtolower($postObj->Event) == 'SCAN'){
                //自定义菜单中的event->scan
                $content = "扫描场景".$postObj->EventKey;
                //实例化模型
                $weChatModel = new \Home\Model\WeChatModel;
                $weChatModel->responseText($postObj,$content);//调用方法
            }
            if(strtolower($postObj->Event) == 'LOCATION'){
首页 上一页 1 2 3 4 5 6 下一页 尾页 1/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇简单的PHP上传图片和删除图片示例.. 下一篇windows下安装composer流程

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目