美文网首页微信PHP开发程序员PHP知识
微信实验三、微信公众号开发者PHP入门

微信实验三、微信公众号开发者PHP入门

作者: chenxhjeo | 来源:发表于2017-03-31 09:36 被阅读561次

    《软件工程》实训指导书

    微信实验三、微信公众号开发者PHP入门

    开源项目:https://github.com/chenxhjeo,个人博客:http://blog.csdn.net/u013487761

    技术QQ群名称:豆豆咨询,群号:625686304

    微信公众号名称:豆豆咨询,微信公众号:douAsk

    初建日期:2017.03.29修改日期:2017.03.29

    一、实验目的

    1、掌握微信公众号后台开发PHP接收数据、发送数据。

    二、实验内容

    1、成为微信开发者;

    2、在家、寝室、实验室等环境,配置开发环境;

    3、在微信PHP后台验证。

    4、PHP接收用户输入以及回送消息。

    三、实验步骤及过程

    由于手机端特性(例如内存小)与微信广泛应用,微信开发与应用成为当前的开发热点。但微信公众号存在一些局限,例如难以通过查询功能得到想要的结果。以下我们将引导大家如何成为微信公众号的开发者。

    1、如何成为微信开发者,即取得开发者密钥。

    1)在微信后台(通过https://mp.weixin.qq.com登录)点击开发->基本配置,打开基本配置页面,如下所示。

    2)生成AppSecret(应用密钥):需要完成三个步骤,如图所示:

    a)身份确认:二维码扫描,授权设置开发者密钥。

    b)密码验证:输入登录密码和验证码,如下图所示。

    c)查看AppSecret(微信为AppSecert,哈哈,是不是英语写错了?):注意保存好你的AppID和AppSecret,如下图所示。

    2、在家、寝室、实验室、公网等环境,配置开发环境。

    如果您在家、寝室、实验室等环境,想配置开发环境,那么请关注“豆豆咨询”公众号,我们将传递给您具体的手册及工具。

    1)这里假设您具有公网地址或者域名,则配置URL(服务器地址)、Token(令牌)、EncodingAESKey(消息加密密钥)、消息加密方式,如下图所示。

    2)填写URL(服务器地址)、Token(令牌)、EncodingAESKey(消息加密密钥)、消息加密方式信息。分别解释如下:

    a)URL是你服务器的地址,具有验证、接收消息、发送消息等功能的服务器,分别支持80端口和443端口。

    b)Token是自己设定的令牌,必须为英文或者数字,长度为3-32字符。

    c)EncodingAESKey为消息加密密钥,随机产生,由43位字符组成,字符范围为A-Z,a-z,0-9。

    d)消息加密方式:根据业务需要,可以设定明文模式、兼容模式、安全模式,系统推荐安全模式。我们以明文模式简化开发流程,如下图所示。

    注意:微信开放平台账号的绑定在内测中。

    3、在微信PHP后台验证。主要涉及到验证消息,确认微信服务器能够确认您所建立服务器的具有相关权限,具体PHP代码如下:

    //define yourtoken

    define("TOKEN","weixin");

    echo"I'am already Waiting for something...S.";

    $wechatObj =new wechatCallbackapiTest();

    $wechatObj->valid();//验证消息

    class wechatCallbackapiTest

    {

    public function valid()

    {

    $echoStr = $_GET["echostr"];

    //valid signature , option

    if($this->checkSignature()){

    echo$echoStr;

    exit;

    }

    }

    private function checkSignature()

    {

    // you must define TOKEN by yourself

    if (!defined("TOKEN")) {

    throw new Exception('TOKEN is notdefined!');

    }

    $signature = $_GET["signature"];

    $timestamp =$_GET["timestamp"];

    $nonce = $_GET["nonce"];

    $token = TOKEN;

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

    sort($tmpArr, SORT_STRING);

    $tmpStr = implode( $tmpArr );

    $tmpStr = sha1( $tmpStr );

    if( $tmpStr == $signature ){

    return true;

    }else{

    return false;

    }

    }

    }

    ?>

    4、在微信PHP后台接收用户输入的消息和回送给用户的消息。微信要求必须在5秒之内得到回复,如果没有得到回复,则尝试三次。PHP接收消息和发送消息代码描述如下:

    define("TOKEN","weixin");

    echo"I'am already Waiting for something...S.";

    $wechatObj =new wechatCallbackapiTest();

    $wechatObj->responseMsg ();//发送消息

    private function is_utf8($str)//判断是否是utf8编码

    {

    returnpreg_match('//u', $str);

    }

    public function responseMsg()

    {

    //get post data, May be due tothe different environments

    $postStr =$GLOBALS["HTTP_RAW_POST_DATA"];

    //extractpost data

    if (!empty($postStr)){

    libxml_disable_entity_loader(true);

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

    $fromUsername =$postObj->FromUserName;

    $toUsername =$postObj->ToUserName;

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

    $time = time();

    $textTpl = "

    %s

    0

    ";

    if(!empty($keyword ))

    {

    $msgType= "text";

    $contentStr = "Welcome to wechat world!我是谁?";

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

    $content = trim($postObj->Content);//消息内容json_encode($postObj->Content);

    $contentStr = '你发送的信息是:接收人:'.$toUsername.',发送人:'.$fromUsername.',消息类型:'.$MsgType.',消息内容:'.$content.' ';

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

    if ($this->is_utf8($resultStr)) {

    //$resultStr = $resultStr;

    } else {

    //$resultStr = iconv('gb2312', 'UTF-8//IGNORE',$resultStr);

    }

    echo $resultStr;

    }else{

    echo "Input something...";

    }

    }else {

    echo"";

    exit;

    }

    }

    四、常见错误

    1、验证不通过:在windows开发,主要由于编码的差异导致验证不通过,如果你遇到了类似问题还无法解决,请成为关注“豆豆咨询”公众号,我们将为您解答问题。

    2、接收和发送中文信息,有时候会出现乱码,原因也是同上所示。解决方法是采用utf-8编码。如果你遇到了类似问题还无法解决,请成为关注“豆豆咨询”公众号,我们将为您解答问题。

    五、技术服务

    1、如果有疑问或者需要帮助,请加入QQ群(群名称:豆豆咨询,群号:625686304);或者公众号douAsk,公众号名称为“豆豆咨询”。扫描以下二维码,关注“豆豆咨询”

    2、本文的程序链接地址为 https://github.com/CompSchool/ThinkPHP/blob/master/application/weixin/check.php

    相关文章

      网友评论

        本文标题:微信实验三、微信公众号开发者PHP入门

        本文链接:https://www.haomeiwen.com/subject/ztvmottx.html