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

制作人:陈晓华   qq:78976932   微信号:chen-jeo

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

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

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

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

一、实验目的 

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代码如下:

<?php

//define yourtoken

define("TOKEN","weixin");

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

$wechatObj =new wechatCallbackapiTest();

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

classwechatCallbackapiTest

{

         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接收消息和发送消息代码描述如下:

privatefunction 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 = "<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);

                        $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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qlchenxh

机会是创造出来的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值