一、准备工作,注册申请公众号,个人只能申请订阅号,但是订阅号接口腾讯开放出来的很少,想要开发测试服务号的一些高级接口,就需要申请测试帐号。

微信公众平台控制中心->开发->开发者工具->公众平台测试帐号

1.png

2.png

3.png

二、配置
接口配置信息URL自定义一个地址,需要能访问,这个是验证消息事件的接口,例如这里我们设置为http://xxx.com/event/index

Token值自定义一个字符串

注意,上面两项填写好后,如果点击提交按钮的话会提示失败的信息,因为URL地址现在还不能访问,验证程序还没加上。

请将下列示例代码放到上面配置的URL所对应的文件中,这里的框架我是用自己写的,拿过去的时候稍微修改下即可。

修改类中三个常量值,注意TOKEN常量和上面设置的Token值一致

<?php
require APP_PATH . '/Controller/CommonController.php';

class EventController extends CommonController
{
    // 下面三个常量来至微信公众平台配置
    // 注意这里只是演示,在项目开发中请将下面的配置移到配置文件中
    const TOKEN     = ''; // token值自定义,必须和公众平台的设置一致
    const APPID     = '';
    const APPSECRET = '';

    public function __construct() {
        parent::__construct();
    }

    /**
     * 验证事件
     */
    public function index() {
        // 第一次请求(后台配置这个接口的时候)会传echostr
        // 以后的每一次都不会再传
        if (!empty($_GET ['echostr'])
            && !empty($_GET ["signature"])
            && !empty($_GET ["nonce"])) {
            $this->valid();
        } else {
            // 监听消息事件
            $this->listenEvent();
        }
    }

    /**
     * 验证签名
     */
    private function valid() {
        $echoStr = $_GET["echostr"];

        if($this->checkSignature()) {
            exit($echoStr);
        }
    }

    /**
     * 签名验证具体方法
     * @return bool
     */
    private function checkSignature() {
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce     = $_GET["nonce"];

        $tmpArr = array(self::TOKEN, $timestamp, $nonce);
        sort($tmpArr, SORT_STRING);
        $tmpStr = implode( $tmpArr );
        $tmpStr = sha1( $tmpStr );

        return ($tmpStr == $signature) ? true : false;
    }

    /**
     * 监听消息事件,回复消息事件
     */
    private function listenEvent() {
        
    }
}

代码传到服务器后,现在再点击提交按钮保存,会提示保存成功的信息。

注意:微信第一次请求上面的接口时,会带一个echostr的参数过来,我们就可以认为这是验证微信公众平台中的设置。以后的每次事件通知,微信方都不会再带这个参数了(除非再次修改配置的时候)。


好了这就是微信开发的基础准备工作。