微信公众平台开发入门教程(2)接口配置

开发模式:
1. 简介

微信公众平台是腾讯公司在微信的基础上新增的功能模块,通过这一平台,个人和企业都可以打造一个微信的公众号,并实现和特定群体的文字、图片、语音的全方位沟通、互动。微信公众平台分订阅号和服务号、企业号三类平台,利用公众账号平台进行自媒体活动,简单来说就是进行一对多的媒体性行为活动,如商家通过申请公众微信服务号实现展示商家微官网、微社区、微会员、微推送、微支付、微活动,微报名,微分享、微名片等,还可以实现部分轻应用功能。已经形成了一种主流的线上线下微信互动营销方式。 至2014年开通的微信公众平台账户已经超过600万。

许多机关、*部门也开通微信公众平台,实现了由远距离变零距离服务的延伸,大大节约了群众办事成本,贴近了服务对象,方便了群众办事,也拉近了人口计生部门与群众的关系,践行了“为民、务实、清廉”的党的群众路线教育实践活动时代内涵,收到了良好的社会效果。

2. 注册微信平台公众帐号

注册地址:https://mp.weixin.qq.com

3. 接口配置

 示例代码设置

微信公众平台提供了一个php示例代码:

http://mp.weixin.qq.com/mpres/htmledition/res/wx_sample.zip

下载下来,解压缩,打开编辑。

将token值设置为你所需要的值,token可由开发者任意填写,用作生成签名。

微信公众平台开发入门教程(2)接口配置

编辑完保存并关闭文件,将文件wx_sample.php 更改成自定义的名字,这里改为wxapi.php,再次打包成wxapi.zip。

4 、服务器平台设置

如果有自己的服务器,而且支持php,可以将接口文件上传至服务器,如果没有自己的服务器,则可以选择部分免费的云平台进行开发,如百度应用引擎BAE(http://developer.baidu.com/bae),新浪云平台SAE(http://sae.sina.com.cn/)。


5. 配置接口

5.1 登录微信公众平台 -> 高能功能 -> 开发模式

微信公众平台开发入门教程(2)接口配置

5.2 成为开发者

微信公众平台开发入门教程(2)接口配置

5.3 接口配置信息

URL填写上面得到的BAE URL:http://zhuojin.duapp.com/,再加上上传的php文件名。即 http://zhuojin.duapp.com/wxapi.php

Token 填写自定义的token 值,这里为zhuojinsz。

微信公众平台开发入门教程(2)接口配置

对于SAE,URL填写 http://1.zhuojin.sinaapp.com/wxapi.php

微信公众平台开发入门教程(2)接口配置

5.4 提交

点击 “提交”,若一切设置正确,则会提示 “提交成功”。

微信公众平台开发入门教程(2)接口配置

5.5 查看接口配置信息

BAE 接口信息

微信公众平台开发入门教程(2)接口配置

SAE 接口信息

微信公众平台开发入门教程(2)接口配置

5.6 开启开发模式

微信公众平台开发入门教程(2)接口配置

至此,配置完毕。



接口配置代码如下:

<?php
/**
  * wechat php test
  */

//define your token
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
if (isset($_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;
                }
        }
}

?>

 

微信公众平台开发入门教程(2)接口配置

上一篇:微信网页端获取用户信息


下一篇:从一个程序员的角度看——微信小应用