ThinkPHP5.1与微信公众号对接

1. 启动Apache(这里使用phpStudy2016集成环境)

ThinkPHP5.1与微信公众号对接_第1张图片

2. 运行ngrok将本机Ip映射为公网Ip

2.1 微信公众平台交互模式

  • 这里不得不提及微信公众平台的交互模式。
    • 通常的 Web 网站的开发,用户端只需要将信息发送到开发者服务器,再由开发者服务器进行业务处理,然后返回信息给用户端即可实现通讯。
      ThinkPHP5.1与微信公众号对接_第2张图片
    • 微信公众平台的开发,用户端需要将信息发送到微信服务器,由微信服务器转发用户端的信息到开发者服务器,再由开发者服务器进行业务处理,然后将信息返回给微信服务器,最后由微信服务器转发给用户端来实现通讯。
      ThinkPHP5.1与微信公众号对接_第3张图片
      因此,如果想要微信服务器可以访问开发者服务器,需要将开发者服务器的IP映射为公网IP。

2.2 运行ngrok

ThinkPHP5.1与微信公众号对接_第4张图片

ThinkPHP5.1与微信公众号对接_第5张图片

注解:ngrok的安装与使用

3. 测试IP

ThinkPHP5.1与微信公众号对接_第6张图片

4. 上代码

/**
 * 校验微信公众号
 * @author Why
 * @param  Request $request 请求对象
 * @return string          校验结果
 */
public function isWechat($request)
{
    //Token
    $token = '这里自定义内容';
    
    //获取签名
    $signature = $request::param('signature');

    //获取随机字符串
    $echostr   = $request::param('echostr');

    //获取时间戳
    $timestamp = $request::param('timestamp');

    //获取随机数
    $nonce     = $request::param('nonce');

    //1)将token、timestamp、nonce三个参数进行字典序排序
    $array = array($timestamp, $nonce, $this->token);
    sort($array);

    //2)将三个参数字符串拼接成一个字符串进行sha1加密
    $temp = implode($array);
    $temp = sha1($temp);

    //3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
    if($temp === $signature)
    {
        return $echostr;
    }
}

5. 发送连接请求

ThinkPHP5.1与微信公众号对接_第7张图片

6. 微信官方文档接入指南

你可能感兴趣的:(PHP,php,微信游戏,小程序)