zoukankan      html  css  js  c++  java
  • 微信公众平台开发入门教程(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可由开发者任意填写,用作生成签名。

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

    4 、服务器平台设置

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


    5. 配置接口

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

    5.2 成为开发者

    5.3 接口配置信息

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

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

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

    5.4 提交

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

    5.5 查看接口配置信息

    BAE 接口信息

    SAE 接口信息

    5.6 开启开发模式

    至此,配置完毕。



    接口配置代码如下:

    <?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;
                    }
            }
    }
    
    ?>
  • 相关阅读:
    初学:利用mybatis-generator自动生成代码
    数组求和forEach方法
    Node.js热部署代码,实现修改代码后自动重启服务方便实时调试
    nodejs中文乱码问题
    简单说一下SS的原理
    Spring Cloud Eureka 3 (Eureka client注册服务提供者)
    Spring Cloud Eureka 2 (Eureka Server搭建服务注册中心)
    Spring Cloud Eureka 1(eureka简介)
    eclipse中创建多模块maven web项目
    eclipse中创建maven web项目
  • 原文地址:https://www.cnblogs.com/52geek/p/6238433.html
Copyright © 2011-2022 走看看