PHP技术开发微信公众平台

这篇文章主要介绍了微信公众平台的两种模式(编辑模式和开发模式)顾名思义编辑模式就是写普通的功能,开发模式具有更多的功能,下面主要是针对开发模式做介绍,需要的朋友可以参考下

下面通过图文并茂的方式介绍微信公众平台开发过程,具体内容如下:

微信公众平台有两种模式:编辑模式 和 开发模式。

普通的功能可以通过编辑模式来搞定。开发模式具有更多的功能。让我们来使用开发模式开发helloword吧

步骤如下:

第一步:先注册一个公众号(https://mp.weixin.qq.com)

第二步:注册sae(http://sae.sina.com.cn/),作为你的服务器。

第三步:登录微信公众平台(https://mp.weixin.qq.com)查看开发文档并下载官方提供的demo。做适当修改。

第四步:将代码压缩成zip格式,上传到sae平台。

第五步:登录微信公众平台,进入开发者中心。开启“服务者配置”。

第六步:成功了。

开始吧:

1.先注册一个公众号(https://mp.weixin.qq.com)

2.注册sae(http://sae.sina.com.cn/)

注册完以后要记得进行实名认证,不然绑定到公众平台的时候,会有永远的“无法获取token”的提示。(实名认证需要3个工作日才能成功)

然后可以点击创建应用。创建后可以在下面看到。


PHP技术开发微信公众平台_第1张图片
php工程师待遇
PHP技术开发微信公众平台_第2张图片
web前端工程师
html5网站
网页游戏编程
PHP技术开发微信公众平台_第3张图片
云主机免费

 

进入自己创建的应用。然后点击代码管理。


PHP技术开发微信公众平台_第4张图片
php工程师待遇
网页游戏编程
html5网页模板
html5网站
PHP技术开发微信公众平台_第5张图片
免费云主机

 


PHP技术开发微信公众平台_第6张图片
web前端工程师
html5网站
PHP技术开发微信公众平台_第7张图片
php工程师待遇
网页游戏编程
PHP技术开发微信公众平台_第8张图片
游戏编程

 

3.登录微信公众平台(https://mp.weixin.qq.com)

查看开发文档并下载官方提供的demo。

打开后是如下的代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
/**
  * wechat php test
  */
//define your token
define( "TOKEN" , "weixin" );
$wechatObj = new wechatCallbackapiTest();
$wechatObj ->valid();
class wechatCallbackapiTest
{
  public function valid()
  {
  $echoStr = $_GET [ "echostr" ];
  //valid signature , option
  if ( $this ->checkSignature()){
   echo $echoStr ;
   exit ;
  }
  }
  public function responseMsg()
  {
  //get post data, May be due to the different environments
  $postStr = $GLOBALS [ "HTTP_RAW_POST_DATA" ];
   //extract post data
  if (! empty ( $postStr )){
   /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
    the best way is to check the validity of xml by yourself */
   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 );
    echo $resultStr ;
   } else {
    echo "Input something..." ;
   }
  } else {
   echo "" ;
   exit ;
  }
  }
  private function checkSignature()
  {
  // you must define TOKEN by yourself
  if (!defined( "TOKEN" )) {
   throw new Exception( 'TOKEN is not defined!' );
  }
  $signature = $_GET [ "signature" ];
  $timestamp = $_GET [ "timestamp" ];
  $nonce = $_GET [ "nonce" ];
  $token = TOKEN;
  $tmpArr = array ( $token , $timestamp , $nonce );
  // use SORT_STRING rule
  sort( $tmpArr , SORT_STRING);
  $tmpStr = implode( $tmpArr );
  $tmpStr = sha1( $tmpStr );
  if ( $tmpStr == $signature ){
   return true;
  } else {
   return false;
  }
  }
}
?>

我试过,如上代码,似乎无法执行到response那一块。所以做了更改

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
/**
  * wechat php test
  */
//define your token
define( "TOKEN" , "weixin" );
$wechatObj = new wechatCallbackapiTest();
//这里做了更改
if ( $_GET [ "echostr" ]){
  $wechatObj ->valid();
} else {
  $wechatObj ->responseMsg();
}
class wechatCallbackapiTest
{
  public function valid()
  {
  $echoStr = $_GET [ "echostr" ];
  //valid signature , option
  if ( $this ->checkSignature()){
   echo $echoStr ;
   exit ;
  }
  }
  public function responseMsg()
  {
  //get post data, May be due to the different environments
  $postStr = $GLOBALS [ "HTTP_RAW_POST_DATA" ];
   //extract post data
  if (! empty ( $postStr )){
   /* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,
    the best way is to check the validity of xml by yourself */
   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 );
    echo $resultStr ;
   } else {
    echo "Input something..." ;
   }
  } else {
   echo "" ;
   exit ;
  }
  }
  private function checkSignature()
  {
  // you must define TOKEN by yourself
  if (!defined( "TOKEN" )) {
   throw new Exception( 'TOKEN is not defined!' );
  }
  $signature = $_GET [ "signature" ];
  $timestamp = $_GET [ "timestamp" ];
  $nonce = $_GET [ "nonce" ];
  $token = TOKEN;
  $tmpArr = array ( $token , $timestamp , $nonce );
  // use SORT_STRING rule
  sort( $tmpArr , SORT_STRING);
  $tmpStr = implode( $tmpArr );
  $tmpStr = sha1( $tmpStr );
  if ( $tmpStr == $signature ){
   return true;
  } else {
   return false;
  }
  }
}
?>

你可以将Welcome to wechat world!更改为Hello Word!

4.将代码压缩成zip格式,上传到sae平台。

点击“编辑代码”,可以看到你上传的php文件。然后右击,url查看。复制url(http://1.carlzhang.sinaapp.com/wx_carlzhang819.php)。在这里要记住在此php文件中定义的token。此处为“weixin”,可以在如下图中看到。

PHP技术开发微信公众平台_第9张图片
web前端工程师
html5网站
网页游戏编程
PHP技术开发微信公众平台_第10张图片
php工程师待遇
PHP技术开发微信公众平台_第11张图片
php工程师薪资

 

5.登录微信公众平台,进入开发者中心。开启“服务者配置”。url填写上一步复制的url(这里我删除了前面的1.因为我的sae默认第一版。你 可以试试,删除1,若是url访问,不报404,那就是没问题)。token填写的是代码中的token(上面是“weixin”)。

PHP技术开发微信公众平台_第12张图片
php工程师待遇
html5网站
网页游戏编程
PHP技术开发微信公众平台_第13张图片
web前端工程师
PHP技术开发微信公众平台_第14张图片
php工程师薪资

 

PHP技术开发微信公众平台_第15张图片

PHP技术开发微信公众平台_第16张图片
web前端工程师
html5网站
网页游戏编程
PHP技术开发微信公众平台_第17张图片
php工程师待遇
PHP技术开发微信公众平台_第18张图片
php工程师薪资

 

如果启用成功,就可以关注你的微信平台,输入内容,看看提示是不是Welcome to wechat world!或者Hello Word!

你可能感兴趣的:(PHP技术开发微信公众平台)